
# Simulador Educacional em Python para CVE-2026-22807 Simulador educacional em Python para a faixa de alvos da CVE-2026-22807, uma RCE na cadeia de suprimentos de IA via TOCTOU no carregamento de modelos. Inclui biblioteca vulnerável, script de PoC e geração dinâmica de payloads para pesquisa e ensino em segurança.
⚠️ Aviso Legal / Disclaimer
Este projeto destina-se exclusivamente a fins de pesquisa e ensino em segurança, com o objetivo de demonstrar o princípio de ataque à cadeia de suprimentos durante o carregamento de modelos de IA (Remote Code Execution). Não utilize os modelos maliciosos gerados em ambientes de produção e é estritamente proibido usar este projeto para qualquer atividade de ataque ilegal. Os desenvolvedores não se responsabilizam por quaisquer consequências legais decorrentes do uso inadequado.
Este é um ambiente de teste leve em Python, usado para simular e reproduzir a CVE-2026-22807 (uma lógica típica de vulnerabilidade na cadeia de suprimentos de IA).
Este ambiente demonstra o problema de condição de corrida (TOCTOU) quando frameworks de inferência de IA (como vLLM, Transformers, etc.) carregam modelos:
se o carregador, antes de verificar trust_remote_code=False, importa prematuramente o código Python fornecido pelo usuário para resolver a arquitetura do modelo (AutoConfig/AutoModel), um atacante pode contornar a verificação de segurança e obter execução remota de código (RCE).
| Nome do Arquivo | Papel | Descrição |
|---|---|---|
vulnerable_lib.py | 🎯 Alvo (Victim) | Simula a biblioteca carregadora de modelos de IA vulnerável (MiniLLM). Contém a ordem lógica incorreta. |
poc_dynamic.py | 🔫 Atacante (Attacker) | Script de ataque automatizado. Responsável por gerar o diretório do modelo malicioso e acionar o processo de carregamento. |
dynamic_evil_model/ | 📦 Payload malicioso | Diretório gerado automaticamente após a execução do script, contendo config.json e malicious.py com código injetado. |
Certifique-se de ter Python 3.x instalado. Este ambiente não possui dependências de bibliotecas de terceiros.
Execute diretamente o script de ataque; por padrão, ele executa o comando whoami.
python poc_dynamic.py
Saída esperada: Você verá o console imprimir a palavra PWNED e o nome de usuário atual do sistema; em seguida, o programa lançará a exceção "Remote code not allowed". Isso prova que a defesa foi contornada.
Você pode passar qualquer comando do sistema como argumento para o script, gerando uma "bomba" específica.
Exemplo no Windows (abrir calculadora):
python poc_dynamic.py calc
Exemplo no Linux/Mac (visualizar arquivo):
python poc_dynamic.py cat /etc/passwd
Este ambiente reproduz o seguinte fluxo perigoso:
config.json.auto_map e, para confirmar a classe do modelo, executa diretamente o importlib para importar o arquivo Python alvo.import do Python, o os.system() no nível superior do arquivo malicioso é executado imediatamente.trust_remote_code. Embora a execução seja interrompida e um erro seja lançado neste ponto, o ataque já foi concluído.❌ Código vulnerável (vulnerable_lib.py):
# 1. Primeiro aciona o carregamento do código (RCE ocorre aqui)
self._resolve_model_class()
# 2. Depois realiza a verificação de segurança (tarde demais)
if not self.trust_remote_code:
raise RuntimeError("Aborted!")
✅ Solução Corrigida:
# 1. Primeiro realiza a verificação de segurança
if not self.trust_remote_code and self._needs_remote_code():
raise RuntimeError("Aborted!")
# 2. Somente após a verificação ser aprovada, carrega o código
self._resolve_model_class()