
Riproduce e analizza CVE-2026-3494, un bypass del logging di audit nel plugin server_audit di MariaDB, utilizzando test multi-versione basati su Docker per confrontare il comportamento di logging tra versioni vulnerabili e corrette.
Questo progetto fornisce un ambiente specializzato per verificare e analizzare un potenziale bypass del logging di audit nel plugin server_audit di MariaDB quando vengono utilizzati commenti inline specifici (#, --) all'interno delle query SQL.
SET PASSWORD con commenti o casi di Errore 1046) non vengono registrate nel log di audit in MariaDB v11.8.6, che in precedenza era considerata una versione patchata.#) potrebbero causare un'elaborazione o un'ignorazione impropria delle istruzioni DCL da parte dell'auditor.server_audit è abilitato con filtri come QUERY_DCL, QUERY_DDL e QUERY_DML, alcune query contenenti commenti inline possono bypassare il meccanismo di logging.La seguente matrice riassume il comportamento di logging osservato durante i test:
[MariaDB 10.3.39 / 11.8.5]
- CASO #1, #2A, #2B, #3, #4 → Tutti REGISTRATI (Comportamento normale)
[MariaDB 11.8.6 (Versione Target)]
- CASO #2B (Errore 1046) → NON REGISTRATO (Omissione del Logging) ❗
- CASO #3 (SET PASSWORD con commento) → NON REGISTRATO (Omissione del Logging) ❗
- CASO #1, #2A, #4 → REGISTRATI (Comportamento normale)
Questo progetto utilizza Docker Compose per eseguire tre istanze isolate di MariaDB:
| Versione | Porta | Stato | Descrizione |
|---|---|---|---|
| MariaDB 10.3.39 | 3306 | Vulnerabile | Verifica della versione stabile legacy |
| MariaDB 11.8.5 | 3307 | Vulnerabile | Verifica dell'ultima versione vulnerabile |
| MariaDB 11.8.6 | 3308 | Target | Valutazione delle recenti modifiche al logging di audit |
Compila e avvia i container MariaDB. L'ambiente configura automaticamente il plugin server_audit e inizializza gli utenti di test.
# Compila e avvia i container
docker compose up --build -d
# Verifica lo stato dei container
docker ps
Installa le dipendenze Python richieste:
pip install pymysql
Lo script può essere eseguito da qualsiasi directory all'interno del progetto.
python poc/poc.py
Il PoC esegue 5 scenari distinti:
SET PASSWORD con un commento # incorporato (verifica del bypass).SELECT con un commento # incorporato (verifica del bypass).REGISTRATO: La query è stata registrata correttamente nel log di audit.NON REGISTRATO: La query è stata omessa dal log (potenziale bypass o regressione).>> Log Effettivo: Mostra la voce grezza da server_audit.log in blu per verificare l'integrità dell'istruzione registrata.Di seguito sono riportati i log di esecuzione effettivi che mostrano la differenza tra il comportamento atteso (11.8.5) e l'omissione del logging (11.8.6).
[+] TEST_CASE_2_B_ERROR_1046
Risultato: REGISTRATO
>> Log Effettivo: | 20260504 04:45:05,...,QUERY,mysql,'SELECT * FROM user',1046
[+] TEST_CASE_3_COMMENT_SET_PASSWORD
Risultato: REGISTRATO
>> Log Effettivo: | 20260504 04:45:07,...,QUERY,mysql,'SET PASSWORD # CVE-2026-3494 Test ...',1133
[+] TEST_CASE_2_B_ERROR_1046 (Nessun database selezionato)
Risultato: NON REGISTRATO <-- Omissione rilevata
[+] TEST_CASE_3_COMMENT_SET_PASSWORD (Commento Inline #)
Risultato: NON REGISTRATO <-- Omissione rilevata
[!TIP] Per l'output terminale completo di tutti i casi di test e versioni, fare riferimento al Log di Esecuzione Completo.
.
├── config/ # Configurazione di MariaDB server_audit
├── init/ # Script di inizializzazione (Configurazione Utenti e Plugin)
├── logs/ # Montaggi del volume dei log di audit
├── poc/
│ └── poc.py # Script di verifica automatizzata
├── results/
│ └── full_execution_log.md # Log dettagliati dell'output del terminale
├── docker-compose.yml # Definizione dell'ambiente multi-versione
└── README.md # Documentazione del progetto (File corrente)
Questo progetto è destinato esclusivamente a scopi educativi e di ricerca sulla sicurezza. Utilizzalo in modo responsabile e non applicare queste configurazioni ad ambienti di produzione senza test approfonditi.