Zlonamjerni softver u PyPI paketima i kako on ugrožava lanac snabdijevanja Pythona

Posljednje ažuriranje: 05/07/2026
  • Napadači sve više zloupotrebljavaju PyPI za slanje višefaznog zlonamjernog softvera, od kopija W4SP Stealer-a do potpunih RAT-ova skrivenih u resursima, programima za učitavanje i skriptama za postavljanje.
  • Kampanje kombinuju socijalni inženjering, tiposquatting, trikove upornosti i kreativno zamagljivanje kako bi ukrale akreditive, kripto imovinu i dobile udaljeni pristup.
  • Odbrane se oslanjaju na statičku heuristiku, analitiku tokom izvođenja i brzi odgovor registra, ali i na strožu higijenu zavisnosti i ručni pregled u razvojnim timovima.

Zlonamjerni softver PyPI u Python paketima

Tokom posljednjih nekoliko godina, PyPI je od "samo" centralnog indeksa Python paketa postao jedna od najžešćih meta u lancu snabdijevanja softverom. Napadači su shvatili da ako uspiju ubaciti zlonamjerni kod u popularnu zavisnost – ili u uvjerljivu lažnu verziju – odmah dobijaju prečicu do hiljada laptopa programera, CI cjevovoda i produkcijskih okruženja. Od osnovnih kradljivaca akreditiva do potpuno razvijenih trojanaca za udaljeni pristup (RAT), PyPI je bio domaćin iznenađujuće raznovrsnih kampanja zlonamjernog softvera.

Ovaj članak prolazi kroz glavne porodice napada iz stvarnog svijeta uočenih u PyPI-ju i srodnim ekosistemima, kako funkcioniraju korisni tereti i obrambene alate i procese koji se pojavljuju kako bi ih se držalo pod kontrolom. Ispitat ćemo kampanje kopiranja W4SP Stealer-a, zloupotrebu višefaznih učitavača setup.py, backdoor-ovi poput SilentSync-a, kreativni trikovi za skrivanje podataka poput steganografije ili rječnika koji služe i kao RAT downloaderi, te rastući ekosistem skenera poput Prisma Cloud-a i Datadog GuardDog-a. Cilj je razumjeti obrasce kako bi programeri i sigurnosni timovi mogli uočiti sljedeću kampanju čak i ako je naziv određenog paketa nov.

Zašto je PyPI tako primamljiva meta za autore zlonamjernog softvera

Upravo je uspjeh PyPI-ja ono što ga čini tako privlačnim za aktere prijetnji. To je de facto javni registar za Python kod, bilo ko može objaviti paket za nekoliko minuta, a u većini radnih procesa zavisnosti se instaliraju i ažuriraju automatski putem alata kao što su pip, CI cjevovodi i automatizirani botovi za zavisnosti. Ne postoji obavezni ručni pregled ili hardverska sigurnosna kapija prije nego što kod dospije u okruženja krajnjih korisnika.

Zlonamjerni paketi mogu ući u ekosistem na više načina. Neki su objavljeni kao potpuno novi projekti bez historije, drugi otimaju napuštena imena ili kompromituju račune održavatelja, a mnogi se oslanjaju na socijalni inženjering ili tiposquatting kako bi prevarili korisnike na pokretanje pip install <package>Nakon instalacije, zlonamjerni softver se obično izvršava odmah po instalaciji (putem setup.py, kotači ili kuke nakon ugradnje) ili pri prvom uvozu kroz __init__.py ili naizgled bezopasnih pomoćnih modula.

Utjecaj se kreće od prikrivene krađe podataka do potpunog kompromitiranja sistema. Zlonamjerni softver PyPI ukrao je lozinke i kolačiće preglednika, Discord tokene, podatke za pristup u oblaku i početne vrijednosti kripto novčanika, ali također može ispustiti binarne datoteke, dodati trajnost putem planiranih zadataka ili unosa za automatsko pokretanje, otvoriti kanale komandovanja i kontrole (C2) i efikasno pretvoriti mašine programera u daljinski kontrolirane uporišta unutar organizacija.

