De OpenSSF (Open Source Security Foundation), opgericht door de Linux Foundation en gericht op het verbeteren van de veiligheid van open source software, heeft een open project Package Analysis gepresenteerd, dat een systeem ontwikkelt voor het analyseren van de aanwezigheid van kwaadaardige code in pakketten. De code van het project is geschreven in Go en wordt verspreid onder de Apache 2.0-licentie. Een voorlopige scan van de repositories NPM en PyPI met behulp van de aangeboden toolset heeft meer dan 200 eerder onopgemerkte kwaadaardige pakketten aan het licht gebracht.
De meeste geïdentificeerde problematische pakketten manipuleren de naamgevingen met interne niet-publieke afhankelijkheden van projecten (dependency confusion-aanval) of gebruiken technieken zoals typosquatting (het toekennen van namen die lijken op populaire bibliotheken), en roepen scripts op die verbinding maken met externe hosts tijdens de installatie. Volgens de ontwikkelaars van Package Analysis zijn de meeste van de geïdentificeerde problematische pakketten waarschijnlijk gemaakt door beveiligingsonderzoekers die deelnemen aan programma's voor bugbeloningen, aangezien de verzonden gegevens zich beperken tot de gebruikersnaam en het systeem, en de acties expliciet worden uitgevoerd, zonder pogingen om gedrag te verbergen.
De volgende pakketten vertonen kwaadaardige activiteit:
- Het PyPI-pakket discordcmd, waarin ongebruikelijke verzoeken worden verzonden naar raw.githubusercontent.com, Discord API en ipinfo.io. Dit pakket downloadde een backdoor-code van GitHub en installeerde deze in de Windows-clientmap van Discord, waarna het processen startte om Discord-tokens in het bestandssysteem te zoeken en deze naar een externe Discord-server te sturen die onder controle staat van de aanvallers.
- Het NPM-pakket colorsss, dat ook probeerde om extern te verzenden server tokens van het Discord-account.
- Het NPM-pakket @roku-web-core/ajax — tijdens de installatie werd systeeminformatie verzonden en werd een handler (reverse shell) gestart, die externe verbindingen accepteerde en opdrachten uitvoerde.
- Het PyPI-pakket secrevthree — startte een reverse shell bij de import van een bepaalde module.
- Het NPM-pakket random-vouchercode-generator — na het importeren van de bibliotheek werd er een verzoek naar een externe server verzonden, die een opdracht en het tijdstip waarop deze uitgevoerd moest worden, retourneerde.
Het werken met Package Analysis houdt in dat de bronbestanden van pakketten worden geanalyseerd voor het opzetten van netwerkverbindingen, bestanden te benaderen en commando's uit te voeren. Daarnaast wordt de staat van pakketten gevolgd om het toevoegen van kwaadaardige invoegingen in een aanvankelijk onschadelijk softwarepakket te detecteren. Voor het monitoren van nieuwe pakketten in de repositories en om wijzigingen aan eerder geplaatste pakketten door te voeren, wordt de tool Package Feeds gebruikt, die de werking met NPM, PyPI, Go, RubyGems, Packagist, NuGet en Crate repositories standaardiseert.
Package Analysis omvat drie basiscomponenten die zowel in combinatie als afzonderlijk kunnen worden gebruikt:
- Een planner die de werkzaamheden voor de analyse van pakketten start op basis van gegevens uit Package Feeds.
- Een analyzer die het pakket rechtstreeks controleert en het gedrag evalueert met behulp van statische analysemethoden en dynamische tracering. De controle vindt plaats in een geïsoleerde omgeving.
- Een loader die de resultaten van de controle in de BigQuery-opslag plaatst.
Bron: opennet.ru
