OpenSSF (Open Source Security Foundation) fond, mille Linux Foundation, on suunatud avatud tarkvara turvalisuse tõstmisele, esitles avatud projekti Package Analysis, mis arendab süsteemi pahatahtliku koodi analüüsimiseks pakettides. Projekti kood on kirjutatud Go keeles ja levitatakse Apache 2.0 litsentsi alusel. Eelnev skaneerimine NPM ja PyPI hoidlatest pakutava tööriistaga on tuvastanud üle 200 varem märkamatuks jäänud pahavara paketi.
Enamik avastatud probleemsete pakettide on seotud nimede segamisega projektide sisemiste mitteavalike sõltuvustega (dependency confusion rünnak) või nad kasutavad tüüphilenduse meetodeid (nimede määramine, mis sarnanevad populaarsete teegide nimedega) ning samuti kutsuvad installimise käigus esile skripte, mis tegelevad välistesse hostidesse. Package Analysis arendajate arvates on enamik avastatud probleemsetest pakettidest tõenäoliselt loodud turvauuringutega tegelevate teadlaste poolt, kes osalevad haavatavuste leidmise preemiate programmides (bug bounty), kuna edastatud andmed on piiratud kasutajanime ja süsteemi nimega, ning toimingud viiakse läbi selgelt, ilma katseteta oma käitumist varjata.
Kahjuliku tegevusega pakettidest on välja toodud:
- PyPI pakett discordcmd, kus on registreeritud ebatüüpiliste päringute saatmine raw.githubusercontent.com, Discord API ja ipinfo.io. Antud pakett laadis GitHubist alla tagaukse koodi ja installis selle Windowsi kliendi Discordi kataloogi, seejärel käivitas protsessi, mis otsis Discordi tokenit failisüsteemist ja saatis need välisele Discordi serverisse, mille kontrollivad ründajad.
- NPM-pakett colorsss, mis samuti üritas väliseid server tokenid Discordi kontolt.
- NPM-pakett @roku-web-core/ajax — installimise käigus saatis süsteemiandmeid ja käivitas töötleja (reverse shell), mis aktsepteeris väliseid ühendusi ja käivitas käske.
- PyPI-pakett secrevthree — käivitas reverse shell'i, kui teatud moodulit imporditi.
- NPM-pakett random-vouchercode-generator — pärast raamatukogu importimist saatis päringu välisele serverile, mis tagastas käsu ja aja, millal see käivitada.
Package Analysis'i töö seisneb koodipakettide lähtekoodide analüüsimises, et tuvastada võrguühendusi, failidele juurdepääsu ja käskude käivitamist. Samuti jälgitakse pakettide oleku muutusi, et tuvastada pahatahtliku sisu lisamine algselt kahjututesse tarkvaraversioonidesse. Uute pakettide ilmumise jälgimiseks hoidlates ja varasemate pakettide muudatuste tegemiseks kasutatakse Package Feeds'i tööriistu, mis ühtlustavad töötamist NPM, PyPI, Go, RubyGems, Packagist, NuGet ja Crate hoidlate vahel.
Package Analysis sisaldab kolme põhikomponenti, mida saab kasutada nii koos kui ka eraldi:
- Paketianalüüsi tööde käivitamise plaanija, mis põhineb Package Feeds'i andmetel.
- Analüsaator, mis kontrollib paketti ja hindab selle käitumist statilise analüüsi ja dünaamilise jälgimise abil. Kontroll teostatakse isoleeritud keskkonnas.
- Laadija, mis salvestab kontrollimise tulemused BigQuery andmehoidlasse.
Allikas: opennet.ru
