OpenSSF (Open Source Security Foundation), dannet af Linux Foundation og med fokus på at forbedre sikkerheden for open source software, har præsenteret et åbent projekt Package Analysis, som udvikler et system til analyse af skadeligt kode i pakker. Projektets kode er skrevet i Go og distribueres under Apache 2.0 licensen. Foreløbige scanninger af NPM- og PyPI-repositorier ved hjælp af det foreslåede værktøj har gjort det muligt at identificere mere end 200 tidligere uopdagede skadelige pakker.
Hovedparten af de identificerede problematiske pakker manipulerer med navne, der krydser med interne, private afhængigheder af projekter (dependency confusion attack), eller bruger metoder til type-squatting (tildeling af navne, der ligner navne på populære biblioteker), samt udfører scripts, der anmoder eksterne værter under installationsprocessen. Ifølge udviklerne af Package Analysis er størstedelen af de identificerede problematiske pakker sandsynligvis skabt af sikkerhedsresearchere, der deltager i belønningsprogrammer for at identificere sårbarheder (bug bounty), da de sendte data kun begrænses til brugernavn og system, og handlingerne udføres åbenlyst, uden forsøg på at skjule deres adfærd.
De pakker med skadelig aktivitet omfatter:
- PyPI-pakken discordcmd, som registrerede usædvanlige forespørgsler til raw.githubusercontent.com, Discord API og ipinfo.io. Den nævnte pakke downloadede en bagerdit fra GitHub og installerede den i mappen for Windows-klienten Discord, hvorefter den startede en proces til at søge efter Discord-tokens i filsystemet og sende dem til en ekstern Discord-server, kontrolleret af angriberne.
- NPM-pakken colorsss, der også forsøgte at sende til en ekstern server token fra Discord-kontoen.
- NPM-pakken @roku-web-core/ajax — sendte systemdata under installationen og startede en reverse shell, der modtog eksterne forbindelser og udførte kommandoer.
- PyPI-pakken secrevthree — startede en reverse shell, når en bestemt modul blev importeret.
- NPM-pakken random-vouchercode-generator — efter import af biblioteket sendte en forespørgsel til en ekstern server, der returnerede en kommando og tidspunktet for, hvornår den skulle udføres.
Arbejdet med Package Analysis handler om at analysere kildekoden i pakker for at etablere netværksforbindelser, få adgang til filer og udføre kommandoer. Derudover overvåges ændringer i pakkernes tilstand for at identificere tilføjelsen af skadelige indhold i en oprindeligt harmløs softwareudgivelse. Til overvågning af nye pakker i lagre og ændringer i tidligere offentliggjorte pakker anvendes værktøjet Package Feeds, som standardiserer arbejdet med NPM, PyPI, Go, RubyGems, Packagist, NuGet og Crate-lagre.
Package Analysis inkluderer tre grundlæggende komponenter, der kan bruges sammen eller hver for sig:
- Planlægger, der retter analyseringsarbejdet med data fra Package Feeds.
- Analysator, der direkte tjekker pakken og vurderer dens adfærd ved hjælp af metoder til statisk analyse og dynamisk sporing. Kontrollen udføres i et isoleret miljø.
- Loader, der placerer kontrolresultaterne i BigQuery-lageret.
Kilde: opennet.ru
