Checkmarx beschreibt indexed-btree als Nachahmung des legitimen Pakets sorted-btree, eines verbreiteten Werkzeugs für B-Tree-Strukturen und Indexierung. Der eigentliche Trick liegt im Auslösemechanismus: Der Angreifer platzierte den Schadcode in der zentralen Funktion der Bibliothek, der Methode BTree.prototype.set. Wird sie aufgerufen, startet die erste Stufe der Schadsoftware. Weil kein Installationsskript zum Einsatz kommt, greifen die kürzlich verschärften Kontrollen von NPM in diesem Fall nicht.
Ist die erste Stufe aktiv, sammelt sie Systeminformationen und schickt sie an einen fest einprogrammierten Slack-Kanal sowie an einen Telegram-Chat. Anschließend verbindet sich der Schadcode mit einem Smart Contract im Ethereum-Testnetz Sepolia, der als Kommando- und Kontrollinfrastruktur dient. Von dort wird die zweite Stufe extrahiert und entschlüsselt; danach beseitigt die Schadsoftware ihre Spuren.
Der verwendete Smart Contract ist den Forschern nicht unbekannt: Laut Checkmarx tauchte er bereits im Paket mutex-forge auf. Dem Angreifer seien darüber offenbar 109 ETH zugeflossen, umgerechnet knapp 300.000 Dollar.
Ungewöhnlich ist der Aufwand, den der Täter in die Fassade steckte. „Ein GitHub-Repository ist etwas, das Angreifer sich normalerweise nicht die Mühe machen anzulegen. Dieses hier ist clever genug, den Schadcode nicht zu enthalten. Zudem kann eine Vielzahl von Commits dabei helfen, das Repository legitim wirken zu lassen", erklärt Checkmarx. Der Schadcode existiert also nur im veröffentlichten NPM-Paket, nicht im öffentlich einsehbaren Quellcode — wer die Herkunft prüft, sieht ein gepflegtes Projekt mit Entwicklungshistorie.
Auch die Auswahl der Zielpakete folgt dieser Logik. Statt auf Pakete mit größter Reichweite zu setzen, die schnell auffallen würden, bewegte sich der Angreifer in einer Nische rund um B-Tree- und Index-Bibliotheken. Neben indexed-btree ordnet Checkmarx der Kampagne die Pakete ordered-kv-index, btree-leaderboard, priority-slot-queue, btree-range-store, btree-core, btree-time-index, btree-lru-cache, neighbor-key-map und sliding-score-window zu. Zum Zeitpunkt ihrer Entfernung kamen sie zusammen auf mehr als fünf Millionen Downloads.
Die Kampagne ist nach Einschätzung von Checkmarx weiterhin aktiv: „Diese laufende Kampagne ist eine dynamische Bedrohung für Organisationen, mit einer widerstandsfähigen Kommando- und Kontrollinfrastruktur und Schadcode, der im Paketcode selbst versteckt ist."
