Kohët e fundit, Xygeni vëzhgoi një model shqetësues në peizazhin e sulmeve të zinxhirit të furnizimit të softuerëve në vitin 2025., duke u shfaqur në dy menaxherë të njohur të paketave: PyPI NPMSi pjesë e përpjekjeve tona të vazhdueshme të inteligjencës mbi kërcënimet,Paralajmërimi i Hershëm për Malware (MEW) i Xygenit mjet identifikoi një rast të dallueshëm, por metodologjikisht të ngjashëm, të një pakete dashakeqe të ngarkuar më parë në një regjistër tjetër. Ky rast nxjerr në pah se si aktorët kërcënues po evoluojnë dhe po ripërdorin teknikat e sulmit nëpër ekosisteme, veçanërisht përmes paketa Python të dëmshme paketa npm të dëmshme, gjë që rrit rrezikun e paketave dashakeqe që depërtojnë në zinxhirët e furnizimit me burim të hapur.
MEW i Xygenit: Duke dalluar ngjashmëritë
Mjeti MEW i Xygeni-t është ndërtuar për të zbuluar dhe sinjalizuar paketat keqdashëse, veçanërisht ato të lidhura me Sulmet e Zinxhirit të Furnizimit të Softuerit në vitin 2025, sapo ato të publikohen në regjistrat me burim të hapur. Ai funksionon duke analizuar paketat e reja për sjellje të dyshimta.
Në këtë rast, ajo identifikoi dy paketa Python të dëmshme (graphalgo në PyPI) dhe paketa npm të dëmshme (express-cookie-parser në npm).
Paketa Python dhe npm keqdashëse në sulmet e zinxhirit të furnizimit të softuerëve (2025)
Le të shqyrtojmë karakteristikat e përbashkëta që shkaktuan alarmet tona:
Typsjellja
Të dy u përpoqën të imitonin paketat ekzistuese të njohura.
- grafalgo (PyPI)"Paketa Python për krijimin dhe manipulimin e grafikëve dhe rrjeteve.Ngarkuar nga një përdorues me emrin “larrytech” Më 13 qershor 2025, kjo paketë u paraqit si një alternativë PyPi ndaj projektit origjinal jo-dashakeq graphalgo, i cili më vonë u riemërua graphdict.
- analizues-i-cookie-ve-ekspres (npm)Kjo paketë imitoi paketën e njohur të cookie-parser, madje duke pasqyruar edhe paketën e saj README.md. Një imitim i tillë është një taktikë klasike për të shfrytëzuar besimin ekzistues.
Errësimi si Linja e Parë e Mbrojtjes
Të dyja paketat e fshehën kodin e tyre të dëmshëm brenda skedarëve origjinalë. grafalgo, kodi i ngatërruar u gjet brenda /utils/load_libraries.py. Ne rastin e analizues-i-cookie-ve-ekspres, cookie-loader.min.js përmbante ngarkesën e turbullt.
Kjo shtresë fillestare e errësimit përdoret zakonisht për të penguar inspektimin rastësor dhe analizën statike. Errësimi ishte mjaft i thjeshtë: kompresim i përsëritur ZLib plus kodim Base64. Ky lloj errësimi tregon qartë se softueri po përpiqet të fshehë sjelljen e tij. Së bashku me prova të tjera, kjo i lejoi Xygeni MEW të klasifikonte paketat si programe të dëmshme të mundshme. Gjatë fazës së konfirmimit, recensentët tanë përgatitën menjëherë një skript çerrësimi që zbuloi fazën e dropper-it padyshim dashakeq.
Dorëzimi i Ngarkesës me Shumë Faza dhe një Pikë e Përbashkët Origjine
Të dy paketat funksionuan si fillestare "pikatore, "duke përgatitur skenën për ngarkesën e vërtetë. Ata ndanin një të përbashkët të jashtme"farëURL-ja e skedarit:https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example
Ky skedar fillestar i jashtëm identik është një tregues i fortë i një aktori kërcënimi të përbashkët. Është interesante se përmbajtja e këtij skedari fillestar duket të jetë variabla të thjeshta mjedisi (p.sh., JWT_SECRET, PORT), duke çuar potencialisht në një inspektim mashtrues për funksionin e tij aktual.
Rezolucioni Dinamik C2 me një DGA
Një taktikë e sofistikuar e vërejtur në këto paketa dashakeqe është përdorimi i një Algoritmi të Gjenerimit të Domainit (DGA) për të zgjidhur në mënyrë dinamike serverin e Komandës dhe Kontrollit (C2). Kjo teknikë, e parë shpesh në sulmet e zinxhirit të furnizimit të softuerëve të avancuar në vitin 2025, mbështetet në një hash SHA256 të nxjerrë nga përmbajtja e skedarit fillestar, e kombinuar me vlera të tjera të koduara. Duke vepruar kështu, infrastruktura C2 ndryshon shpesh, duke e bërë listën tradicionale të zezë shumë më pak efektive. Në këtë rast, varianti npm përdori një vlerë fikse prej 496AAC7E si pjesë e logjikës së saj DGA.
Vendosja e Qëndrueshmërisë
Të dy sulmuesit kërkuan të krijonin një prani të qëndrueshme në sistemet e prekura. Strategjia e tyre përfshinte hedhjen e një skedari, startup.py (për PyPi) ose startup.js (për npm), në drejtoritë e zakonshme të të dhënave të përdoruesve të Google Chrome në sisteme të ndryshme operative (Windows, Linux, macOS).
Pastrim pas ekzekutimit
Për të minimizuar gjurmët, të dy skriptet keqdashëse kryen operacione pastrimi. Kjo përfshinte fshirjen e skedarëve të tyre fillestarë dropper (load_libraries.py, cookie-loader.min.js) dhe modifikimin e skedarëve të paketave legjitime (__init__.py, index.js) për të hequr referencat për komponentët që tani janë fshirë.
Treguesit e Kompromentimit në Paketat Python dhe npm keqdashëse
- Paketa PyPI: graphalgo (botuar nga larrytech, 13 qershor 2025)
- Paketa npm: express-cookie-parser (konkretisht versioni 1.4.12)
- Qasja në URL-në e ndarë të farës:
https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example
- Emra të Përhershëm Skedarësh:
startup.py(Python)startup.js(JavaScript) - Shtigje të Përbashkëta të Përhershme (të varura nga sistemi operativ)Brenda drejtorive të të dhënave të përdoruesit të Google Chrome (p.sh.,
AppData\Local\Google\Chrome\UserData\Scripts\në Windows,~/.config/google-chrome/Scripts/në Linux, etj.).
Si të mbroheni nga paketat keqdashëse në sulmet e zinxhirit të furnizimit të softuerëve 2025
Një Qasje e Rekomanduar për Zhvilluesit
Ky incident shërben si një studim rasti i vlefshëm në peizazhin në zhvillim të kërcënimeve të sulmeve të zinxhirit të furnizimit të softuerëve në vitin 2025. Ai thekson se si paketat keqdashëse Python dhe paketat keqdashëse npm mund të futen në ekosisteme të besueshme, shpesh duke shmangur zbulimin derisa të jetë tepër vonë. Kjo është arsyeja pse zbulimi i hershëm, mjetet inteligjente dhe higjiena proaktive e sistemit tani janë pjesë thelbësore të çdo fluksi pune të sigurt DevOps. Zhvilluesit inkurajohen të marrin në konsideratë sa vijon:
Rishikimi i Varësisë
Nëse projektet tuaja kanë përfshirë grafalgo or analizues-i-cookie-ve-ekspres, do të ishte e mençur të vazhdohej me largimin e tyre.
- Për PyPI:
pip uninstall graphalgo - Për npm:
npm uninstall express-cookie-parser
Higjiena e Sistemit
Merrni në konsideratë kryerjen e një skanimi gjithëpërfshirës të sistemit. Gjithashtu, këshillohet që të kontrolloni manualisht shtigjet e zakonshme të drejtorisë së të dhënave të përdoruesve të Chrome për çdo gabim të papritur. startup.py or startup.js files.
Masat proaktive të sigurisë
- Vlerësoni Varësitë e RejaVendosni një rutinë për të vlerësuar plotësisht paketat e reja para integrimit, duke u përqendruar në ato nga botues të panjohur.
- Integroni Mjetet e SigurisëMjete si MEW i Xygenit, së bashku me Analiza të tjera të Përbërjes së Softuerit (SCA) zgjidhjet, mund të ofrojnë një shtresë kritike mbrojtjeje duke identifikuar sjellje dhe dobësi të dyshimta.
- Privilegji më i vogëlOperimi i mjediseve të zhvillimit me parimin e privilegjit më të vogël mund të ndihmojë në kufizimin e ndikimit të mundshëm të një kompromisi.
- Ndërgjegjësimi për RrjetinMonitorimi i trafikut dalës të rrjetit për lidhje të pazakonta ndonjëherë mund të zbulojë komunikime C2 të gjeneruara nga DGA.
Komponentët kryesorë të load_libraries.py (nga graphalgo)
download_remote_content(): Trajton marrjen e skedarëve nga URL-të e specifikuara.run_process()Ekzekuton skriptet e jashtme Python në një mënyrë të shkëputur, duke shtypur rezultatin për të mbetur diskret.get_output_file_path()Përcakton vendndodhjen ideale të sistemit për skedarin persistues startup.py.remove_self()Orkestron pastrimin pas ekzekutimit të skedarëve fillestarë dashakeq dhe modifikimeve të paketave.simple_shift_encrypt()/simple_shift_decrypt()Funksione kriptografike të personalizuara për të errësuar kanalet e komunikimit, thelbësore për zbatimin e DGA-së.load_libraries()Funksioni qendror që koordinon të gjithë procesin shumëfazor, nga shkarkimi fillestar deri te ekzekutimi dhe pastrimi përfundimtar i ngarkesës.
Pasojë
Ashtu si me paketat e tjera potencialisht dashakeqe të identifikuara nga MEW, firewall-i i varësive mbrojti menjëherë përdoruesit që do të përfshinin këto paketa dashakeqe në varësitë e tyre. Pas konfirmimit, ne ndoqëm procedurat e njoftimit për të dy regjistrat, të cilët pas shqyrtimit i hoqën të dy paketat.





