GPT-5.6 が WordPress の pre-auth RCE を$25で発見 — 「wp2shell」が示すAI脆弱性研究の転換点

はじめに

「エクスプロイトブローカーは WordPress の RCE に $500,000 を払う。私はそれを GPT-5.6 と $25 で見つけた」——挑発的なタイトルの記事が2026年7月中旬、Hacker News で341ポイントを集めた。Searchlight Cyber の Assetnote チームに所属する研究者 Adam Kues 氏が、OpenAI の GPT-5.6 Sol Ultra を WordPress のソースコードに向け、**未認証(pre-auth)のリモートコード実行(RCE)**チェーンを発見したという報告だ。この脆弱性は「wp2shell」と名付けられ、7月18日に WordPress が緊急パッチを強制配布する事態に発展した。本記事では、この脆弱性の技術的な中身と、AIが脆弱性研究の主役になりつつある現状の意味を掘り下げる。

何が起きたか — 「wp2shell」の全体像

wp2shell は単一のバグではなく、2つの脆弱性を連鎖させた攻撃チェーンだ。米国での CVE 採番は以下の通り。

  • CVE-2026-63030: WordPress REST API の「バッチ」エンドポイント(/wp-json/batch/v1)における検証と実行のずれ(desynchronization)
  • CVE-2026-60137: クエリパラメータ経由の SQL インジェクション

攻撃の起点はバッチAPIの実装ミスにある。このエンドポイントは、リクエスト内の複数操作を「検証ループ」と「実行ループ」の別々のループで処理する。ところがエラーが発生すると検証側の配列インデックスだけが進み、実行側の配列とズレる。この結果、攻撃者はあるエンドポイントの緩い検証を通しつつ、別のエンドポイントのハンドラを実行させることができてしまう。

このズレを使って到達できるのが SQLi のシンクだ。投稿一覧エンドポイントの author__not_in パラメータは、本来配列で渡されるべきところをスカラー文字列で渡すとエスケープが漏れる。バッチのインデックスずらしと組み合わせることで、認証なしで SQL インジェクションが成立する。Kues 氏によれば、モデルは数分のうちにこの SQLi を使って新規インストールから管理者メールアドレスを抽出したという。

技術的背景 — なぜ「RCEまで」到達できたのか

SQLi 単体では情報漏洩にとどまる。ここから RCE まで昇格させた過程こそ、この事例の核心だ。GPT-5.6 が組み立てたのは、WordPress 内部の複数の「ガジェット」を横断的につなぐ多段チェーンだった。

  1. キャッシュポイズニング: 偽の oEmbed エントリを使い、投稿オブジェクトのインメモリキャッシュに攻撃者制御のデータを注入する。
  2. 偽投稿の永続化: 埋め込み(embed)システムを悪用して、捏造した投稿をDBに書き込ませる。投稿の親子関係のサイクル検出処理が post_content を明示せずにメタデータを更新する際、キャッシュ上の汚染データがそのまま残る性質を突いている。
  3. 権限昇格: テーマ編集に使われる customize_changeset 投稿タイプを細工し、その適用処理の間だけ一時的に管理者権限に昇格させる。
  4. バックドア設置: 昇格した権限で parse_request フックを再トリガーし、認証を完全にバイパスして新規管理者アカウント作成とプラグインアップロードを実行する。

Kues 氏の手法で興味深いのは、OpenAI が数学の未解決問題(Cycle Double Cover 予想)向けに使ったプロンプトを流用した点だ。「コードの第一原理分析からRCEに至るチェーンを特定せよ」と指示し、最大4体のエージェントを同時展開して入力パース・シリアライズ・キャッシュ・競合状態を並行探索させた。さらに「changelog・Git履歴・ネット検索をヒントに使うな」と明示的に禁止し、純粋なコード解析に絞らせている。所要は約10時間、コストは週$200ティアで約$25。氏は「AIなしでこのチェーンを10時間で完成できる研究者はいない」と結論づけている。

エンジニアへの影響 — 攻撃と防御の両面

まず実務的な対応から。wp2shell は WordPress 6.9.0〜6.9.4、7.0.0〜7.0.1、7.1 beta が両脆弱性の影響を受け、6.8.x 系は SQLi コンポーネントのみ影響する。WordPress.org は7月18日に 7.0.2 を公開し、6.9.5・6.8.6 にもバックポートした上で、管理者の操作を待たず自動更新経由で全対象サイトへ強制配布した。影響規模は推定5億サイト超とされる。まだ更新できていない環境では、REST API をブロックするプラグインの導入や、WAF で /wp-json/batch/v1 を遮断する暫定策が案内されている(あくまでパッチ適用までの一時措置だ)。

より本質的な影響は、脆弱性研究のコスト構造が崩れた点にある。従来「成熟したソフトウェアの pre-auth RCE」は希少で高価だった——だからこそブローカーが$500k(ただしこの数字は記事内で裏付けが示されていない点に注意)を払う。それが汎用LLMへの$25の投資で再現されうるとなれば、攻撃者側のスケールが一変する。実際、UIUC の2024年の研究では GPT-4 が CVE 概要文だけで15件中87%の1-day脆弱性を突いており、AISLE プロジェクトは OpenSSL 3.6.1 で12件の新規CVEを自動発見している。防御側も Automated Program Repair への投資を進めているが、「人間のペースで攻撃コードが書かれる」前提の脅威モデルは、もはや現実に追いついていない。

まとめ

  • wp2shell は、バッチAPIの検証ずれ(CVE-2026-63030)と SQLi(CVE-2026-60137)を連鎖させた WordPress の pre-auth RCE。
  • GPT-5.6 Sol Ultra が約$25・10時間で発見し、キャッシュ汚染→権限昇格→バックドア設置の多段チェーンを自動構築した。
  • WordPress は 7.0.2 を緊急公開し、5億サイト超へ強制自動更新を配布した。使用中のサイトはバージョンを即確認すべきだ。
  • 脆弱性発見のコストが桁違いに下がった以上、「AIが書いたエクスプロイト」を前提とした脅威モデルと、人間の応答速度に依存しないパッチ運用への転換が急務となる。

AIが「バグをパターンで見つける」段階から「プログラマの意図と実装の乖離を理解して突く」段階へ移ったことを、wp2shell は具体的に示している。攻撃側の自動化が進むほど、防御側も自動更新やAPRのような機械速度の運用を標準にせざるを得ない——攻防のテンポそのものが書き換わりつつある。

ソース