Budući da su zavisnosti duboko ugrađene u procese izgradnje i implementacije, jedan zaraženi paket može se kaskadno proširiti na druge projekte. Automatske nadogradnje i nemarno pregledavanje zavisnosti samo za razvojne programere već su doveli do situacija u kojima se zlonamjerno ažuriranje naizgled bezopasne konfiguracije ili linting paketa širilo kroz hiljade repozitorija prije nego što je bilo primijećeno.

Rizici lanca snabdijevanja softverom u PyPI-ju

W4SP Stealer kopije i kampanje prikupljanja podataka u PyPI-ju

Jedna od najvidljivijih priča o PyPI zlonamjernom softveru je širenje W4SP Stealera i njegovih brojnih imitatora. U martu 2023. godine, istraživači iz Jedinice 42 (Palo Alto Networks) otkrili su šest zlonamjernih paketa usmjerenih na Windows u PyPI-ju čija je druga faza bila konfigurirana verzija W4SP Stealer 1.1.6. Napadači su očito posuđivali pakete iz prethodnih javnih kampanja, ali s manje sofisticiranosti u nekim područjima.

Ovi paketi su imali niz karakteristika koje ukazuju na opasnost u svojim metapodacima i ponašanju. Nisu imali povezane GitHub repozitorije, samo nekoliko preuzimanja, novokreirane autore bez prethodne historije doprinosa i korisnička imena koja prate obrazac kao što je Anne1337 or Richard1337, svi kreirani u roku od nekoliko minuta. Svaki paket je ukazivao na sumnjivi udaljeni URL na stranici za lijepljenje koja je posluživala pravi korisni teret prilikom instalacije paketa.

Ulazna tačka napada bila je običajna setup.py koji se izvršava u vrijeme instalacije, a ne u vrijeme uvoza. Skripta je preuzela Python kod sa udaljenog URL-a koristeći urllib.request.urlopen, zapisao ga je u privremenu datoteku sa NamedTemporaryFile, a zatim ga izvršio putem exec i pokušao sam ga pokrenuti pomoću Windowsa start komanda i pythonw.exe. Upotreba pythonw.exe izbjegavao je SmartScreen upite jer skripta nije bila direktno preuzeta izvršna datoteka, što je omogućavalo zlonamjernom softveru da se tiho pokreće na Windows računarima.

Nakon pokretanja, komponenta W4SP Stealer fokusirala se na izdvajanje visoko osjetljivih podataka. Koristio je Windows DPAPI putem CryptUnprotectData da dešifriraju pohranjene tajne, prolaze kroz profile preglednika za Chrome i Edge kako bi ukrali kolačiće i sačuvane prijave, pristupaju SQLite bazama podataka koje podržavaju pohranu preglednika i prebacuju sve na Discord webhook kojim upravlja napadač. Tokeni su validirani pomoću Discord API-ja, a kod je elegantno rješavao greške kako bi nastavio sa prikupljanjem čak i kada su pojedinačne operacije prestale raditi.

Ove tehnike nisu jedinstvene za jednu kampanju; druge infekcije velikih razmjera ponavljaju iste obrasce. ESET je, na primjer, prijavio zaseban val od najmanje 116 zlonamjernih PyPI paketa postavljenih u okviru 53 projekta, preuzetih više od 10,000 puta. Ta kampanja je miješala backdoor-ove napisane u Pythonu i Go-u za Windows i Linux, monitore međuspremnika koji su zamjenjivali adrese kripto novčanika koristeći... pyperclip biblioteku i korisne sadržaje koji su ponovo uključivali varijante W4SP Stealer-a uz prilagođeni špijunski softver.

Napadači su koristili više trikova pakovanja kako bi sakrili zlonamjerni sadržaj. U nekim slučajevima koje je ESET primijetio, distribucija izvornog koda bila je čista, dok je wheel sadržavao zlonamjerni softver, iskorištavajući činjenicu da pip preferira kotače u odnosu na izvor po defaultu. Drugdje, a test.py modul je ugradio blago zamućen kod i bio je tiho uvezen iz __init__.py, osiguravajući automatsko izvršavanje svaki put kada je paket uvezen.

