O versiune malițioasă a unui instrument software utilizat de dezvoltatorii Injective a fost concepută pentru a colecta cheile private ale portofelelor și frazele de recuperare, stârnind îngrijorări pentru aplicațiile care gestionau informații sensibile despre portofel prin intermediul versiunii afectate. Hackerii au compromis un pachet software utilizat de dezvoltatorii care construiesc portofele și aplicații pentru blockchain-ul Injective, adăugând cod capabil să colecteze în secret credențialele portofelelor crypto.
Firma de securitate Socket a găsit codul malițios în versiunea 1.20.21 a @injectivelabs/sdk-ts, un pachet care ajută aplicațiile să se conecteze cu Injective și să gestioneze funcțiile legate de portofel. Pachetul primește în mod normal aproximativ 50.000 de descărcări pe săptămână, deși această cifră include toate versiunile și nu reprezintă numărul de persoane afectate de incident.
Socket a declarat că versiunea compromisă a fost descărcată de aproximativ 310 de ori. Cu toate acestea, o descărcare nu înseamnă automat că o cheie de portofel a fost expusă. Codul periculos ar fi trebuit să ruleze în timp ce o aplicație gestiona o cheie privată sau o frază de recuperare. Nu a fost făcut public niciun număr confirmat de portofele afectate și nu există dovezi publice că fondurile au fost furate.
Incidentul nu a implicat o încălcare a blockchain-ului Injective în sine. În schimb, atacatorii au vizat o componentă software de încredere utilizată de dezvoltatori, o metodă descrisă frecvent ca un atac asupra lanțului de aprovizionare software.
Dezvoltatorii se bazează adesea pe pachete software gata făcute, în loc să scrie fiecare parte a unei aplicații de la zero. Aceste pachete pot gestiona sarcini precum conectarea la un blockchain, crearea de portofele și semnarea tranzacțiilor. În acest caz, codul malițios a fost plasat într-un pachet oficial Injective și a fost conceput să se activeze atunci când o aplicație procesa informații sensibile despre portofel. Socket a declarat că acesta putea captura o cheie privată sau o frază mnemonică de recuperare și încerca să trimită datele mai departe, mascând activitatea ca o raportare tehnică obișnuită.
O cheie privată oferă deținătorului controlul asupra portofelului crypto asociat. O frază de recuperare poate fi utilizată pentru a restaura același portofel pe un alt dispozitiv. Spre deosebire de o parolă normală de cont, aceste credențiale nu pot fi pur și simplu resetate după ce sunt expuse.
Compromiterea cheilor private a devenit una dintre cele mai dăunătoare forme de atac crypto, deoarece infractorii pot prelua controlul direct asupra portofelelor fără a fi nevoie să spargă blockchain-ul subiacent. O revizuire recentă a securității a constatat că incidentele legate de cheile private au reprezentat aproximativ 40% din pierderile înregistrate în setul de date examinat. Incidentul Injective arată, de asemenea, de ce atacatorii vizează din ce în ce mai mult software-ul și platformele în care utilizatorii au deja încredere. Un nume de pachet familiar, un cont de dezvoltator stabilit sau o aplicație recunoscută pot face ca activitatea malițioasă să pară legitimă și să reducă șansa ca utilizatorii să o pună la îndoială.
Socket a declarat că modificările neautorizate au fost trimise prin contul GitHub al unui dezvoltator cu un istoric stabilit de contribuții la proiectul Injective. Deținătorul real al contului a detectat ulterior activitatea și a inversat modificările. Raportul disponibil nu identifică atacatorul și nu explică modul în care contul a fost accesat.
Codul de furt al portofelului a fost localizat în versiunea 1.20.21 a pachetului principal Injective SDK. Cu toate acestea, alte 17 pachete din colecția npm Injective au fost lansate cu legături către aceeași versiune afectată. Acest lucru a însemnat că unii dezvoltatori ar fi putut primi software-ul compromis indirect. O aplicație poate fi instalat un pachet Injective, în timp ce acel pachet a adus automat SDK-ul afectat în fundal.
Prin urmare, incidentul nu trebuie descris ca 18 pachete infectate separat. Dovezile disponibile arată că SDK-ul principal conținea funcționalitatea malițioasă, în timp ce 17 pachete conexe depindeau direct sau indirect de acea versiune. Socket a declarat că versiunea afectată a fost marcată ca depreciată după descoperirea compromiterii și a fost publicată o versiune curată. La momentul raportului Socket, totuși, versiunea compromisă nu fusese eliminată complet din npm, iar materialele de lansare conexe rămăseseră disponibile prin GitHub.
Rapoartele au diferit, de asemenea, cu privire la data exactă a incidentului. Cronologia publicată de Socket se referă la 8 iunie, în timp ce unele rapoarte secundare au plasat activitatea în iulie. Deoarece luna nu a fost stabilită independent, data exactă ar trebui atribuită sursei, mai degrabă decât afirmată ca un fapt incontestabil.
Dezvoltatorii care au utilizat versiunea 1.20.21, fie direct, fie printr-un alt pachet Injective, au fost sfătuiți să presupună că credențialele portofelului procesate de software-ul afectat ar fi putut fi expuse.
Acțiunile recomandate includ:
Actualizarea pachetului singură poate nu proteja un portofel dacă credențialele sale au fost deja copiate. Odată ce o altă parte obține o cheie privată sau o frază de recuperare, vechiul portofel nu mai trebuie considerat sigur. Utilizatorii de portofele trebuie, de asemenea, să examineze permisiunile pe care le aprobă. Într-un caz separat, un atacator a furat aproximativ 92.000 USD în Tether Gold după ce o victimă a semnat o cerere de permisiune malițioasă, demonstrând că infractorii nu au întotdeauna nevoie să obțină direct o frază seed pentru a lua active.
Deși acel caz a folosit o tehnică diferită, el evidențiază aceeași problemă mai largă: securitatea crypto depinde nu doar de blockchain, ci și de software, aprobările și serviciile care înconjoară un portofel. În prezent, nu există dovezi că blockchain-ul Injective a fost hackuit, că fiecare portofel Injective a fost pus în pericol sau că o sumă confirmată de criptomonedă a fost furată. Pericolul cunoscut este limitat la aplicațiile care au instalat pachetul compromis și au procesat credențialele portofelului prin intermediul acestuia.


