30秒で判断
対応すべき人:
- MariaDB Connector/C 3.3.0〜3.3.18 または 3.4.0〜3.4.8 を使用している
- かつ、big5 文字セットでテキストプロトコルを使用している
- かつ、
mysql_real_escape_string()でエスケープしたユーザー入力をクエリに使用している
対応不要な人(skipIf):
- MariaDB Connector/C を使用していない(MySQLの公式Cクライアントのみ使用)
- big5 文字セットを使用していない(UTF-8 等の多くの文字セットは影響なし)
- プリペアドステートメント(PDO / MySQLi prepared statements)のみを使用している
- 修正済みバージョン(Connector/C 3.3.19+ または 3.4.9+)を使用している
確認コマンド:
# MariaDB Connector/C バージョン確認(Linuxの場合)
mariadb_config --version
# または
pkg-config --modversion libmariadb
概要
MariaDB Connector/C(C言語向けのMariaDBクライアントライブラリ)において、big5文字セットとテキストプロトコルの組み合わせで mysql_real_escape_string() を使用してもSQLインジェクションが発生する脆弱性(CWE-89)です。
本来 mysql_real_escape_string() は特殊文字をエスケープしてSQLインジェクションを防ぐ関数ですが、big5文字セットの特定のバイト列を利用することで、エスケープ処理を回避した悪意あるSQLを注入できます。big5はBig5という台湾の繁体字中国語エンコーディングで、特定の2バイト文字の末尾バイトが ASCII のシングルクォートやバックスラッシュと重なる問題に由来します。
PHPの mysqli_real_escape_string() など、内部でMariaDB Connector/Cを使用している場合も影響を受ける可能性があります。
CVSSベクトル
| 項目 | 値 | 意味 |
|---|---|---|
| Attack Vector (AV) | N (Network) | ネットワーク経由で攻撃可能 |
| Attack Complexity (AC) | L (Low) | 特殊条件不要 |
| Privileges Required (PR) | N (None) | 認証不要 |
| User Interaction (UI) | N (None) | ユーザー操作不要 |
| Scope (S) | U (Unchanged) | スコープ変更なし |
| Confidentiality (C) | H (High) | DBの機密情報漏洩 |
| Integrity (I) | H (High) | データの改ざん可能 |
| Availability (A) | H (High) | サービス停止可能 |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン | 修正バージョン |
|---|---|---|---|
| MariaDB Connector/C | MariaDB Foundation | 3.3.0〜3.3.18 | 3.3.19 |
| MariaDB Connector/C | MariaDB Foundation | 3.4.0〜3.4.8 | 3.4.9 |
修正バージョンと回避策
修正:
- MariaDB Connector/C 3.3.19 以降へアップデート
- MariaDB Connector/C 3.4.9 以降へアップデート
根本的な回避策(修正前でも有効):
- big5 文字セットの使用をやめ、UTF-8 (utf8mb4) に移行する
- プリペアドステートメントの使用:
mysql_stmt_prepare()/mysql_stmt_bind_param()を使用すれば、文字セットに関わらずSQLインジェクションは防止できる(最も推奨される対策)
関連リンク
データソース: NVD (NIST), GitHub Advisory Database
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
