Ohjelmistotoimitusketjuhyökkäykset 2025 - haitalliset paketit - haitalliset Python-paketit - haitalliset NPM-paketit

Lähempi katsaus ohjelmistojen toimitusketjuhyökkäyksiin vuonna 2025: PyPI- ja npm-kampanjoiden vertailu

Xygeni havaitsi hiljattain huolestuttavan kaavan ohjelmistojen toimitusketjuhyökkäysten maisemassa vuonna 2025., joka esiintyy kahdessa suositussa paketinhallintaohjelmassa: PyPI ja NPMOsana jatkuvia uhkatiedustelutoimiammeXygenin haittaohjelmien ennakkovaroitus (MEW) työkalu tunnisti erillisen mutta metodologisesti samankaltaisen esiintymän haitallisesta paketista, joka oli ladattu toiseen rekisteriin aiemmin. Tämä tapaus korostaa, miten uhkatoimijat kehittyvät ja käyttävät uudelleen hyökkäystekniikoita eri ekosysteemeissä, erityisesti seuraavien kautta: haitalliset Python-paketit ja haitalliset npm-paketit, mikä lisää haitallisten pakettien pääsyn riskiä avoimen lähdekoodin toimitusketjuihin.

Xygenin MEW: Yhtäläisyyksien bongaaminen

Xygenin MEW-työkalu on rakennettu havaitsemaan ja merkitsemään haitallisia paketteja, erityisesti niitä, jotka liittyvät vuoden 2025 ohjelmistotoimitusketjuhyökkäyksiin, heti kun ne julkaistaan ​​avoimen lähdekoodin rekistereissä. Se toimii analysoimalla uusia paketteja epäilyttävän toiminnan varalta.

Tässä tapauksessa se tunnisti kaksi haitalliset Python-paketit (graphalgo PyPI:ssä) ja haitalliset npm-paketit (express-cookie-parser npm:llä).

Haitalliset Python- ja npm-paketit ohjelmistojen toimitusketjuhyökkäyksissä (2025)

Tutkitaanpa yhteisiä ominaisuuksia, jotka laukaisivat hälytyksemme:

typosquatting

Molemmat yrittivät matkia suosittuja olemassa olevia paketteja.

  • graphalgo (PyPI): "Python-paketti graafien ja verkkojen luomiseen ja käsittelyyn.”Käyttäjän nimeltä ladattu” ”larrytech” 13. kesäkuuta 2025 tämä paketti esitteli itsensä PyPi-vaihtoehtona alkuperäiselle ei-haitalliselle graphalgo-projektille, joka myöhemmin nimettiin uudelleen graphdictiksi.
  • express-cookie-parser (npm)Tämä paketti jäljitteli tunnettua cookie-parser-pakettia ja jopa peilasi sen README.md. Tällainen henkilöllisyyden anastus on klassinen taktiikka olemassa olevan luottamuksen hyödyntämiseksi.

Hämärtäminen ensimmäisenä puolustuslinjana

Molemmat paketit hämärsivät haitallisen koodinsa alkuperäisissä tiedostoissa. graafinen, obfuskoitu koodi löytyi sisältä /utils/load_libraries.py. Kun kyseessä on express-cookie-parser, cookie-loader.min.js sisälsi hämärretyn hyötykuorman.

Tätä alkuperäistä hämärryskerrosta käytetään tyypillisesti estämään satunnaista tarkastusta ja staattista analyysia. Hämärrys oli melko yksinkertainen: toistuva ZLib-pakkaus ja Base64-koodaus. Tämäntyyppinen hämärrys osoittaa selvästi, että ohjelmisto yrittää peittää toimintaansa. Muiden todisteiden ohella tämä mahdollisti Xygeni MEW:lle pakettien luokittelun mahdollisiksi haittaohjelmiksi. Vahvistusvaiheessa tarkastajamme laativat nopeasti deobfuskointiskriptin, joka paljasti ilmeisen haitallisen dropper-vaiheen.

Monivaiheinen hyötykuorman toimitus ja jaettu lähtöpiste

Molemmat paketit toimivat alkuperäisinä "Droppers”, joka loi pohjan todelliselle hyötykuormalle. Heillä oli yhteinen ulkoinen ”siemenet"Tiedoston URL-osoite:
https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example

Tämä identtinen ulkoinen siementiedosto on vahva osoitus jaetusta uhkatoimijasta. Mielenkiintoista kyllä, siementiedoston sisältö näyttää olevan yksinkertaisia ​​ympäristömuuttujia (esim. JWT_SECRET, PORT), mikä saattaa johtaa harhaan sen todellisen toiminnan tarkastelun suhteen.

Dynaaminen C2-resoluutio DGA:lla

Näissä haitallisissa paketeissa havaittu hienostunut taktiikka on verkkotunnuksen luontialgoritmin (DGA) käyttö komento- ja ohjauspalvelimen (C2) dynaamiseen selvittämiseen. Tämä tekniikka, jota usein nähtiin edistyneissä ohjelmistojen toimitusketjuhyökkäyksissä vuonna 2025, perustuu siementiedoston sisällöstä johdettuun SHA256-hajautusarvoon yhdistettynä muihin kovakoodattuihin arvoihin. Näin tekemällä C2-infrastruktuuri muuttuu usein, mikä tekee perinteisestä mustasta listasta paljon tehottomamman. Tässä tapauksessa npm-variantti käytti kiinteää arvoa 496AAC7E osana sen DGA-logiikkaa.

Pysyvyyden luominen

