PHP2Shell 漏洞由 GPT-5.6 Sol 与 Gemini 4 Argon 分别发现
长文解析 PHP 两个 CVE 组合导致的免登录代码执行漏洞,并提到 Wiz 用 GPT-5.6 Sol 和 Gemini 4 Argon 各自独立发现了同一处问题。

【今回のPHP脆弱性についての OpenAI の主張&中身の詳細を解説】 PHP2Shell、高市総理が X で注意喚起するところまで来ましたが、今回いちばん大きいと思うのは、見つけたのが AI だったことです。 引用ポスト見てもらいたいんですが、OpenAI の Patch the Planet という取り組みの中で、Calif の研究者が GPT-5.6 Sol を使って 8 月に最初のバグを見つけていて、Wiz も GPT-5.6 Sol と Gemini 4 Argon を使って、別々に同じところにたどり着いたと書いています。 で、 OpenAI は「攻撃者より先に AI で見つけた」と言っているんですが、一方で公開の前に情報が漏れて、パッチより先に PoC が出回ってしまったのも事実。 見つけるのも攻撃するのも AI で速くなっていくと、パッチが出てから狙われるまでの時間は、これからどんどん短くなっていくんだろうなと思います。 で、その AI が見つけたのがどういう穴なのか。自分は幸い PHP のサーバを立てていないので助かったんですが、「ログインなしのリクエスト 1 本で、サーバ上で好きなコードを動かされる」というのがどうして成り立つのか、PHP 公式や各社の解説が出揃ったので、少し解説します。 まず大事なのは、PHP はアプリのコードを動かす前に、送られてきたフォームやファイルアップロードの中身を自分で読み込んでいる、ということです。 index.php の 1 行目が動く頃にはもう読み込みは終わっているので、ここに穴があると、アプリ側でログインを求めていようが、どのフレームワークを使っていようが関係なく刺さってしまうんですよね。 今回はそこに 2 つのバグがあって、組み合わせて使われているようです。 ・1 つ目(CVE-2026-109618)は、リクエストの処理中にメモリの上限を超えたときの話。PHP はそこで処理を打ち切るんですが、中のデータがまだ準備しきれていないのに、後片付けの処理がそれを正常なデータとして扱ってしまう。 しかもアップロードの形式はヘッダをいくらでも付けられて、送ったサイズよりメモリ上ではずっと大きくなるので、サイズ制限の範囲内でもメモリを使い切らせることができてしまう ・2 つ目(CVE-2026-109619)は、PHP の処理役のプロセスがリクエストをまたいで使い回されるところ。前のリクエストで捨てたはずのメモリが、片付けが終わる前に次のリクエストから見えてしまう この 2 つがつながると、もう捨てたメモリを「まだ使っているデータ」として PHP に扱わせることができて、そこからコード実行まで持っていける、という流れです。 Datadog は PHP 8.5.11 で、ログインなしの POST だけで再現できたと報告していて、Sansec は捨てたメモリの中身がレスポンスの Cookie に乗って返ってくる、という話も書いています。 そこに他の人のリクエストのトークンや鍵が混ざっている可能性もあるみたいな、怖いことも書いてあります。。 一番危ないのは Apache に PHP を組み込んで動かしている構成(mod_php)で、こちらは読み込みに失敗しても必ず後片付けを走らせる作りなので、アプリのコードに一度も届かないまま攻撃が通ってしまうそうです。 PHP-FPM のほうは、理屈の上ではできそうだけどまだ完全には実証されていない、という段階のようです。 あと、「session.upload_progress を切れば大丈夫」という話が出回ってますが、Datadog も PHP 公式も、それでは防げないと言っています。 メモリ上限をいじるのも代わりにはならないので、結局アップデートするしかなくて、8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 のどれかに上げてください。 8.1 以前はサポートが切れていて修正版が出ていない(ソースのパッチだけ)ので、古いまま放っておかれているサーバが一番まずそうです。 PHP で何か公開している人は、まずはバージョンの確認からですね。 (ちなみにグラレコ風画像初めてやったんですが、 Claude Codeから agmsg 経由で Codexに「この内容でグラレコ風作って」で、Claudeが画像確認して修正依頼したりして、3往復くらいその2エージェントがしただけで、自分は何も指示せずできてました。めっちゃ簡単!)
这条是引用着另一条写的:x.com/openai/status/2112907856018309586