CVSS 8.8High

CVE-2019-8942/8943: 画像アップロードからリモートコード実行

概要

  • CVE: CVE-2019-8942 + CVE-2019-8943
  • 影響バージョン: WordPress 3.9 〜 5.0.0(CVE-2019-8942)、4.9.9 / 5.0.1未満(CVE-2019-8943)
  • CVSS: 8.8 (High)
  • 認証: Author権限(投稿者権限)が必要
  • 種別: パストラバーサル + リモートコード実行(RCE)

2019年2月、WordPressの画像クロップ(トリミング)機能に、Author権限だけでサーバー上で任意のコードを実行できる致命的な脆弱性が発見されました。2つのCVEを組み合わせることで攻撃が成立します。

何が起きたか

この脆弱性は2つの問題の組み合わせで成立します:

CVE-2019-8942(Post Metaの上書き): 画像の wp_postmeta を操作することで、添付ファイルの保存パスを任意の場所に変更できました。

CVE-2019-8943(パストラバーサル): 画像のクロップ処理において、保存先パスの検証が不十分で、../ を使ったパストラバーサルが可能でした。

この2つを組み合わせると:

  1. 悪意のあるPHPコードをEXIF情報に埋め込んだ画像をアップロード
  2. Post Metaを操作して保存先をテーマディレクトリに変更
  3. 画像クロップ機能を使ってパストラバーサルでテーマディレクトリに書き込み
  4. テーマファイルとして実行される → リモートコード実行

攻撃の仕組み

攻撃フロー:

  1. 悪意のある画像の準備: JPEG画像のEXIFメタデータにPHPコードを埋め込む
# exiftoolで画像にPHPコードを埋め込み
exiftool -ImageDescription='<?php system($_GET["cmd"]); ?>' innocent.jpg
  1. 画像をWordPressにアップロード: Author権限で通常の画像アップロードを実行

  2. Post Metaの操作: _wp_attached_file メタデータを操作して、保存パスにパストラバーサルを含める

例: 2019/02/image.jpg を 2019/02/image.jpg#/../../../wp-content/themes/theme/evil.jpg に変更
  1. クロップ実行: 画像編集画面でクロップを実行すると、操作されたパスにクロップ後の画像が保存される

  2. コード実行: テーマディレクトリに保存された画像(PHPコードを含む)にアクセスすることで、任意のコードが実行される

実際の被害

  • WordPress 3.9〜5.0.0 の全バージョンが影響(約5年分)
  • Author権限(投稿者権限)だけでサーバーの完全な制御権を取得可能
  • 共有ホスティング環境では、同一サーバー上の他のサイトにも被害が波及する可能性
  • 多くの企業サイトで外部ライターにAuthor権限を付与しており、内部脅威のリスクが顕在化
  • セキュリティ研究者RIPS Techが発見し、WordPressチームに報告してから修正まで時間を要した

修正と教訓

修正: WordPress 5.0.1 / 4.9.9で修正。パストラバーサルの防止と、Post Metaの不正な操作を防ぐバリデーションが追加されました。

教訓:

  1. 最小権限の原則: Author権限でもRCEが可能 — 権限は必要最小限に
  2. ファイルアップロードの危険性: 画像ファイルでもコードを含められる
  3. 複合脆弱性のリスク: 個別には低リスクな問題が組み合わさると致命的になる
  4. EXIFデータの危険性: アップロードされたファイルのメタデータも検証が必要
  5. 共有ホスティングのリスク: 1サイトの侵害が同一サーバーの他サイトに波及

Nyambushでの検出

NyambushはWordPressのバージョンを検出し、この脆弱性の影響を受けるバージョンを使用している場合、CVSSスコア8.8とともに「高」の警告を表示します。

特にAuthor権限を外部の人間に付与しているサイトでは、この種の権限昇格脆弱性は極めて危険です。定期的なバージョン監視が不可欠です。

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

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

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