Molemmat hyökkääjät pyrkivät luomaan pysyvän läsnäolon tartunnan saaneissa järjestelmissä. Heidän strategiansa oli tiedoston poistaminen, startup.py (PyPille) tai startup.js (npm:lle) yleisiin Google Chromen käyttäjätietohakemistoihin eri käyttöjärjestelmissä (Windows, Linux, macOS).

Suorituksen jälkeinen siivous

Jälkien minimoimiseksi molemmat haitalliset komentosarjat suorittivat puhdistusoperaatioita. Näihin sisältyi alkuperäisten dropper-tiedostojen poistaminen (load_libraries.py, cookie-loader.min.js) ja laillisten pakettitiedostojen muokkaaminen (__init__.py, index.js) poistaaksesi viittaukset nyt poistettuihin komponentteihin.

Haitallisten Python- ja npm-pakettien tietomurron indikaattorit

  • PyPI-paketti: graphalgo (julkaissut larrytech, 13. kesäkuuta 2025)
  • npm-pakettiexpress-cookie-parser (erityisesti versio 1.4.12)
  • Jaetun siemen-URL-osoitteen käyttöoikeus

https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example

  • Pysyvät tiedostonimet: startup.py (Python) startup.js (JavaScript)
  • Yhteiset pysyvät polut (käyttöjärjestelmästä riippuvat)Google Chromen käyttäjätietohakemistoissa (esim. AppData\Local\Google\Chrome\UserData\Scripts\ Windowsissa, ~/.config/google-chrome/Scripts/ Linuxissa jne.).

Kuinka puolustautua haittaohjelmia vastaan ​​ohjelmistojen toimitusketjuhyökkäyksissä vuonna 2025

Suositeltu lähestymistapa kehittäjille

Tämä tapaus toimii arvokkaana tapaustutkimuksena ohjelmistojen toimitusketjuhyökkäysten kehittyvässä uhkakuvassa vuonna 2025. Se korostaa, kuinka haitalliset Python- ja npm-paketit voivat päästä luotettaviin ekosysteemeihin ja usein välttää havaitsemisen, kunnes on liian myöhäistä. Siksi varhainen havaitseminen, älykkäät työkalut ja ennakoiva järjestelmähygienia ovat nyt olennaisia ​​osia kaikista turvallisista DevOps-työnkuluista. Kehittäjiä kannustetaan ottamaan huomioon seuraavat asiat:

Riippuvuusarviointi

Jos projekteihisi on kuulunut graafinen or express-cookie-parser, olisi järkevää jatkaa niiden poistamista.

  • PyPI:lle: pip uninstall graphalgo
  • Npm:lle: npm uninstall express-cookie-parser

Järjestelmän hygienia

Harkitse kattavan järjestelmäskannauksen suorittamista. On myös suositeltavaa tarkistaa Chromen yleisimmät käyttäjätietojen hakemistopolut manuaalisesti odottamattomien virheiden varalta. startup.py or startup.js tiedostoja.

Ennakoivat turvatoimenpiteet

  • Arvioi uusia riippuvuuksiaLuo rutiini uusien pakettien perusteelliseksi arvioimiseksi ennen integrointia keskittyen tuntemattomien julkaisijoiden paketteihin.
  • Integroi suojaustyökalutTyökalut, kuten Xygenin MEW, sekä muut ohjelmistokoostumusanalyysityökalut (SCA) ratkaisut voivat tarjota kriittisen puolustuskerroksen tunnistamalla epäilyttäviä käyttäytymismalleja ja haavoittuvuuksia.
  • Pienin etuoikeusKehitysympäristöjen käyttäminen vähiten oikeuksien periaatteella voi auttaa rajoittamaan tietomurron mahdollisia vaikutuksia.
  • VerkostotietoisuusLähtevän verkkoliikenteen valvonta epätavallisten yhteyksien varalta voi joskus paljastaa DGA:n tuottamaa C2-tietoliikennettä.

Tärkeimmät komponentit load_libraries.py (graphalgosta)

  • download_remote_content(): Käsittelee tiedostojen hakemisen määritetyistä URL-osoitteista.
  • run_process()Suorittaa ulkoisia Python-skriptejä erillään, vaimentaen tulosteen pysyäkseen huomaamattomana.
  • get_output_file_path(): Määrittää ihanteellisen järjestelmäsijainnin pysyvälle startup.py-tiedostolle.
  • remove_self()Orkestroi alkuperäisten haitallisten tiedostojen ja pakettimuutosten jälkeisen puhdistuksen.
  • simple_shift_encrypt() / simple_shift_decrypt()Mukautetut kryptografiset toiminnot viestintäkanavien peittämiseen, jotka ovat ratkaisevan tärkeitä DGA-toteutuksessa.
  • load_libraries()Keskustoiminto, joka koordinoi koko monivaiheista prosessia alkuperäisestä latauksesta lopulliseen hyötykuorman suorittamiseen ja siivoukseen.

Jälkiseuraukset

Kuten muidenkin MEW:n tunnistamien mahdollisesti haitallisten pakettien kohdalla, riippuvuuspalomuuri suojasi välittömästi käyttäjiä, jotka lisäisivät nämä haitalliset paketit riippuvuuksiinsa. Vahvistuksen jälkeen noudatimme molempien rekisterien ilmoitusmenettelyjä, jotka tarkistuksen jälkeen poistivat molemmat paketit.

sca-työkalut-ohjelmisto-koostumusanalyysityökalut
Priorisoi, korjaa ja suojaa ohjelmistoriskisi
Hanki ilmainen tili.
Luottokorttia ei vaadita.

Turvaa ohjelmistokehityksesi ja -toimituksesi

Xygeni-tuotepaketin kanssa