
Reproduit et analyse CVE-2026-3494, une contournement de la journalisation d'audit dans le plugin server_audit de MariaDB, en utilisant des tests multi-versions basés sur Docker pour comparer le comportement de journalisation entre les versions vulnérables et corrigées.
Ce projet fournit un environnement spécialisé pour vérifier et analyser un contournement potentiel de l'audit de journalisation dans le plugin server_audit de MariaDB lorsque des commentaires inline spécifiques (#, --) sont utilisés dans des requêtes SQL.
SET PASSWORD avec commentaires ou cas d'Erreur 1046) ne sont pas enregistrées dans le journal d'audit dans MariaDB v11.8.6, qui était auparavant considéré comme une version corrigée.#) pourraient entraîner un traitement ou une ignorance inappropriés des instructions DCL par l'auditeur.server_audit est activé avec des filtres tels que QUERY_DCL, QUERY_DDL et QUERY_DML, certaines requêtes contenant des commentaires inline peuvent contourner le mécanisme de journalisation.La matrice suivante résume le comportement de journalisation observé lors des tests :
[MariaDB 10.3.39 / 11.8.5]
- CAS #1, #2A, #2B, #3, #4 → TOUS JOURNALISÉS (Comportement normal)
[MariaDB 11.8.6 (Version cible)]
- CAS #2B (Erreur 1046) → NON JOURNALISÉ (Omission de journalisation) ❗
- CAS #3 (SET PASSWORD commenté) → NON JOURNALISÉ (Omission de journalisation) ❗
- CAS #1, #2A, #4 → JOURNALISÉS (Comportement normal)
Ce projet utilise Docker Compose pour exécuter trois instances MariaDB isolées :
| Version | Port | Statut | Description |
|---|---|---|---|
| MariaDB 10.3.39 | 3306 | Vulnérable | Vérification de la version stable héritée |
| MariaDB 11.8.5 | 3307 | Vulnérable | Vérification de la dernière version vulnérable |
| MariaDB 11.8.6 | 3308 | Cible | Évaluation des récents changements de journalisation d'audit |
Construire et démarrer les conteneurs MariaDB. L'environnement configure automatiquement le plugin server_audit et initialise les utilisateurs de test.
# Construire et démarrer les conteneurs
docker compose up --build -d
# Vérifier l'état des conteneurs
docker ps
Installer les dépendances Python requises :
pip install pymysql
Le script peut être exécuté depuis n'importe quel répertoire du projet.
python poc/poc.py
Le PoC effectue 5 scénarios distincts :
SET PASSWORD avec un commentaire # intégré (Vérification du contournement).SELECT avec un commentaire # intégré (Vérification du contournement).JOURNALISÉ : La requête a été enregistrée avec succès dans le journal d'audit.NON JOURNALISÉ : La requête a été omise du journal (Contournement potentiel ou régression).>> Journal réel : Affiche l'entrée brute de server_audit.log en bleu pour vérifier l'intégrité de l'instruction enregistrée.Voici les journaux d'exécution réels montrant la différence entre le comportement attendu (11.8.5) et l'omission de journalisation (11.8.6).
[+] TEST_CASE_2_B_ERROR_1046
Résultat : JOURNALISÉ
>> Journal réel : | 20260504 04:45:05,...,QUERY,mysql,'SELECT * FROM user',1046
[+] TEST_CASE_3_COMMENT_SET_PASSWORD
Résultat : JOURNALISÉ
>> Journal réel : | 20260504 04:45:07,...,QUERY,mysql,'SET PASSWORD # CVE-2026-3494 Test ...',1133
[+] TEST_CASE_2_B_ERROR_1046 (Aucune base de données sélectionnée)
Résultat : NON JOURNALISÉ <-- Omission détectée
[+] TEST_CASE_3_COMMENT_SET_PASSWORD (Commentaire inline #)
Résultat : NON JOURNALISÉ <-- Omission détectée
[!TIP] Pour la sortie terminal complète de tous les cas de test et versions, consultez le Journal d'exécution complet.
.
├── config/ # Configuration de server_audit de MariaDB
├── init/ # Scripts d'initialisation (Configuration utilisateur et plugin)
├── logs/ # Montages de volumes du journal d'audit
├── poc/
│ └── poc.py # Script de vérification automatisé
├── results/
│ └── full_execution_log.md # Journaux de sortie terminal détaillés
├── docker-compose.yml # Définition de l'environnement multi-versions
└── README.md # Documentation du projet (Fichier actuel)
Ce projet est destiné uniquement à des fins éducatives et de recherche en sécurité. Utilisez-le de manière responsable et n'appliquez pas ces configurations à des environnements de production sans tests approfondis.