Analiza zlonamjernih Python paketa

Zloupotreba Setup.py, višefazni učitavači i perzistentnost na više platformi

Mnoge porodice PyPI zlonamjernog softvera se uveliko oslanjaju na setup.py kao punjač prve faze. Budući da stari format pakiranja pokreće setup.py skriptu na lokalnom računaru tokom instalacije, to je idealno mjesto za unošenje zlonamjernog ponašanja koje korisnici rijetko provjeravaju. Napadači su to iskoristili ugradnjom PowerShella, programa za preuzimanje, pa čak i potpuno razvijene logike persistence direktno u instalacijsku skriptu.

Jedan uobičajeni obrazac je PowerShell ili shell jednolinijski kod koji dohvaća i pokreće sljedeću fazu. ESET je dokumentovao pakete čiji setup.py pozvali ste PowerShell skriptu za preuzimanje ZIP arhive (na primjer iz transfer.sh), izdvojite ga na lokaciju kao što je C:\ProgramData, instalirajte Python zavisnosti, a zatim izvršite skriptu poput server.pywNa Linuxu, varijante su umjesto toga preuzimale ELF binarne datoteke ili Python skripte i dodavale naredbe za pokretanje. .bashrc, osiguravajući izvršavanje na svakoj novoj ljusci.

Neke kampanje u potpunosti odbacuju bilo kakav legitimni kod i isporučuju samo maskirani zlonamjerni softver. Umjesto da se pretvaraju da su pravi uslužni programi, ovi paketi jednostavno pišu privremene Python datoteke s ugrađenim korisnim sadržajem i izvršavaju ih putem pythonw.exe ili ekvivalent, često nakon čega slijedi brisanje vidljivih tragova uz održavanje aktivnih perzistentnih unosa.

Tehnike istrajnosti variraju ovisno o platformi, ali teže prikrivenosti i dugotrajnosti. Na Windowsu su istraživači vidjeli kodirane VBScript datoteke (na primjer pythenenv.vbe pod %APPDATA%/Pythonenv) zakazane putem Planera zadataka kao bezopasni zadaci kao što su MicrosoftWinRaRUtilityTaskB, koji se pokreće svakih nekoliko minuta. Na Linuxu, unosi za automatsko pokretanje se ubacuju u ~/.config/autostart pod imenima poput mate-user-share.desktop koje oponašaju komponente desktop okruženja, a izvršne datoteke su skrivene u putanjama koje podsjećaju na KDE konfiguracijske direktorije.

Iza ovih programa za učitavanje krije se ili prilagođeni backdoor ili dobro poznati kradljivac virusa. Windows backdoor-ovi obično otvaraju TCP socket-ove ka čvrsto kodiranoj domeni, šalju identifikatore mašine (naziv hosta, MAC adresu, korisničko ime), a zatim čekaju da se komande izvrše i vrate izlaz. Linux backdoor-ovi napisani u Go-u slijede slične obrasce s binarnim protokolima. U nekim varijantama, konačni korisni teret je ponovo W4SP Stealer ili kripto-clipboard hijacker koji zamjenjuje Bitcoin, Ethereum, Monero ili Litecoin adrese u clipboardu s onima koje kontrolira napadač.

Kreativni učitavači: skriveni korisni sadržaji u rječnicima, bočno učitavanje DLL-a i još mnogo toga

Dok branioci pooštravaju detekciju oko očiglednih exec obrasce, napadači postaju sve inventivniji u načinu na koji skrivaju i aktiviraju korisne terete. Nekoliko nedavnih kampanja ilustruje koliko su daleko spremni ići kako bi izbjegli i statičku i jednostavnu heurističku analizu, a istovremeno iskoristili PyPI kao kanal isporuke.

