1 Prezentare generală a evenimentului

Pe 18 iulie 2024, peste 230 de milioane de dolari au fost furate dintr-un portofel cu semnături multiple al schimbului de criptomonede indian WazirX. Acest portofel cu semnături multiple este un portofel cu contract inteligent Safe{Wallet}. Atacatorul i-a determinat pe semnatarii cu semnături multiple să semneze o tranzacție de upgrade a contractului. Atacatorul a transferat direct activele din portofel prin contractul de modernizare și, în cele din urmă, a transferat toate activele de peste 230 de milioane de dolari.

2 Analiza procesului de atac

Notă: Următoarea analiză se bazează pe rapoartele post-eveniment WazirX și Liminal, pe date în lanț și pe informații publice de pe Internet. Pot exista informații incomplete sau erori, care pot duce la concluzii părtinitoare. Rezultatele analizei sunt doar pentru referință și vor fi supuse rezultatelor investigațiilor ulterioare ale producătorului implicat.

Link original:

  • Blog WazirX: https://wazirx.com/blog/wazirx-cyber-attack-key-insights-and-learnings/

  • Blog de custodie liminala: https://www.liminalcustody.com/blog/update-on-wazirx-incident/

2.1 Configurarea portofelului cu semnături multiple și procesul de atac

Conform informațiilor dezvăluite de ambele părți, WazirX folosește Safe (cunoscut anterior ca Gnosis Safe) pentru gestionarea fondurilor și este coordonat prin Liminal. Portofelul Safe adoptă o metodă de semnătură 4/6, în care 5 chei private sunt gestionate de membrii WazirX prin portofele hardware, iar 1 cheie privată este gestionată de Liminal prin HSM.

În cadrul procedurilor normale, WazirX inițiază transferuri de tranzacții prin intermediul paginii web a platformei Liminal, iar adresa de transfer este restricționată de lista albă de adrese menținută de platforma Liminal. După ce 3 dintre cei 5 semnatari ai WazirX au confirmat că tranzacția a fost corectă, au semnat folosind portofelul hardware. După ce platforma Liminal colectează 3 semnături, folosește HSM pentru a adăuga semnătura finală și a pune tranzacția în lanț. Judecând după tranzacția de atac în lanț, tranzacția de atac conține 3 semnături legale, iar a patra semnătură este inițiatorul tranzacției (adică Liminal), care este în concordanță cu structura de gestionare a portofelului dezvăluită.

Combinând rapoartele de la Liminal și WazirX, procesul de inițiere a acestei tranzacții rău intenționate cu mai multe semnături este următorul:

  1. Atacatorul induce tranzacții cu semnături WazirX prin unele mijloace necunoscute (inclusiv, dar fără a se limita la, atacuri de rețea de 0 zile, atacuri de inginerie socială etc.).

  2. Trei membri ai WazirX s-au conectat la platforma Liminal prin marcaje etc. După ce au trecut verificarea Google și verificarea MFA, au văzut că tranzacțiile care urmau să fie semnate erau 2 tranzacții de transfer GALA și 1 USDT și au fost semnate folosind un portofel hardware. Dar ceea ce victima a semnat de fapt nu a fost o tranzacție de transfer de simboluri, ci o tranzacție de upgrade a unui contract pentru un portofel cu semnături multiple. Din cauza inconsecvenței dintre conținutul real al tranzacției și presupusa tranzacție de transfer, platforma Liminal a respins 3 tranzacții, respectiv.

  3. Până acum, atacatorul a strâns semnăturile a 3 membri pentru tranzacția de upgrade a contractului și a transmis din nou tranzacția de upgrade a contractului rău intenționat pe platforma Liminal cu 3 semnături corecte.

  4. După ce platforma Liminal verifică dacă semnătura este corectă, inițiază tranzacția ca al patrulea semnatar. După ce tranzacția este încărcată în lanț, contractul de portofel este actualizat și controlul este transferat atacatorului.

Potrivit WazirX, semnatarii folosesc portofele hardware pentru a păstra cheile private. Atacatorul a strâns și semnăturile a trei semnatari falsificând tranzacții de transfer. Prin urmare, se deduce că celor trei manageri WazirX nu li s-au scurs cheile private. În mod similar, nu există scurgeri de chei private în Liminal, altfel atacatorul nu trebuie să inițieze ultima tranzacție prin platforma Liminal.

Pe de altă parte, conform WazirX, semnatarul a accesat platforma Liminal corectă prin marcaje și a efectuat verificarea Google și MFA. Platforma Liminal a înregistrat, de asemenea, jurnalele a trei tranzacții anormale, așa că se poate exclude și faptul că WazirX s-a conectat la o pagină de phishing falsă a platformei Liminal pentru a colecta semnături. În plus, conform rezultatelor criminalistice preliminare ale echipamentelor dezvăluite de WazirX, se mai crede că echipamentul celor trei semnatari WazirX nu a fost atacat.

Pentru a rezuma, o metodă posibilă de atac este că atacatorul deturnează pagina front-end a browserului victimei WazirX prin atac man-in-the-middle, atac XSS sau alte atacuri zero-day și falsifică conținutul legitim al tranzacției afișat WazirX. victimă. După ce atacatorul a colectat semnăturile a trei victime WazirX, a trimis tranzacția finală de atac de upgrade a contractului pe platforma Liminal prin sesiunea existentă și a încărcat-o cu succes în lanț după ce a trecut de controlul riscului platformei Liminal.

2.2 Probleme expuse de atacuri

Conform analizei menționate mai sus, atât WazirX, cât și Liminal au expus anumite probleme în incident.

Controlul riscului liminal al platformei nu este strict:

  • Din tranzacția de atac pe lanțul final se poate observa că platforma Liminal a semnat tranzacția de upgrade a contractului și a încărcat-o în lanț. Strategia de control al riscului de transfer de pe lista albă a platformei nu și-a jucat rolul cuvenit.

  • Din jurnalele dezvăluite de platforma Liminal se poate observa că platforma a descoperit și a respins trei tranzacții suspecte, dar nu a alertat imediat utilizatorii și nici nu a înghețat tranzacțiile de transfer de portofel.

WazirX nu a verificat cu atenție conținutul semnăturii portofelului hardware:

  • Conținutul afișat în portofelul hardware este conținutul real al tranzacției care trebuie semnat. La semnarea unei tranzacții cu semnături multiple, semnatarul WazirX a avut încredere în tranzacția afișată pe pagina Liminal și a semnat direct, fără a verifica cu atenție dacă conținutul care urmează să fie semnat în portofelul hardware era în concordanță cu tranzacția afișată pe pagina Liminal a tranzacției de upgrade a contractului cerută de atacator.