Când contul unui singur întreținător a fost compromis, consecințele s-au răspândit fulgerător în ecosistemul NPM: au avut loc atacuri asupra unor pachete foarte utilizate precum chalk și debug-js, iar impactul s-a resimțit în mediile cloud din întreaga lume. Istoria reînvie vechi concepte: în trecut compromiterea lanțurilor de aprovizionare software părea doar teorie, astăzi e realitate, iar slăbiciunea umană, un reset de parolă urmat de un link, rămâne una dintre cele mai eficiente căi pentru atacatori.
Incidentul s-a petrecut la începutul săptămânii, când maintainerul Josh Junon, cunoscut în comunitatea NPM ca qix, a căzut într-o capcană de phishing pentru resetare de parolă. După obținerea accesului la cont, atacatorii au publicat versiuni malițioase ale unor pachete populare; printre acestea s-au numărat chalk și debug-js, pachete care însumează peste 2, 6 miliarde de descărcări pe săptămână. Actualizările malițioase includeau un modul care intercepta tranzacțiile de criptomonede în browsere, înlocuind adresele de portofel cu altele controlate de atacatori pentru a redirecționa fonduri.
Comunitatea open-source a detectat rapid problema: toate pachetele compromise au fost scoase de pe npm în mai puțin de două ore de la publicare. Totuși, în intervalul acela scurt pachetele au fost instalate în multe proiecte. Cercetătorii de la compania de securitate cloud Wiz estimează că aceste pachete, componente esențiale în numeroase proiecte JavaScript/Node, sunt prezente în aproximativ 99% din mediile cloud pe care le monitorizează. În fereastra de două ore, versiunile compromise au ajuns în aproximativ 10% dintre mediile cloud vizibile pentru cercetători. Acest fapt ilustrează cât de rapid poate prolifera codul malițios într-un atac asupra lanțului de aprovizionare.
Procentul de 10% provine din vizibilitatea Wiz asupra mediilor clienților și din surse publice; nu este neapărat reprezentativ pentru întreaga industrie, dar arată răspândirea și viteza incidentului. Din fericire, tipul de payload a fost restrâns la furt de criptomonede în browser, respectiv hook-uri pentru solicitările de semnare Ethereum și Solana, cu înlocuiri de adrese, ceea ce a prevenit scenarii mult mai grave, precum deschiderea de backdoor-uri, mișcări laterale în rețea sau implantarea de malware distructiv.
Analizele ulterioare arată că profitul atacatorilor a fost modest. Un raport Security Alliance menționează că atacatorii au reușit să direcționeze sume infime: doar cinci cenți în ETH și aproximativ 20 de dolari dintr-un memecoin aproape necunoscut, în incidentul inițial. Cercetătorii de la Socket au raportat că aceeași campanie de phishing a compromis și contul unui maintainer DuckDB, infectând pachetele proiectului cu același cod de furt de crypto; estimările consolidate ale sumelor transferate în portofelele atacatorilor sunt de circa 429 dolari în Ethereum, 46 dolari în Solana și sume mici în BTC, Tron, BCH și LTC, totalizând în jur de 600 de dolari. Portofelele cu sume mai mari au fost rapid semnalate și blocate, ceea ce a îngreunat convertirea fondurilor.
Efectele practice pentru companii au fost totuși semnificative: multe au trebuit să aloce ore pentru curățare, rebuild-uri și audituri, iar reacția rapidă a comunității a redus riscul escaladării. Totuși, incidentul rămâne o lecție clară despre cât de periculoase pot fi compromiterile conturilor de întreținere și despre vulnerabilitatea lanțurilor de aprovizionare software în proiectele moderne, unde dependențele transversale sunt uriașe.
Wiz și-a folosit vizibilitatea și date publice pentru calcule, iar rezultatele subliniază un aspect crucial: un singur link de phishing poate avea efecte la scară largă. Exemple concrete din acest caz includ pachetele cunoscute (chalk, debug-js), numele maintainerului (Josh Junon/qix), platforma afectată (npm) și cifrele raportate (2, 6 miliarde descărcări pe săptămână, ~10% din mediile cloud afectate în fereastra de două ore, pagube financiare sub 1.000 USD pentru atacatori). Aceste date arată că riscul este real, dar și că protecțiile rapide și reacția comunității pot limita pagubele.
Cum crezi că ar trebui să-și protejeze proiectele maintainerii și companiile care se bazează pe pachete NPM, având în vedere viteza de propagare a unui astfel de atac?
nu-mi vine să cred, un link și gata, s-a dus tot; maintainerii ar trebui 2fa obligatoriu, review la publish rapid, ms poate pune regole în org — dar cine le verifică la timp, eh.