Die drei betroffenen PyPI-Pakete — uuid32-utils, colorinal und termncolor — wurden innerhalb kurzer Zeit hochgeladen und sind mittlerweile aus dem Repository entfernt worden. Während uuid32-utils und colorinal ähnliche schädliche Payloads nutzten, war termncolor ein Köder-Paket, das colorinal als Abhängigkeit auflistete und so zusätzliche Infektionen triggern sollte.
Auf Windows-Systemen extrahiert der infizierte Code eine DLL-Dropper-Datei namens “terminate.dll”. Diese wird beim Import der Bibliothek geladen und dient als Transportmittel für ZiChatBot. Das Malware-Programm richtet einen Autorun-Eintrag in der Windows-Registry ein und löscht sich selbst vom System — eine Technik zur Verschleierung. Auf Linux-Systemen funktioniert der Angriff ähnlich: Eine Shared-Object-Datei (terminate.so) deponiert die Malware im Pfad “/tmp/obsHub/obs-check-update” und konfiguriert einen Crontab-Eintrag für regelmäßige Ausführung.
Besonders bemerkenswert ist die Kommunikationsmethode: ZiChatBot empfängt Befehle über REST-APIs der öffentlichen Zulip-Plattform statt über klassische C2-Server. Nach Ausführung der Befehle sendet die Malware einen Herz-Emoji als Bestätigung an den Server — eine unkonventionelle, aber effektive Tarnung.
Kaspersky identifizierte eine 64-prozentige Ähnlichkeit zwischen dem Dropper und Malware der vietnamesisch ausgerichteten Hacker-Gruppe OceanLotus (APT32). Diese Gruppe war bereits in der Vergangenheit aktiv, etwa 2024 mit poisoned Visual Studio Code-Projekten, die als Cobalt-Strike-Plugins getarnt waren und über die Notion-API kommunizierten. Falls OceanLotus tatsächlich hinter dem PyPI-Angriff steckt, signalisiert dies eine Ausweitung ihrer Angriffsziele und -methoden über traditionelle Phishing-Kampagnen hinaus.
Für deutsche Entwickler und IT-Sicherheitsverantwortliche ist der Vorfall ein Weckruf: Regelmäßige Audits von Abhängigkeiten, die Nutzung von Software-Composition-Analysis-Tools und das Monitoring verdächtiger Paket-Updates sind essentiell. Das BSI empfiehlt zudem, nur Pakete aus verifizierten Quellen zu beziehen und deren Integrität zu prüfen.