Jedan upečatljiv primjer uključuje zlonamjerne pakete za provjeru pravopisa koji zakopavaju RAT program za učitavanje unutar datoteke jezičkog rječnika. Dva PyPI paketa, spellcheckerpy i spellcheckpy, predstavljao se kao legitimni pyspellchecker projekat, čak i povezivanje sa njegovim pravim GitHub repozitorijem. Unutar komprimovanog JSON resursa za baskijski jezik (resources/eu.json.gz), napadači su dodali ključ pod nazivom spellchecker čija je vrijednost bila program za preuzimanje u Pythonu kodiran u base64 formatu.

Funkcija korisnosti koja je izdvajala podatke iz rječnika na prvi pogled izgledala je sasvim normalno. Izgradilo je put do resources/<lang>.json.gz, dekomprimirao ga putem gzip.open, analizirao JSON sa json.loadsi vratio se data[index]Međutim, kada se pozove sa test_file("eu", "utf-8", "spellchecker"), vraćao je skriveni base64 korisni sadržaj umjesto frekvencija riječi, koji je zatim dekodiran u zlonamjerni softver prve faze.

Rane verzije paketa su držale korisni teret u stanju mirovanja, dekodirajući ga, ali nikada ga izvršavajući. To se promijenilo u verziji 1.2.0, gdje je okidač premješten u WordFrequency.__init__ metoda. Kod je rekonstruirao string "exec" iz heksadecimalnog niza 65786563, kompajlirao preuzeti kod koristeći compile, a zatim ga pokrenuo sa evalOvaj korak obfuskacije bio je dovoljan da zaobiđe mnoga statička pravila koja su jednostavno tražila doslovne pozive funkcije exec.

Korisni teret faze 2 bio je potpuno funkcionalni Python RAT kontroliran putem HTTPS-a. Prva faza je preuzela kod iz https://updatenet[.]work/settings/history.php, stvorio ga je odvojeno python3 - proces sa start_new_session=True tako da je nadživio host skriptu i nikada je nije zapisao na disk. RAT je otiskom prsta označio sistem (verziju operativnog sistema, naziv hosta), koristio dvoslojnu XOR shemu za prikrivanje prometa i implementirao jednostavan binarni komandni protokol s ID-ovima kao što su 1001 za izvršavanje proizvoljnog koda putem execSignali su svakih nekoliko sekundi https://updatenet[.]work/update1.php, ignorišući validaciju certifikata.

Infrastruktura iza C2 domene bila je povezana s poznatim zlonamjernim pružateljima hostinga. Domena se razdvojila na IP adresu u rasponu povezanom s Cloudzyjem (RouterHosting), provajderom kojeg su prethodna istraživanja opisala kao de facto C2 utočište koje koriste više APT grupa, operateri ransomwarea i prodavači špijunskog softvera. Prethodna kampanja dokumentirana pod malo drugačijim nazivom paketa ponovo je koristila isti RAT dizajn, ali s drugom C2 domenom, što sugerira kontinuirane iteracije od strane istog aktera.

Drugi ekosistemi pokazuju podjednako kreativne višefazne dizajne koje programeri trebaju imati na umu prilikom pregledavanja PyPI zavisnosti. Na primer, termncolor paket u PyPI-ju uvučen u zlonamjernu zavisnost colorinal koji je vršio bočno učitavanje DLL-a na Windowsu. Ispustio je legitimnu binarnu datoteku (vcpktsvr.exe) i lažni libcef.dll, oslanjajući se na Windowsov redoslijed pretrage DLL-ova za učitavanje lažnog DLL-a, koji je zatim obrađivao perzistenciju, izviđanje sistema i C2 komunikaciju putem Zulip-a (platforme za chat otvorenog koda) kako bi se stopio s bezopasnim prometom. Linux varijanta koristila je dijeljeni objekt pod nazivom terminate.so da implementiraju isto ponašanje.

Lažno predstavljanje i mamci s vladinom tematikom: slučaj SilentSync RAT

Nisu svi zlonamjerni paketi predstavljeni kao generički uslužni programi; neki se trude imitirati određene legitimne API-je i tokove rada. Zscaler ThreatLabz je analizirao dva PyPI paketa, sisaws i secmeasure, koji je na kraju implementirao višeplatformski RAT pod nazivom SilentSync. Oba je postavio isti autor i dijelili su preklapajuće metapodatke.

