
PoC educacional para CVE-2026-8838, uma vulnerabilidade crítica de RCE no Amazon Redshift Python Driver devido ao uso inseguro de eval() em vector_in(). Inclui análise técnica, vetor de ataque e orientações de mitigação.
eval()
Projeto de pesquisa e demonstração em cibersegurança ofensiva realizado exclusivamente para fins pedagógicos e de conscientização.
Qualquer uso em sistemas sem autorização explícita é ilegal.
Este repositório deve ser utilizado apenas em:
O cenário de vulnerabilidade apresentado aqui é destinado apenas a fins de demonstração educacional.
CVE-2026-8838 é uma vulnerabilidade crítica de injeção de código (Execução Remota de Código) descoberta no conector oficial Python da Amazon Redshift (amazon-redshift-python-driver).
A falha decorre do uso inseguro da função nativa do Python eval() em dados recebidos diretamente do servidor, na função vector_in(). Um servidor malicioso ou um atacante posicionado como Man-in-the-Middle (MitM) pode enviar uma payload especialmente criada que será avaliada e executada no lado do cliente sem qualquer validação.
| Campo | Valor |
|---|---|
| CVE ID | CVE-2026-8838 |
| CVSS Score | 9.8 (Critical) |
| CWE | CWE-94 — Improper Control of Generation of Code |
| Vetor CVSS | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Componente vulnerável | amazon-redshift-python-driver < 2.1.14 |
| Função vulnerável | vector_in() |
| Tipo de ataque | Rogue server / Man-in-the-Middle |
| Autenticação necessária | Não |
| Interação do usuário | Não |
A função vector_in() é responsável por desserializar os dados do tipo vetorial recebidos do servidor Redshift. Nas versões vulneráveis, ela usa eval() diretamente no conteúdo bruto retornado pelo servidor:
# Code vulnérable (simplifié) — versions < 2.1.14
def vector_in(data, offset, length):
raw = data[offset:offset+length].decode("utf-8")
# FAILLE : eval() sur une donnée contrôlée par le serveur
return eval(raw)
Client (vítima) Servidor (malicioso / MitM)
| |
|---------- Conexão Redshift ------------->|
| |
|<--------- Resposta forjada --------------|
| "[__import__('os').system('cmd')]" |
| |
| eval() executa a payload no lado cliente |
| => RCE na máquina do cliente |
Veja
poc_server.pypara o servidor simulado epoc/poc_client.pypara o cliente de demonstração.
O PoC simula um servidor Redshift retornando uma resposta forjada. Apenas para fins de demonstração, a payload usada é inofensiva (whoami).
Execução:
# Terminal 1 — iniciar o falso servidor
python poc/poc_server.py
# Terminal 2 — simular o cliente vulnerável
python poc/poc_client.py
A exploração bem-sucedida permite que um atacante:
| Pacote | Versão vulnerável | Versão corrigida |
|---|---|---|
amazon-redshift-python-driver | < 2.1.14 | ≥ 2.1.14 |
Verifique sua versão instalada:
pip show amazon-redshift-python-driver
pip install --upgrade amazon-redshift-python-driver
# Verificação
pip show amazon-redshift-python-driver | grep Version
# Esperado: Versão: 2.1.14 ou superior
Veja o arquivo MITIGATION.md para as recomendações detalhadas:
Maxime288 — github.com/Maxime288
Pesquisa realizada para fins educacionais no âmbito do estudo da segurança ofensiva.