
Reproduce y analiza CVE-2026-3494, una omisión de auditoría de registros en el plugin server_audit de MariaDB, mediante pruebas multi-versión basadas en Docker para comparar el comportamiento de registro entre versiones vulnerables y parcheadas.
Este proyecto proporciona un entorno especializado para verificar y analizar una posible omisión del registro de auditoría en el plugin server_audit de MariaDB cuando se utilizan comentarios en línea específicos (#, --) dentro de consultas SQL.
SET PASSWORD con comentarios o casos de Error 1046) no se registran en el log de auditoría en MariaDB v11.8.6, que anteriormente se consideraba una versión parcheada.#) podrían hacer que las sentencias DCL sean procesadas incorrectamente o ignoradas por el auditor.server_audit está habilitado con filtros como QUERY_DCL, QUERY_DDL y QUERY_DML, ciertas consultas que contienen comentarios en línea pueden omitir el mecanismo de registro.La siguiente matriz resume el comportamiento de registro observado durante las pruebas:
[MariaDB 10.3.39 / 11.8.5]
- CASO #1, #2A, #2B, #3, #4 → TODOS REGISTRADOS (Comportamiento normal)
[MariaDB 11.8.6 (Versión Objetivo)]
- CASO #2B (Error 1046) → NO REGISTRADO (Omisión de Registro) ❗
- CASO #3 (SET PASSWORD con comentario) → NO REGISTRADO (Omisión de Registro) ❗
- CASO #1, #2A, #4 → REGISTRADOS (Comportamiento normal)
Este proyecto utiliza Docker Compose para ejecutar tres instancias aisladas de MariaDB:
| Versión | Puerto | Estado | Descripción |
|---|---|---|---|
| MariaDB 10.3.39 | 3306 | Vulnerable | Verificación de versión estable heredada |
| MariaDB 11.8.5 | 3307 | Vulnerable | Verificación de la última versión vulnerable |
| MariaDB 11.8.6 | 3308 | Objetivo | Evaluación de los cambios recientes en el registro de auditoría |
Construir e iniciar los contenedores de MariaDB. El entorno configura automáticamente el plugin server_audit e inicializa los usuarios de prueba.
# Construir e iniciar contenedores
docker compose up --build -d
# Verificar el estado de los contenedores
docker ps
Instalar las dependencias de Python requeridas:
pip install pymysql
El script se puede ejecutar desde cualquier directorio dentro del proyecto.
python poc/poc.py
El PoC realiza 5 escenarios distintos:
SET PASSWORD con un comentario # incrustado (Verificación de omisión).SELECT con un comentario # incrustado (Verificación de omisión).LOGGED: La consulta se registró correctamente en el log de auditoría.NOT LOGGED: La consulta se omitió del log (Posible omisión o regresión).>> Actual Log: Muestra la entrada cruda de server_audit.log en azul para verificar la integridad de la sentencia registrada.A continuación se muestran los logs de ejecución reales que muestran la diferencia entre el comportamiento esperado (11.8.5) y la omisión de registro (11.8.6).
[+] TEST_CASE_2_B_ERROR_1046
Resultado: LOGGED
>> Actual Log: | 20260504 04:45:05,...,QUERY,mysql,'SELECT * FROM user',1046
[+] TEST_CASE_3_COMMENT_SET_PASSWORD
Resultado: LOGGED
>> Actual Log: | 20260504 04:45:07,...,QUERY,mysql,'SET PASSWORD # CVE-2026-3494 Test ...',1133
[+] TEST_CASE_2_B_ERROR_1046 (No database selected)
Resultado: NOT LOGGED <-- Omisión detectada
[+] TEST_CASE_3_COMMENT_SET_PASSWORD (Comentario en línea #)
Resultado: NOT LOGGED <-- Omisión detectada
[!TIP] Para la salida completa del terminal de todos los casos de prueba y versiones, consulte el Log de Ejecución Completo.
.
├── config/ # Configuración de server_audit de MariaDB
├── init/ # Scripts de inicialización (Configuración de Usuario y Plugin)
├── logs/ # Montajes de volumen del log de auditoría
├── poc/
│ └── poc.py # Script de verificación automatizada
├── results/
│ └── full_execution_log.md # Logs detallados de salida del terminal
├── docker-compose.yml # Definición del entorno multi-versión
└── README.md # Documentación del proyecto (Archivo actual)
Este proyecto es solo para fines educativos y de investigación en seguridad. Úselo de manera responsable y no aplique estas configuraciones en entornos de producción sin pruebas exhaustivas.