CVSS 7.5High

CVE-2022-21661: WP_QueryのSQLインジェクション

概要

  • CVE: CVE-2022-21661
  • 影響バージョン: WordPress 3.7 〜 5.8.2(約8年分のバージョン)
  • CVSS: 8.0 (High)
  • 認証: 状況による(プラグイン経由で未認証攻撃の可能性)
  • 種別: SQLインジェクション

2022年1月、WordPressのコアクラス WP_Query にSQLインジェクション脆弱性が発見されました。WordPress 3.7以降のほぼすべてのバージョンに影響する、非常に影響範囲の広い脆弱性です。

何が起きたか

WP_Query はWordPressで最も基本的なデータベースクエリクラスで、投稿の取得、検索、フィルタリングなど、あらゆる場面で使用されます。

問題は WP_Querytax_query パラメータにおける termsfield の処理にありました。field パラメータが tt_ids に設定された場合、terms の値が適切にサニタイズされずにSQLクエリに組み込まれていました。

// 脆弱なコード(簡略化)
$terms = $tax_query['terms'];
// $terms がサニタイズされずに SQL に組み込まれる
$sql = "SELECT ... WHERE tt.term_taxonomy_id IN ($terms)";

攻撃の仕組み

この脆弱性は直接的にはWordPressのコアUIからは悪用しにくいものの、WP_Query を使用するプラグインやテーマ経由で攻撃可能でした:

  1. ユーザー入力を WP_Querytax_query パラメータに渡すプラグインを特定
  2. fieldtt_ids を指定し、terms にSQLインジェクションペイロードを挿入
  3. データベースから任意のデータを抽出

多くのプラグインが検索機能やフィルタリング機能で WP_Query を使用しているため、攻撃の入口は多数存在しました。

実際の被害

  • WordPress 3.7〜5.8.2 のすべてのバージョンが影響を受けた(約8年分)
  • 公開時点で世界のWordPressサイトの大多数が潜在的に脆弱
  • WP_Query を使用する数千のプラグインが間接的に影響
  • 実際の大規模攻撃の報告は限定的だったが、標的型攻撃での悪用が懸念された
  • WordPress 3.7〜3.8というセキュリティ自動更新の対象外バージョンにも影響

修正と教訓

修正: WordPress 5.8.3で修正。WP_Querytax_query 処理で terms パラメータに対する適切なサニタイズが追加されました。WordPress 3.7以降のすべてのバージョンにバックポートパッチが提供されました。

教訓:

  1. コアコードでも脆弱性は存在する: WordPress本体のコアクラスに8年間潜んでいた
  2. 間接的な影響の広さ: コアの脆弱性はそれを使用する全プラグインに波及する
  3. バージョンアップの重要性: 古いバージョンはセキュリティ自動更新の対象外になる可能性がある
  4. 入力バリデーションの徹底: ユーザー入力をクエリパラメータに渡す際は必ずサニタイズが必要

Nyambushでの検出

NyambushはWordPressのバージョンを検出し、CVEデータベースと照合します。WP_Queryの脆弱性のように、コア自体に影響するCVEが存在するバージョンを使用している場合、CVSSスコアとともに警告を表示します。

自動更新を有効にしていても、更新が失敗するケースがあります。Nyambushの定期スキャンで、実際に稼働しているバージョンを継続的に監視することが重要です。

この記事をシェア:Xでポスト

あなたのドメインは安全ですか?

Nyambushで今すぐ無料スキャンして、セキュリティリスクをチェックしましょう。