Malware npm fshihet në kodin e ekzekutimit, jo në skriptet e instalimit

Malware npm fshihet në kodin e ekzekutimit, jo në skriptet e instalimit

Checkmarx zbuloi se paketa npm indexed-btree, e shkarkuar dy milionë herë në javë, e fsheh malware-in në kodin e ekzekutimit në vend të skripteve të instalimit.

Një valë e re malware-i npm është fshehur brenda kodit të përditshëm të një biblioteke popullore, në vend të skripteve që ekzekutohen kur ajo instalohet, sipas studiuesve të sigurisë në Checkmarx. Paketa quhet indexed-btree dhe u publikua në npm, katalogu publik që zhvilluesit e softuerit përdorin për të shkarkuar pjesë kodi të gatshme në projektet e tyre, duke imituar sorted-btree, një bibliotekë legjitime me një emër shumë të ngjashëm. Checkmarx thotë se paketa e rreme kishte grumbulluar tashmë dy milionë shkarkime javore.

Zbulimi ka rëndësi sepse godet një mbrojtje që ekosistemi npm e vendosi vetëm së fundmi. Në qershor 2026, GitHub njoftoi një sërë masash sigurie për npm, që synonin të parandalonin sulmet ndaj zinxhirit të furnizimit që kanë tronditur projektet open source në mënyrë të përsëritur që nga fundi i vitit 2025. Një sulm ndaj zinxhirit të furnizimit është ai në të cilin sulmuesit nuk depërtojnë drejtpërdrejt te viktima, por komprometojnë një komponent që shumë viktima besojnë dhe instalojnë. Një nga masat kryesore bllokon skriptet e ciklit të jetës së varësive, pjesët e vogla kodi të quajtura preinstall, install dhe postinstall që ekzekutohen automatikisht gjatë instalimit, përveçse kur miratohen shprehimisht. Masa të tjera ndalojnë npm nga tërheqja automatike e varësive nga depo Git ose adresa web në distancë pa leje.

indexed-btree i shmang të gjitha këto duke mos përdorur fare skript instalimi. Në vend të kësaj, ngarkuesi është fshehur brenda metodës BTree.prototype.set() të vetë bibliotekës, të cilën Checkmarx e përshkruan si funksioni kryesor që çdo përdorues i bibliotekës do të thërriste vazhdimisht. Kjo metodë nuk bën asgjë të dyshimtë gjatë instalimit të paketës; ajo vepron vetëm në kohën e ekzekutimit, domethënë kur aplikacioni është në të vërtetë duke u ekzekutuar, dhe vetëm kur thirret me një vlerë specifike kyçe. Si rezultat, instalimi duket plotësisht i pastër dhe nuk aktivizon asnjë nga mekanizmat e miratimit të npm version 12. Ngarkuesi i fshehur është një skedar i quajtur sharedLoad.min.js, i cili përmban fazën e parë të malware-it në një formë të errësuar, që do të thotë se është shkruar qëllimisht në një mënyrë konfuze, në mënyrë që qëllimi i tij i vërtetë të jetë i vështirë për t'u lexuar.

Checkmarx vëren se kjo është një mënyrë e mirëndërtuar për të kaluar pa u vënë re përtej mjeteve standarde të analizës së ndotjes, të cilat ndjekin se si të dhënat lëvizin nëpër një program, dhe përtej shumicës së skanerëve statikë, të cilët inspektojnë kodin pa e ekzekutuar kurrë atë. Për shkak se sjellja e dëmshme shfaqet vetëm kur aplikacioni ekzekutohet, mjetet që ekzaminojnë një paketë në kohën e instalimit nuk shohin asgjë të pazakontë.

Pasi është në ekzekutim, malware-i mbledh detaje rreth makinës ku ka përfunduar, duke përfshirë arkitekturën e procesorit, emrin e hostit, CPU-në, memorien dhe kohën e funksionimit, dhe i dërgon ato informacione përmes kanaleve të kodifikuara Slack dhe Telegram. Ai gjithashtu anketon një kontratë inteligjente në rrjetin testues Sepolia, një mjedis testimi i bazuar në Ethereum, për të marrë informacionin e komandës dhe kontrollit, domethënë udhëzimet që operatorët dërgojnë në makinat e infektuara. Ai përdor shkëmbimin e çelësave X25519 për të nxjerrë një çelës AES, dy metoda kriptografike të përdorura për të krijuar dhe shkëmbyer kodet sekrete që mbyllin dhe hapin të dhënat, dhe më pas deshifron një ngarkesë të fazës së dytë që ruhet brenda asaj kontrate. Operatorët gjithashtu mund të zgjedhin të përfundojnë sulmin: malware-i është në gjendje të fshijë skedarët e tij dhe të heqë shkasin keqdashës nga kodi i paketës, duke fshirë gjurmët që ka lënë pas.

Studiuesit raportojnë se sulmuesit bënë përpjekje të konsiderueshme për ta bërë projektin të duket i besueshëm, duke ndërtuar një depo GitHub që dukej legjitime, duke plotësuar historikun e angazhimeve dhe duke kuruar llogarinë e zhvilluesit që e publikoi atë. Fushata mund të ketë qenë gjithashtu fitimprurëse. Sipas Checkmarx, sulmuesit përdorin një portofol që mban 109 ETH, kriptovaluta e rrjetit Ethereum. Raporti nuk thotë se ato fonde erdhën nga vjedhja e kriptovalutave, dhe kjo lidhje nuk është vërtetuar.

Checkmarx identifikoi nëntë paketa të tjera npm të lidhura me të njëjtin operacion dhe raporton se ato tani janë hequr nga npm. Edhe ato arritën numra të konsiderueshëm shkarkimesh: ordered-kv-index (448,184), btree-leaderboard (493,685), priority-slot-queue (402,860), btree-range-store (468,092), btree-core (1,951,274), btree-time-index (425,312), btree-lru-cache (372,185), neighbor-key-map (366,019) dhe sliding-score-window (448,024).

Mësimi praktik që nxjerrin studiuesit është se skanimi vetëm në kohën e instalimit nuk mjafton, sepse një paketë mund të sillet në mënyrë të përsosur gjatë instalimit dhe të bëhet armiqësore shumë më vonë. Checkmarx këshillon të shtohet analiza e sjelljes në kohën e ekzekutimit, që do të thotë të vëzhgohet se çfarë bën në të vërtetë kodi i instaluar ndërsa ekzekutohet. Kushdo që ka instaluar indexed-btree ose ndonjë nga nëntë paketat e listuara më sipër këshillohet të rrotullojë të gjitha sekretet, me fjalë të tjera të zëvendësojë çdo fjalëkalim, token aksesi dhe çelës që makina e prekur mund të ketë parë, dhe të rikthejë mjedisin e zhvillimit nga një kopje rezervë e sigurt në vend që të përpiqet ta pastrojë atë në vend. Për ekipet që duan një rishikim të pavarur të asaj që ekzekutohet brenda sistemeve të tyre, AEU-I ofron IT, infrastrukturë dhe konsulencë me sigurinë në radhë të parë, pikërisht lloji i kontrollit që vlerën e të cilit e tregon ky incident.

Si të Mbroheni

  1. Nëse zotëroni një faqe interneti të ndërtuar me komponentë kodi të jashtëm, kërkoni nga kushdo që e mirëmban të kontrollojë për emrat e paketave në këtë artikull dhe të heqë çdo gjë që gjen.
  2. Ndryshoni fjalëkalimet dhe çelësat e aksesit për çdo shërbim që është konfiguruar ndonjëherë në një kompjuter ku mund të jetë instaluar ky lloj kodi, sepse çelësat e vjedhur mund të ripërdoren më vonë.
  3. Mbani një kopje rezervë të fundit të faqes tuaj të internetit dhe të kompjuterit tuaj të punës, në mënyrë që të mund të rindërtoni pastër nëse diçka rezulton e infektuar.
  4. Mos shtoni komponentë softueri nga botues të panjohur vetëm sepse janë të njohur; kontrolloni kush i ka krijuar dhe sa kohë ka ekzistuar projekti.
  5. Aktivizoni përditësimet automatike dhe hyrjen me dy hapa kudo që ofrohen, në mënyrë që një fjalëkalim i vjedhur të mos mjaftojë që një sulmues të hyjë.

Termat e Shpjeguar

  • npm Një katalog publik online që zhvilluesit e softuerit përdorin për të shkarkuar pjesë kodi të gatshme në projektet e tyre.
  • install script Një pjesë e vogël kodi që ekzekutohet vetë gjatë instalimit të një komponenti softueri, përpara se dikush ta përdorë atë.
  • supply chain attack Një sulm në të cilin kriminelët komprometojnë një pjesë softueri të besuar gjerësisht në vend që të thyejnë secilën viktimë një nga një.
  • obfuscated I shkruar në një mënyrë qëllimisht konfuze, në mënyrë që një njeri që e lexon të mos mund të kuptojë lehtë se çfarë bën.
  • runtime Momenti kur një program është në të vërtetë duke u ekzekutuar dhe duke bërë punën e tij, në krahasim me momentin kur po instalohet.
  • command-and-control Kanali përmes të cilit kriminelët dërgojnë urdhra në një makinë të infektuar dhe marrin informacion prej saj.
  • smart contract Një program i vogël i ruajtur në një blockchain që ekzekutohet automatikisht kur plotësohen kushte të caktuara.

Shërbime AEU të lidhura

  • AEU-I Konsulencë IT dhe sigurie