HeadlinesBriefing favicon HeadlinesBriefing.com

Verschlüsselter Loader in NPM-Bibliothek

Hacker News •
×

Wir fanden ein Remote-Access-Implantat versteckt in mathmain, einem npm-Paket, das die beliebte mathjs-Bibliothek kopiert. Der bösartige Code wird verschlüsselt geliefert. Er bleibt inaktiv, bis ein Programm eine bestimmte Gleichung mit der Bibliothek löst. Diese Gleichung ist der Schlüssel. Wenn der Schlüssel übereinstimmt, entschlüsselt das Paket eine Nutzlast und führt sie aus. Die Nutzlast empfängt Befehle vom Angreifer und führt sie auf dem Host aus. Sie verwendet einen öffentlichen Chat-Dienst und ein Blockchain-Netzwerk für ihren Befehlskanal.

Wir begannen mit einer Safe Dep-Analyse von mathmain am 17. September 2026. Das Paket sah aus wie eine Kopie von mathjs mit einem anderen Namen und obfuskiertem Code. Ein hinzugefügter Aufruf im Solver führte uns zum Loader. Gegen Ende von lusolve() fanden wir einen zusätzlichen Aufruf im Common JS-Build. Der Solver hatte sein Ergebnis bereits berechnet. Dann übergab er Daten aus der unteren Dreiecksmatrix an remove Solve Validation().

Wir folgten remove Solve Validation() zu is Graph(x) in lib/cjs/utils/is.js. Die hinzugefügte Funktion is Graph() entschlüsselt und lädt Code. Sie konvertiert ihre Eingabe in einen JSON-String und verwendet diesen String als Passwort. Sie entschlüsselt zuerst einen Dateinamen. Dann übergibt sie den Dateipfad und das Passwort an event() und lädt den zurückgegebenen Pfad mit require().

Die Matrixdaten werden zu einem Passwort. In lib/cjs/utils/event.js fanden wir die Entschlüsselungsfunktionen. Sie verwenden scrypt, um das Passwort in einen Schlüssel von 256 Bit umzuwandeln. Dann entschlüsseln sie die Daten mit AES-GCM. Der Loader schreibt und führt die Datei aus. Der event()-Helfer entschlüsselt die Datei, schreibt das Ergebnis auf die Festplatte und gibt den Ausgabepfad zurück.

Schlüsselentitäten: Unternehmen: mathjs, Safe Dep