OpenSSF (Open Source Security Foundation), mille asutatud Linux Foundation, on suunatud avatud tarkvara turvalisuse parandamisele. Nad on esitanud avatud projekti Package Analysis, mis arendab kahjuliku koodi tuvastamise süsteemi paketis. Projekti kood on kirjutatud Go keeles ja levitatakse Apache 2.0 litsentsi all. Esialgne NPM ja PyPI hoidlate skaneerimine pakutud tööriistade abil on võimaldanud tuvastada üle 200 seni varjatud kahjuliku paketi.
Enamik tuvastatud probleemseid pakette manipuleerib nimede ristumistega projektide sisemiste avalike sõltuvustega (dependency confusion rünnak) või kasutab pettuse meetodeid (nimede määramine, mis sarnanevad populaarsete raamatukogude nimedega). Samuti kutsuvad nad installimise käigus välja skripte, mis suhtlevad väliste hostidega. Package Analysis'i arendajate arvates on enamik tuvastatud probleemsetest pakettidest ilmselt loodud turvauuringutega tegelevate teadlaste poolt, kes osalevad haavatavuste avastamisprogrammides (bug bounty), kuna edastatud andmed piirduvad kasutajanime ja süsteemi nimedega ning toimingud tehakse selgelt, ilma katseteta oma käitumist varjata.
Tuvastatud kahjuliku aktiivsusega paketid on:
- PyPI pakett discordcmd, kus on registreeritud ebatüüpiliste päringute saatmine raw.githubusercontent.com, Discord API ja ipinfo.io. Antud pakett laadis bäkdoori koodi GitHub'ist ja installis selle Windowsi Discordi kliendi kataloogi, seejärel käivitas protsessi, mis otsis Discordi tokenit failisüsteemist ja saatis need välisele Discordi serverile, mis oli ründajate kontrolli all.
- NPM pakett colorsss, mis proovis samuti edastada välisele server tokeneid Discordi kontolt.
- NPM pakett @roku-web-core/ajax - installimise käigus edastas süsteemi andmeid ja käivitas töötleja (reverse shell), mis võttis vastu väliseid ühendusi ja käivitas käske.
- PyPI pakett secrevthree - käivitas reverse shell'i, kui kindlat moodulit imporditi.
- NPM pakett random-vouchercode-generator - pärast raamatukogu impordimist saatis päringu välisele serverile, mis tagastas käsu ja aja, millal see tuleks käivitada.
Package Analysis töötab koodi paketide allikatekstide analüüsil, et seadistada võrguühendusi, pääseda failidele ja käivitada käske. Lisaks jälgitakse pakettide oleku muutusi, et tuvastada pahavara lisamistsüklid algselt kahjututes tarkvarades. Uute paketide ilmumise jälgimiseks repositooriumites ja varasemate pakettide muudatuste jälgimiseks kasutatakse Package Feeds tööriistu, mis unifitseerivad NPM, PyPI, Go, RubyGems, Packagist, NuGet ja Crate repositooriumide haldamise.
Package Analysis koosneb kolmest põhikomponendist, mida saab kasutada nii koos kui ka eraldi:
- Töökava, mis haldab pakettide analüüsi andmete põhjal, mis pärinevad Package Feeds'ilt.
- Analüsaator, mis kontrollib paketti ja hindab selle käitumist staatilise analüüsi ja dünaamilise jälgimise meetodite abil. Kontroll toimub isoleeritud keskkonnas.
- Laadija, mis salvestab kontrolli tulemused BigQuery'sse.
Allikas: opennet.ru
