
Paketa malicioze npm fshehu malware në kodin e ekzekutimit
Checkmarx zbuloi një paketë malicioze npm, indexed-btree, që ekzekutonte malware nga kodi i zakonshëm i bibliotekës në vend të skripteve të instalimit, dhe u shkarkua miliona herë.
Një paketë malicioze npm e quajtur indexed-btree mbante malware brenda kodit të zakonshëm të bibliotekës që ekzekutohet ndërsa aplikacioni është duke punuar, në vend të grepave të kohës së instalimit që ekipet e sigurisë kanë mësuar t'i vëzhgojnë. Paketa u identifikua nga Checkmarx, një kompani e sigurisë së zinxhirit të furnizimit të softuerit, e cila tha se kodi imitonte sorted-btree, një mjet legitim indeksimi i ndërtuar rreth një B-tree, një strukturë e dhënash e renditur që aplikacionet përdorin për të ruajtur dhe kërkuar informacion të renditur shpejt. Paketa dhe depoja e saj e lidhur në GitHub nuk janë më të disponueshme për shkarkim nga npm.
npm është regjistri kryesor publik nga i cili projektet JavaScript dhe Node.js shkarkojnë kod të gatshëm të shkruar nga njerëz të tjerë. Për vite me radhë, një nga mënyrat më të thjeshta për të sulmuar atë ekosistem ka qenë një skript cikli jetësor, një udhëzim i shkurtër si preinstall ose postinstall që ekzekutohet automatikisht kur instalon një paketë. Checkmarx vuri në dukje se këto grepa kanë përdorime të ndershme, si kompilimi i kodit, mbushja e një baze të dhënash me vlera fillestare ose konfigurimi i skedarëve të konfigurimit, por që sulmuesit shpesh i kanë abuzuar për të ekzekutuar kod malicioz në një makinë pa pëlqimin e përdoruesit. npm versioni 12 prezantoi një ndryshim sigurie për të ndaluar skriptet e ciklit jetësor si preinstall dhe postinstall të ekzekutohen automatikisht. Fushata indexed-btree duket se është një përgjigje e drejtpërdrejtë ndaj atij ndryshimi: paketa nuk mbështetet fare në ato grepa dhe në vend të kësaj ekzekutohet plotësisht nga kodi i aplikacionit në kohën e ekzekutimit.
Ngarkuesi është i fshehur brenda një metode të quajtur BTree.prototype.set(), një funksion që duket normal që aplikacioni i një zhvilluesi e thërret kur ruan një vlerë në strukturën e të dhënave. Kur ai funksion ekzekutohet, ai aktivizon një skedar të dytë, sharedLoad.min.js, një ngarkesë JavaScript që përmban fazën e parë të obfuskatuar (e ngatërruar qëllimisht në mënyrë që të jetë e vështirë për t'u lexuar) të malware. Sipas Checkmarx, ajo fazë bën një gjurmim të makinës ku po ekzekutohet, raporton atë që gjen në një kanal të koduar Slack dhe një bot Telegram, pastaj përdor një teknikë të quajtur EtherHiding për të marrë blloqe të koduara kodi nga një kontratë inteligjente e vendosur në testnetin Sepolia, një blockchain testues i Ethereum. Blloqet bashkohen për të ndërtuar ngarkesën e fazës së dytë. Pasi kjo bëhet, malware fshin artefaktet e veta dhe heq shkakun nga kodi i paketës, kështu që gjurma është më e vështirë për t'u ndjekur.
Statistikat e cituara nga Checkmarx tregojnë se indexed-btree u ngarkua për herë të parë në regjistrin npm më 18 qershor 2026 nga një përdorues npm i quajtur charlessadler25, dhe se grumbulloi miliona shkarkime në një periudhë të shkurtër kohore. Fushata gjithashtu mund t'i ketë fituar para operatorit: Checkmarx tha se gjeneroi rreth 230,933.57 EUR në kriptovaluta, ekuivalente me 109 ETH.
Checkmarx tha se indexed-btree është një nga shumë paketat npm të lidhura me të njëjtin operacion, të cilat të gjitha janë hequr nga npm: ordered-kv-index, btree-leaderboard, priority-slot-queue, btree-range-store, btree-core, btree-time-index, btree-lru-cache, neighbor-key-map, sliding-score-window dhe mutex-forge.
Për të kundërshtuar kërcënimin, Checkmarx rekomandon që zhvilluesit të mos mbështeten vetëm në skanimin në kohën e instalimit dhe bllokimin e skripteve të ciklit jetësor, por gjithashtu të përdorin analizën e sjelljes në kohën e ekzekutimit, që do të thotë mjete që vëzhgojnë atë që softueri bën në të vërtetë ndërsa është duke punuar. Ensar Seker, zyrtari kryesor i sigurisë së informacionit në SOCRadar, tha në një deklaratë të ndarë me The Hacker News se fushata tregon se sulmuesit po përshtaten pothuajse menjëherë me mbrojtjet më të forta të zinxhirit të furnizimit të softuerit: npm përmirësoi sigurinë në kohën e instalimit duke kufizuar skriptet e ciklit jetësor të varësisë, dhe ky operacion shtyu ekzekutimin malicioz në funksionalitetin e kohës së ekzekutimit që duket legitim. Pika më e gjerë e Seker është se kontrollet e sigurisë ndryshojnë sjelljen e sulmuesit në vend që të eliminojnë kërcënimin themelor. Bllokimi i skripteve të ciklit jetësor është një përmirësim i rëndësishëm, argumentoi ai, por sulmuesit do të vazhdojnë të kërkojnë rrugë alternative ekzekutimi, kështu që mbrojtësit kanë nevojë për kontrolle të shtresuara të afta të zbulojnë sjellje malicioze para instalimit, gjatë ekzekutimit dhe pas vendosjes.
Në mënyrë të veçantë, kompania e sigurisë Socket tha se fshiu kod malicioz në versionin dev-main të visanduma/nova-two-factor, një paketë në Packagist, regjistri kryesor publik për kodin PHP, me më shumë se 700,000 shkarkime kumulative. Socket e lidhi atë ndërhyrje me një fushatë të vazhdueshme që e quan PolinRider, e cila thotë se është e lidhur me Korenë e Veriut. Një tipar përcaktues i fushatës është se operatorët komprometojnë llogaritë e zhvilluesve dhe injektojnë përmbajtje malicioze në depot e kodit burimor, pastaj përdorin veprime rutinë të zhvilluesit si klonimi i një depoje ose hapja e saj në një mjedis të integruar zhvillimi (IDE, programi ku kodi shkruhet dhe ekzekutohet) si shkakun që fillon zinxhirin e infeksionit. Sipas Socket, kjo shpesh përfshin rishkrimin e historisë Git, fshehjen e ngarkesave brenda skedarëve të konfigurimit ose fontit, krijimin e detyrave malicioze VS Code që ekzekutohen vetë, dhe mbështetjen në dërgimin rezistent ndaj heqjes si EtherHiding dhe pasardhësi i tij i fokusuar në fshehtësi NullReceiver për të marrë ngarkesa të fazuara përmes një blockchain.
Studiuesi i sigurisë Socket, Karlo Zanki, tha se analiza e organizatës Visanduma GitHub tregon se depot e saj janë komprometuar që nga mesi i qershorit 2026, me ndryshimet malicioze të paraqitura përmes llogarisë së zhvilluesit LaHiRu. Një ndryshim i dukshëm në këtë përsëritje, sipas Socket, është futja e drejtpërdrejtë e JavaScript shumë të obfuskuar në index.php dhe ekzekutimi i tij përmes funksionit shell_exec() të PHP. Kjo qasje lejon një pikë hyrëse PHP të fillojë zinxhirin e infeksionit JavaScript, dhe Socket e lexon atë si një shenjë se operatorët përshtatin metodën e tyre të ekzekutimit me çdo projekt që kanë komprometuar në vend që të përdorin një rrugë të vetme fikse dërgimi.
Socket gjithashtu nxori një përfundim më të gjerë: komprometimi i regjistrit të paketave është shpesh një pasojë e një ndërhyrjeje më të gjerë të bazuar në Git sesa objektivi kryesor i fushatës. Operatorët përdorin bashkëpunimin e zakonshëm të kodit burimor për të arritur në mjediset e zhvilluesve, për t'u përhapur në depo shtesë dhe për të mbajtur aksesin me kalimin e kohës. Një depo burimore e komprometuar u jep atyre mundësinë të infektojnë kontribuesit, të arrijnë projekte private dhe të lëvizin nëpër rrjedhat normale të punës së zhvillimit, dhe publikimi i një pakete bëhet thjesht një rrugë tjetër shpërndarjeje kur ajo depo prodhon një version të ri.
Për pronarët e faqeve të internetit dhe ekipet e IT, mësimi praktik është se faqet moderne janë të montuara nga dhjetëra, ndonjëherë qindra, komponentë të palëve të treta, dhe të dyja këto raste tregojnë se një instalim i pastër nuk është provë sigurie. Skanerët që shikojnë vetëm kodin kur instalohet mund të humbasin malware që pret derisa aplikacioni të jetë në të vërtetë duke punuar, dhe një depo burimore mund të komprometohet shumë përpara se të publikohet ndonjë paketë. Ekipet duhet të mbajnë një inventar të asaj nga e cila varen faqet dhe aplikacionet e tyre, të vëzhgojnë për sjellje të papritura nga serverët e tyre si trafiku dalës drejt shërbimeve që askush nuk i konfiguroi, dhe të mbrojnë llogaritë e zhvilluesve, çelësat e sistemeve të publikimit dhe vendosjes, me të njëjtin kujdes si hyrjet në prodhim, duke përfshirë vërtetimin me dy faktorë. Për organizatat që preferojnë të mos rishikojnë plotësisht vetë se si ndërtojnë dhe ekzekutojnë softuerin, AEU-I është shërbimi ynë i IT-së, infrastrukturës dhe konsulencës i fokusuar në sigurinë, dhe faqet e tij publike përshkruajnë fushat që mbulon.
Si të Mbroheni
- Pyetni këdo që ndërton ose mirëmban faqen tuaj të internetit se cilat pjesë kodi të jashtme përdor dhe si i kontrollon ato pjesë për probleme sigurie.
- Mbani platformën e faqes tuaj, shtojcat dhe temat të përditësuara automatikisht, por vetëm nga burimi zyrtar, dhe hiqni çdo shtojcë që nuk e përdorni më.
- Mos instaloni paketa kodi, shtesa shfletuesi ose mjete me emra shumë të ngjashëm me një të njohur derisa të jeni të sigurt se kush i publikoi.
- Pyetni ofruesin tuaj të strehimit ose IT-së nëse softueri i faqes tuaj vëzhgohet ndërsa është duke punuar dhe jo vetëm kur instalohet.
- Aktivizoni vërtetimin me dy faktorë (një kod i dytë në hyrje) për çdo llogari që mund të publikojë kod ose të menaxhojë faqen tuaj të internetit.
- Nëse faqja juaj papritmas dërgon trafik drejt shërbimeve që nuk i keni konfiguruar kurrë, ose fatura e strehimit rritet pa arsye të qartë, raportojeni menjëherë te ofruesi juaj.
Termat e Shpjeguar
- npm Biblioteka kryesore publike online nga e cila projektet JavaScript dhe Node.js shkarkojnë pjesë kodi të gatshme të shkruara nga njerëz të tjerë.
- lifecycle script Një udhëzim i shkurtër brenda një pakete kodi që ekzekutohet vetë ndërsa paketa është duke u instaluar, pa bërë asgjë personi që e instalon.
- package registry Një katalog online ku zhvilluesit publikojnë paketa kodi dhe të tjerët i shkarkojnë ato, si npm për JavaScript ose Packagist për PHP.
- B-tree Një mënyrë e organizimit të të dhënave të ruajtura në mënyrë që një program të gjejë dhe renditë artikujt shpejt, e ngjashme me një kabinet dosjesh të renditur mirë.
- EtherHiding Një mashtrim në të cilin kodi malicioz ruhet në një blockchain, një regjistër publik i përbashkët, në mënyrë që të mos hiqet lehtë.
- smart contract Një program i vogël që jeton në një blockchain dhe ekzekutohet automatikisht, të cilin sulmuesit mund ta përdorin si një vend të fshehur ruajtjeje për kod.
- obfuscated I shkruar në një mënyrë të ngatërruar qëllimisht në mënyrë që një lexues njerëzor të mos kuptojë lehtë se çfarë bën kodi.
- IDE Një mjedis i integruar zhvillimi, programi softuerik në të cilin zhvilluesit shkruajnë, ekzekutojnë dhe testojnë kodin e tyre.