The sisaws Paket je imitirao stvarnu argentinsku klijentsku biblioteku zdravstvenih informacija pod nazivom sisa. Pravi sisa paket pruža puco i renaper moduli koji oblažu javne vladine API-je za provjeru nacionalnih identifikacionih brojeva, zdravstvenog osiguranja i ličnih podataka. Zlonamjerni klon je kopirao strukturu i ponašanje na površinskom nivou: validirao je DNI formate, vraćao strukturirane rječnike koji su izgledali kao API odgovori, pa čak i uključivao realistične korisničke zapise pod msal.gov.ar email adrese.

Skrivena unutar inicijalizacijskog skripta bila je backdoor funkcija gen_token koji je služio i kao program za preuzimanje zlonamjernog softvera. Ova funkcija je prihvatila jednu fiksno kodiranu vrijednost tokena; bilo koji drugi unos je izazvao grešku. Ako je unesen ispravan magični token, gen_token vratio je izmišljeni odgovor "uspjeh" koji sadrži korisnička polja i sekundarni statički token. Ispod haube, dekodirao je heksadecimalni string u curl naredba koja je tiho preuzela Python skriptu iz Pastebina (https://pastebin.com/raw/jaH2uRE1) u privremeno helper.py datoteku i izvršio je pomoću Pythona. Ta skripta je bila SilentSync.

Povezani paket secmeasure bio je reklamiran kao pomoćno sredstvo za "čišćenje i sigurnost stringova", ali je ponovo koristio istu logiku infekcije. Naizgled je nudio tipične pomoćne funkcije za sanitizaciju – uklanjanje razmaka, uklanjanje specijalnih znakova, izbjegavanje HTML-a, normalizaciju Unicode-a, sanitizaciju shell naredbi i dekodiranje heksadecimalnih kodova. U praksi, nekoliko ovih funkcija je podiglo NameError izuzeci zbog nedostajućih uvoza i funkcija pod nazivom sanitize_input izvršavao isti heksadecimalni kod curl lanac koji koristi sisaws za implementaciju SilentSync-a.

Jednom kada je bio na disku, SilentSync je uspostavio perzistentnost i jednostavan C2 kanal zasnovan na HTTP-u na svim operativnim sistemima. Na Windowsu je dodano PyHelper unos pod HKCU\Software\Microsoft\Windows\CurrentVersion\Run, na Linuxu je napisao @reboot cron unos, a na macOS-u je kreirao com.apple.pyhelper.plist agent za lansiranje u korisnikovom ~/Library/LaunchAgentsC2 IP adresa – 200.58.107[.]25 – bio je kodiran u base64 formatu u kodu i dekodiran za vrijeme izvođenja, komunicirajući putem HTTP-a na portu 5000 koristeći krajnje tačke u REST stilu kao što su /checkin, /comando, /respuesta i /archivo.

SilentSync je podržavao kompaktan, ali opasan skup komandi. Moglo bi izvršavati proizvoljne shell naredbe (cmd), izvlači pojedinačne datoteke ili cijele direktorije (komprimirajući ih u ZIP datoteke), pravi snimke ekrana (screenshot), otpremaju artefakte i kradu podatke preglednika za preglednike zasnovane na Chromiumu i Firefox pod browserdata akcija. Nakon eksfiltracije, očistio je privremene datoteke kako bi smanjio forenzičke artefakte.

Širi rizici u lancu snabdijevanja i alati za detekciju zlonamjernog softvera PyPI

Gore navedeni incidenti dio su mnogo šireg trenda: registri paketa otvorenog koda se sistematski istražuju kao ulazne tačke u lanac snabdijevanja. Pored PyPI-ja, npm je svjedočio distribuciji zaraženih paketa kao "proof-of-concept" exploit-ova, vježbi za procjenu posla i lažnih zakrpa za kernel koje tiho prikupljaju podatke iCloud Keychaina, vjerodajnice preglednika, kripto novčanike, pritiske tipki i snimke zaslona. Napadi poput... eslint-config-prettier Kompromis je pokazao kako automatizirani ažurirači zavisnosti mogu pretvoriti jedan kompromitovani projekat u vektor masovne zaraze.

Kako bi odgovorili na to, i održavatelji registra i dobavljači sigurnosnih rješenja uvode sve sofisticiranije mehanizme detekcije. Sam PyPI je uveo dugme „Prijavi projekat kao zlonamjerni softver“ na stranicama projekata, vidljivo prijavljenim korisnicima, i testira API za prijavljivanje zlonamjernog softvera osmišljen da skrati vrijeme između otkrivanja i uklanjanja. Administratori pregledavaju dolazne izvještaje, mogu zatražiti dodatne detalje kao što su precizne lokacije datoteka ili linije koda, a zatim uklanjaju zlonamjerne projekte i korisnike kada se potvrdi zloupotreba.

Platforme za sigurnost u oblaku poput Prisma Clouda pružaju još jedan sloj zaštite skeniranjem zavisnosti otvorenog koda prije i tokom izvođenja. Prismin mehanizam za detekciju zlonamjernih paketa traži sumnjive atribute kao što su novokreirani autori bez historije, nedostajući metapodaci projekta, udaljeni URL-ovi ugrađeni u setup.py ili kod paketa i obrasci koda povezani s poznatim porodicama kradljivaca prijetnji ili backdoor prijetnji. Otkrivene prijetnje primaju interne Prisma identifikatore (Prisma-ID-ove), čak i ako ne postoji javni CVE, i prikazuju se u Prisma CVE Vieweru tako da korisnici mogu pratiti i sanirati pogođena opterećenja i cjevovode.

Odbrambene mjere tokom izvođenja nadopunjuju skeniranje prije implementacije praćenjem anomalija u ponašanju koda nakon implementacije. Na primjer, funkcije izvođenja Prisma Clouda i EDR analitika Cortex XDR-a prate neočekivane procese, mrežne veze s rijetkim vanjskim hostovima ili pojavu poznatih binarnih datoteka zlonamjernog softvera unutar kontejnera i virtualnih mašina. Analitička pravila poput „UNIX LOLBIN proces povezan s rijetkim vanjskim hostom“ mogu otkriti situacije u kojima interpreter koji izgleda bezopasno iznenada postaje C2 signal za zlonamjernu PyPI ovisnost.

Što se tiče statičke analize, Datadog-ov GuardDog projekat pokazuje kako heuristike zasnovane na pravilima mogu otkriti mnoge klase zlonamjernih PyPI paketa. GuardDog koristi Semgrep pravila za skeniranje i izvornog koda i PyPI metapodataka, fokusirajući se ne na potpise već na generičko ponašanje napadača uočeno u desetinama stvarnih paketa. Budući da pravila traže obrasce protoka podataka i neobične konfiguracije, mogu označiti nepoznate porodice zlonamjernog softvera koje ponovo koriste iste tehnike.

GuardDog-ove heuristike koda koncentriraju se na nekoliko ponašanja s visokim signalima. To uključuje prepisivanje install naredba u setup.py za pokretanje sistemskih naredbi prilikom instalacije, dinamički izvršavajući base64-kodirane podatke putem exec or eval, izdvajanje i pokretanje koda skrivenog u slikama (steganografija), preuzimanje izvršnih datoteka iz HTTP odgovora i njihovo pokretanje, te izvlačenje osjetljivih podataka kao što su AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, imena hostova ili .aws/credentials sadržaj na udaljene servere.

Heuristike na nivou metapodataka pokrivaju trikove koji se ne pojavljuju samo u kodu. GuardDog provjerava imena paketa s malom Levenshteinovom udaljenošću od prvih 5,000 paketa ili jednostavne zamjene znakova (klasično tiposquatting), održavatelje čiji su email domeni ponovo registrovani nakon najnovijeg izdanja (potencijalno preuzimanje računa) i sumnjivo prazne metapodatke kao što je verzija 0.0.0 i bez opisa. Iako takvi signali nisu dokaz zlonamjernog softvera, oni pomažu u trijaži projekata koji zaslužuju ručni pregled.

Upotreba GuardDoga u stvarnom svijetu brzo je otkrila dugu listu zlonamjernih PyPI paketa s različitim korisnim sadržajem. Neki poput beautifulsup4, oponašalo je naziv popularnih biblioteka (u ovom slučaju beautifulsoup4) i instalirao ekstenziju za Windows preglednik ispod korisničkog APPDATA direktorij. To proširenje je tražilo dozvole za međuspremnik i periodično provjeravalo adrese kripto-novčanika, zamjenjujući ih onima koje kontroliraju napadači uređivanjem zakačenih prečica preglednika i ubrizgavanjem --load-extension zastave.

Drugi paketi su koristili tešku obfuskaciju i steganografiju kako bi prikrili višefazne programe za preuzimanje. Jedan uzorak je uvezao biblioteku kao što je judyb, preuzeo sliku iz Imgura, a zatim pozvao LSB.reveal() da izvuče skriveni kod iz PNG-a i odmah ga izvrši. Oporavljeni korisni teret je zatim napisao privremeni skript koji je preuzeo još jednu fazu iz domene kao što je misogyny.wtf i pokrenuo ga putem pozadinskog Python procesa. U svakom koraku, kod je čuvan u memoriji ili kratkotrajnim privremenim datotekama kako bi se ostavili minimalni tragovi.

Porodice kradljivaca se također više puta pojavljuju u nalazima GuardDoga. Paketi preimenovani u framework uslužne programe ili HTTP klijente ispostavili su se kao omotači za kradljivce kolačića koji ciljaju Roblox sesije, Discord sakupljače tokena koji su učitavali podatke na webhookove ili dropere koji su preuzimali binarne datoteke spakovane u PyInstaller iz javnih GitHub repozitorija. Te binarne datoteke su zatim prolazile kroz Chrome, Firefox, Brave i druge profile preglednika kako bi prikupljale kolačiće i vjerodajnice, šaljući ih napadačkim webhookovima za preuzimanje računa i prevaru.

Održavatelji registra poput PyPI-ja naglašavaju da je prisustvo zlonamjernog softvera u projektima problem ekosistema, a ne ranjivost ključne platforme. PyPI-jev backend softver je eksterno revidiran i procijenjen kao usklađen sa široko prihvaćenim najboljim praksama. Slabe tačke su ljudski procesi vezani za odabir i pregled zavisnosti: bilo ko može objaviti, a programeri rutinski dodaju zavisnosti na osnovu kratkog README fajla ili isječka koda u objavi na blogu bez pregleda unutrašnjosti paketa.

Poboljšanje sigurnosti stoga zavisi od kombinacije boljih alata, strožih procesa i kontinuiranog nadzora zajednice. Automatizirano statičko i runtime skeniranje pomaže u otkrivanju mnogih loših paketa, ali organizacijama su i dalje potrebne zaštitne mjere poput internih ogledala provjerenih zavisnosti, obaveznog pregleda koda za nove biblioteke trećih strana, zaključanih verzija zavisnosti i jasnih planova odgovora u slučaju otkrivanja zlonamjerne zavisnosti. Istovremeno, sigurnosni timovi imaju koristi od javnih istraživačkih izvještaja, IoC feedova i ATT&CK mapiranja koja opisuju kako određene kampanje funkcioniraju kako bi mogli podesiti detekciju i tražiti povezane tragove.

U konačnici, razumijevanje kako se zlonamjerni softver ugrađuje u PyPI pakete – od prikrivenih setup.py skripti i lažnih vladinih API-ja za RAT-ove skrivene u komprimiranim rječnicima – daje timovima kontekst koji im je potreban za efikasan odgovor. Kombiniranjem zaštita na nivou ekosistema, ciljanih alata poput GuardDog-a i Prisma Cloud-a, te zdravog skepticizma prema novim zavisnostima i neželjenim zadacima „procjene“, organizacije mogu značajno smanjiti vjerovatnoću da jednostavan pip install na kraju otvara stražnja vrata u njihova najosjetljivija okruženja.

Slični postovi: