WordPressに存在する深刻な認証前リモートコード実行(RCE)脆弱性が、人間の研究者ではなくAIシステムによって発見されました。
この発見はOpenAIのGPT-5.6 Sol Ultraモデルによるものとされており、WordPressのBatch APIに潜む微妙な検証バイパスを、管理者権限の完全な乗っ取りとコード実行にまでつなげた、自動化された脆弱性調査の中でも極めて高度な事例と言えます。
脆弱性の起点は、WordPress 5.6で導入されたWordPress Batch API(/wp-json/batch/v1)にあります。このAPIは複数のREST APIリクエストを1回の呼び出しにまとめて送信できる機能です。
Batch APIは各サブリクエストを順次検証・実行するのではなく、まず全リクエストの検証を一括で行い、その後2回目のパスで実行するという設計になっています。
この2段階ループ設計に欠陥があり、バッチ内の1つのリクエストが不正な形式である場合、検証用の配列と「マッチしたハンドラー」の配列との間で同期がずれてしまいます。
この非同期状態を突くことで、攻撃者はあるエンドポイントを検証させながら、実際には全く別のエンドポイントを実行させることが可能になり、バッチでアクセス可能な任意のエンドポイントでパラメータのサニタイズを事実上バイパスできてしまいます。
Solは、この検証の不一致を、GET /wp/v2/postsのauthor_excludeパラメータに既存していたサニタイズの穴と組み合わせられることを突き止めました。
このパラメータは配列ではなくスカラー文字列として渡された場合、整数へのキャスト処理を完全にスキップしてしまい、そのまま生のSQLに直接埋め込まれてしまいます。
Batch APIは本来GETリクエストをネイティブにはサポートしていませんが、Solはこの制限を回避するために、あるバッチリクエストの中に別のバッチリクエストを入れ子にする再帰的なバッチ呼び出しを組み立て、認証前にこの脆弱なエンドポイントへ到達することに成功しました。
WordPressで漏洩する認証情報はハッシュ化されているため、データベースの読み取りアクセスだけでは乗っ取りには不十分でした。そこでSolは、UNIONベースのインジェクションを使い、リクエスト処理中に偽の投稿オブジェクトを捏造することで、WordPressのインメモリ投稿キャッシュを悪用しました。
これは、取得したコンテンツをoembed_cache投稿として保存するoEmbedキャッシュ機構と、親参照をリセットする投稿階層の循環検出ルーチンを悪用する形で行われました。
Solは、捏造したインメモリ投稿を実際のデータベース上の行と一致させるように WordPressに調整させる方法を見つけ出し、任意の投稿タイプとコンテンツを事実上データベースに植え付けることに成功しました。
この手法は、管理者のユーザーIDに紐づくテーマ/設定変更をステージングするためにWordPressが使用する仕組みであるcustomize_changeset投稿を偽造するために使われました。このチェンジセットを適用すると、リクエストのアイデンティティが一時的に管理者権限へと昇格します。
続いてSolは、これをparse_requestアクションフックへと連鎖させました。このフックはリクエスト解析パイプライン全体を処理途中で再起動させるもので、これにより保留中だった「管理者アカウント作成」リクエストが、昇格済みの権限のもとで成功するようになります。
不正な管理者アカウントが作成されてしまえば、最後のステップは容易です。そのアカウントでログインし、標準のWordPressプラグインインストーラーを通じて悪意のあるプラグインのZIPファイルをアップロードするだけで、サーバー上でのコード実行が達成されます。
Searchlight Cyberが公開した無料のスキャンツールがwp2shell.comで提供されており、公開の概念実証(PoC)エクスプロイトがより広く出回る前に、サイト管理者が自サイトの露出状況を確認できるようになっています。開示後まもなく、セキュリティ研究者のCalifとHacktronによる独立した再現も報告されています。
WordPressは全世界で推定5億以上のサイトで使われており、この脆弱性はデフォルトのMySQL構成において認証を一切必要としないことから、影響を受けるバージョンを運用しているサイト管理者は、緊急の対応事項としてパッチ適用に取り組むべきです。
より強固なプロアクティブ防御で、重大インシデントと金銭的損失を未然に防ぎましょう。15,000のSOCが利用するライブ脅威フィードを統合する
翻訳元: https://cyberpress.org/gpt-5-6-sol-ultra-wordpress-pre-auth-rce/