
Reproduz e analisa a CVE-2026-3494, uma bypass de auditoria de logs no plugin server_audit do MariaDB, usando testes multi-versão baseados em Docker para comparar o comportamento de registro entre versões vulneráveis e corrigidas.
Este projeto fornece um ambiente especializado para verificar e analisar uma possível bypass de auditoria de logging no plugin server_audit do MariaDB quando comentários inline específicos (#, --) são usados em consultas SQL.
SET PASSWORD com comentários ou casos de Erro 1046) não são registradas no log de auditoria no MariaDB v11.8.6, que anteriormente era considerada uma versão corrigida.#) podem fazer com que declarações DCL sejam processadas incorretamente ou ignoradas pelo auditor.server_audit está habilitado com filtros como QUERY_DCL, QUERY_DDL e QUERY_DML, certas consultas contendo comentários inline podem contornar o mecanismo de logging.A seguinte matriz resume o comportamento de logging observado durante os testes:
[MariaDB 10.3.39 / 11.8.5]
- CASO #1, #2A, #2B, #3, #4 → TODOS REGISTRADOS (Comportamento normal)
[MariaDB 11.8.6 (Versão Alvo)]
- CASO #2B (Erro 1046) → NÃO REGISTRADO (Omissão de Logging) ❗
- CASO #3 (SET PASSWORD com comentário) → NÃO REGISTRADO (Omissão de Logging) ❗
- CASO #1, #2A, #4 → REGISTRADOS (Comportamento normal)
Este projeto utiliza Docker Compose para executar três instâncias isoladas do MariaDB:
| Versão | Porta | Status | Descrição |
|---|---|---|---|
| MariaDB 10.3.39 | 3306 | Vulnerável | Verificação de versão estável legada |
| MariaDB 11.8.5 | 3307 | Vulnerável | Verificação da versão vulnerável mais recente |
| MariaDB 11.8.6 | 3308 | Alvo | Avaliação das mudanças recentes de logging de auditoria |
Construa e inicie os contêineres MariaDB. O ambiente configura automaticamente o plugin server_audit e inicializa usuários de teste.
# Construir e iniciar contêineres
docker compose up --build -d
# Verificar o status dos contêineres
docker ps
Instale as dependências Python necessárias:
pip install pymysql
O script pode ser executado a partir de qualquer diretório dentro do projeto.
python poc/poc.py
O PoC executa 5 cenários distintos:
SET PASSWORD com um comentário # embutido (Verificação de bypass).SELECT com um comentário # embutido (Verificação de bypass).REGISTRADO: A consulta foi registrada com sucesso no log de auditoria.NÃO REGISTRADO: A consulta foi omitida do log (Possível bypass ou regressão).>> Log Real: Exibe a entrada bruta de server_audit.log em azul para verificar a integridade da declaração registrada.Abaixo estão os logs de execução reais mostrando a diferença entre o comportamento esperado (11.8.5) e a omissão de logging (11.8.6).
[+] TEST_CASE_2_B_ERROR_1046
Resultado: REGISTRADO
>> Log Real: | 20260504 04:45:05,...,QUERY,mysql,'SELECT * FROM user',1046
[+] TEST_CASE_3_COMMENT_SET_PASSWORD
Resultado: REGISTRADO
>> Log Real: | 20260504 04:45:07,...,QUERY,mysql,'SET PASSWORD # CVE-2026-3494 Test ...',1133
[+] TEST_CASE_2_B_ERROR_1046 (Nenhum banco de dados selecionado)
Resultado: NÃO REGISTRADO <-- Omissão detectada
[+] TEST_CASE_3_COMMENT_SET_PASSWORD (Comentário Inline #)
Resultado: NÃO REGISTRADO <-- Omissão detectada
[!TIP] Para a saída completa do terminal de todos os casos de teste e versões, consulte o Log de Execução Completo.
.
├── config/ # Configuração do MariaDB server_audit
├── init/ # Scripts de inicialização (Configuração de Usuário & Plugin)
├── logs/ # Montagens de volume do log de auditoria
├── poc/
│ └── poc.py # Script de verificação automatizada
├── results/
│ └── full_execution_log.md # Logs detalhados de saída do terminal
├── docker-compose.yml # Definição do ambiente multi-versão
└── README.md # Documentação do projeto (Arquivo atual)
Este projeto é apenas para fins educacionais e de pesquisa em segurança. Use-o com responsabilidade e não aplique estas configurações em ambientes de produção sem testes aprofundados.