このプロジェクトは、SQLクエリ内で特定のインラインコメント(#、--)が使用された際に、MariaDBのserver_auditプラグインにおける潜在的な監査ログバイパスを検証・分析するための専用環境を提供します。
SET PASSWORDやError 1046のケース)が監査ログに記録されないことを確認しました。#)により、DCLステートメントが監査機能によって不適切に処理されたり、無視されたりする可能性があります。QUERY_DCL、QUERY_DDL、QUERY_DMLなどのフィルタを指定してserver_auditを有効にした場合、インラインコメントを含む特定のクエリがログ記録メカニズムをバイパスする可能性があります。以下のマトリクスは、テスト中に観察されたログ記録動作をまとめたものです:
[MariaDB 10.3.39 / 11.8.5]
- CASE #1, #2A, #2B, #3, #4 → すべてLOGGED(正常な動作)
[MariaDB 11.8.6 (対象バージョン)]
- CASE #2B (Error 1046) → NOT LOGGED(ログ記録漏れ)❗
- CASE #3 (コメント付きSET PASSWORD) → NOT LOGGED(ログ記録漏れ)❗
- CASE #1, #2A, #4 → LOGGED(正常な動作)
このプロジェクトはDocker Composeを使用して、3つの分離されたMariaDBインスタンスを実行します:
| バージョン | ポート | ステータス | 説明 |
|---|---|---|---|
| MariaDB 10.3.39 | 3306 | 脆弱 | レガシー安定版の検証 |
| MariaDB 11.8.5 | 3307 | 脆弱 | 最新の脆弱バージョンの検証 |
| MariaDB 11.8.6 | 3308 | 対象 | 最近の監査ログ記録変更の評価 |
MariaDBコンテナをビルドして起動します。環境は自動的にserver_auditプラグインを設定し、テストユーザーを初期化します。
# コンテナのビルドと起動
docker compose up --build -d
# コンテナの状態を確認
docker ps
必要なPython依存関係をインストールします:
pip install pymysql
スクリプトはプロジェクト内の任意のディレクトリから実行できます。
python poc/poc.py
PoCは5つの異なるシナリオを実行します:
#コメントが埋め込まれたSET PASSWORDコマンド(バイパスチェック)。#コメントが埋め込まれたSELECTステートメント(バイパスチェック)。LOGGED: クエリが監査ログに正常に記録されました。NOT LOGGED: クエリがログから省略されました(潜在的なバイパスまたはリグレッション)。>> Actual Log: 記録されたステートメントの整合性を検証するために、server_audit.logの生のエントリを青色で表示します。以下は、期待される動作(11.8.5)とログ記録漏れ(11.8.6)の違いを示す実際の実行ログです。
[+] TEST_CASE_2_B_ERROR_1046
Result: LOGGED
>> Actual Log: | 20260504 04:45:05,...,QUERY,mysql,'SELECT * FROM user',1046
[+] TEST_CASE_3_COMMENT_SET_PASSWORD
Result: LOGGED
>> Actual Log: | 20260504 04:45:07,...,QUERY,mysql,'SET PASSWORD # CVE-2026-3494 Test ...',1133
[+] TEST_CASE_2_B_ERROR_1046 (データベースが選択されていません)
Result: NOT LOGGED <-- 記録漏れを検出
[+] TEST_CASE_3_COMMENT_SET_PASSWORD (インラインコメント #)
Result: NOT LOGGED <-- 記録漏れを検出
[!TIP] すべてのテストケースとバージョンの完全なターミナル出力については、完全な実行ログを参照してください。
.
├── config/ # MariaDB server_audit設定
├── init/ # 初期化スクリプト(ユーザー&プラグイン設定)
├── logs/ # 監査ログボリュームマウント
├── poc/
│ └── poc.py # 自動検証スクリプト
├── results/
│ └── full_execution_log.md # 詳細なターミナル出力ログ
├── docker-compose.yml # マルチバージョン環境定義
└── README.md # プロジェクトドキュメント(現在のファイル)
このプロジェクトは教育およびセキュリティ研究目的のみで使用してください。責任を持って使用し、十分なテストなしに本番環境へこれらの設定を適用しないでください。