Pe 3 ianuarie, proiectul Radiant Capital a suferit un atac sever de împrumut rapid, care a dus la pierderea a 1.900 ETH (aproximativ 4,5 milioane USD). Radiant Capital este un protocol descentralizat de creditare încrucișată care permite utilizatorilor să depună și să împrumute diverse active pe diferite blockchain, eliminând silozurile de lichiditate.

Conform datelor din lanț, hackerul a profitat de o fereastră de timp pentru activarea noii piețe și de o problemă de rotunjire în baza de coduri Compound/Aave pentru a executa un atac de împrumut rapid. Această metodă de atac se referă la împrumutul unei sume mari de fonduri, finalizarea unei serii de operațiuni în cadrul unui bloc și apoi returnarea fondurilor înainte de sfârșitul blocului pentru a obține profit.

Atacul de vulnerabilitate pentru scurt timp

Potrivit rapoartelor PeckShield și PeckShield, atacatorii au exploatat o vulnerabilitate de calcul în Radiant Capital, permițându-le să retragă cantități mari de USDC la prețuri mici controlând precizia și rotunjirea. USDC este o monedă stabilă a cărei valoare este legată de dolarul american și este unul dintre activele utilizate în mod obișnuit în protocoalele financiare descentralizate.

Procesul de atac al atacatorului este următorul:

1. Atacatorul a împrumutat mai întâi 3 milioane USDC prin împrumut rapid AAVE pentru a fi folosit ca fonduri de pornire pentru atac. Împrumuturile flash se referă la împrumutul unei sume mari de fonduri, finalizarea unei serii de operațiuni în cadrul unui bloc și apoi returnarea fondurilor înainte de sfârșitul blocului pentru a obține un profit.

2. Atacatorul a promis 2 milioane USDC la contractul Radiant și a obținut 2 milioane de jetoane de certificat rUSDCn.

3. Atacatorul efectuează un împrumut flash prin contractul Radiant, împrumută 2 milioane USDC, returnează cele 2 milioane USDC în funcția de callback și extrage USDC-ul gajat în al doilea pas transferați USDC-ul atacatorului în contract. În acest moment, se va percepe o taxă de manipulare de 9/10000, iar taxa de manipulare colectată devine lichiditatea pool-ului.

4. Repetând pasul 3 de multe ori, atacatorul controlează ca lichidityIndex să fie foarte mare, liquidityIndex=2718000000009999999999998631966035920. LiquidityIndex este o variabilă utilizată în contractul Radiant pentru a înregistra creșterea lichidității. Acesta va crește odată cu acumularea de timp și dobândă.

5. În continuare, atacatorul creează un nou contract și pune 543.600 USDC în el, deoarece 5436 (valoarea USDC) este exact de două ori mai mare decât 2718 (valoarea Indexului lichidității) din pasul 4, care poate fi controlat cu ușurință prin rotunjire.

6. Atacatorul a ipotecat toți cei 543.600 USDC în contractul Radiant și a obținut aceeași sumă de rUSDCn.

7. Atacatorul a extras 407.700 USDC, care ar fi trebuit să distrugă 407.700 rUSDCn, dar după cum sa menționat mai sus, funcția de ardere a efectuat calcule de extindere și rotunjire cu precizie. 4077000000000000000000000000000000000/2718000000009999999999998631966035920=1,49999999, iar rezultatul este rotunjit la 1, fiind mic/rezultat 3. După cum se arată în imaginea de mai jos, 407.700 USDC ar fi trebuit distruși, dar au rămas 271.800, ceea ce indică faptul că doar 271.800 au fost distruși, iar atacatorul a retras 407.700 USDC.

8. Atacatorul exploatează vulnerabilitatea de la pasul 7 pentru a repeta operațiunea de retragere a gajului, iar retragerea este întotdeauna cu 1/3 mai mult decât suma gajată și, în final, schimbă toate USDC-urile din pool.

Fondurile nu sunt în prezent în pericol

Radiant Capital a recunoscut problema în postarea sa oficială și a declarat că și-a suspendat piața de creditare pe Arbitrum și că investighează cauza și impactul incidentului. Arbitrum este o soluție de scalare de nivel al doilea care crește viteza tranzacțiilor și reduce costurile pe Ethereum. Radiant Capital a mai declarat că niciun fond al utilizatorului nu este în prezent în pericol și intenționează să emită un raport de detectare și să reia operațiunile după ce problema va fi rezolvată.

Concluzie:

Acest incident ne reamintește încă o dată că securitatea protocoalelor financiare descentralizate este critică și trebuie să fie auditată și testată continuu pentru a preveni potențialele vulnerabilități și atacuri. De asemenea, utilizatorii ar trebui să fie conștienți de riscuri și să participe doar la împrumuturi și investiții pe platforme de încredere. Deși Radiant Capital a suferit pierderi mari, a dat dovadă și de o atitudine pozitivă și un simț al responsabilității, sperând că își va putea recupera și îmbunătăți securitatea și stabilitatea protocolului său cât mai curând posibil. În același timp, sper, de asemenea, ca alte protocoale financiare descentralizate să poată învăța din acest incident, să-și consolideze propriile măsuri de securitate și să ofere utilizatorilor servicii și experiențe mai bune. #RadiantCapital #黑客攻击