Die Geschichte über die Entfernung von drei bösartigen Paketen aus dem NPM-Repository, die den Code der Bibliothek UAParser.js kopierten, erhielt eine unerwartete Wendung — unbekannte Angreifer erlangten die Kontrolle über das Konto des Autors von UAParser.js und veröffentlichten Updates, die Code zum Stehlen von Passwörtern und für das Mining von Kryptowährungen enthielten.
Das Problem ist, dass die Bibliothek UAParser.js, die Funktionen zum Parsen des HTTP-Header-User-Agent bietet, etwa 8 Millionen Downloads pro Woche verzeichnet und als Abhängigkeit in über 1200 Projekten verwendet wird. Es wird berichtet, dass UAParser.js in Projekten von Unternehmen wie Microsoft, Amazon, Facebook, Slack, Discord, Mozilla, Apple, ProtonMail, Autodesk, Reddit, Vimeo, Uber, Dell, IBM, Siemens, Oracle, HP und Verizon eingesetzt wird.
Der Angriff erfolgte durch einen Hack des Entwicklerkontos des Projekts, der nach einer ungewöhnlichen Welle von Spam, die in seinem Postfach aufkam, erkannte, dass etwas nicht stimmte. Wie genau das Entwicklerkonto gehackt wurde, wird nicht mitgeteilt. Die Angreifer erstellten die Versionen 0.7.29, 0.8.0 und 1.0.0 und integrierten schädlichen Code. Innerhalb weniger Stunden übernahmen die Entwickler die Kontrolle über das Projekt zurück und erstellten die Updates 0.7.30, 0.8.1 und 1.0.1 zur Behebung des Problems. Die schädlichen Versionen wurden nur als Pakete im NPM-Repository veröffentlicht. Das Git-Repository des Projekts auf GitHub blieb unversehrt. Allen Benutzern, die die betroffenen Versionen installiert haben, wird empfohlen, das System als kompromittiert zu betrachten, wenn in Linux/macOS die Datei jsextension und in Windows die Dateien jsextension.exe und create.dll entdeckt werden.
Die eingefügten schädlichen Änderungen erinnerten an Modifikationen, die zuvor in Klonen von UAParser.js vorgeschlagen wurden und offensichtlich zur Testung der Funktionalität vor einem großflächigen Angriff auf das Hauptprojekt veröffentlicht wurden. Ein ausführbares Datei namens jsextension wurde von einem externen Host auf das System des Benutzers hochgeladen und ausgeführt, wobei es je nach Benutzerplattform arbeitete und Linux, macOS und Windows unterstützte. Für die Windows-Plattform organisierten die Angreifer neben der Software für das Mining der Kryptowährung Monero (der Miner XMRig wurde verwendet) auch die Implementierung der Bibliothek create.dll, um Passwörter abzufangen und sie an einen externen Host zu senden.
Der Code zum Hochladen wurde in die Datei preinstall.sh eingefügt, in der die Zeile hinzufügt IP=$(curl -k https://freegeoip.app/xml/ | grep 'RU|UA|BY|KZ') if [ -z "$IP" ] … herunterladen und die ausführbare Datei starten fi.
Wie aus dem Code ersichtlich ist, überprüfte das Skript zunächst die IP-Adresse über den Dienst freegeoip.app und startete die schädliche Anwendung nicht für Benutzer aus Russland, der Ukraine, Weißrussland und Kasachstan.
Quelle: opennet.ru
