本文へ移動

AI Buildersのための最新のニュース、知見、事例を毎日お届け

運営会社
企業のセキュリティ対策

PHPに認証なしで乗っ取れる穴2つ 修正版とCodexの点検

PHPの開発元は10月21日、PHP 8.5.12、8.4.27、8.3.36、8.2.35を出し、認証なしでサーバー上のコードを動かされうる2つの重大な脆弱性を直した。php2shellと呼ばれ、Calif、OpenAI、Wizなどが見つけた。OpenAIは公開サイトや手元のPHPの版を調べるCodex向けのスキルを公開し、Cloudflareは無料プランを含むWAFで防御を始めた。ただし、どちらもPHPの更新の代わりにはならない。

記事の内容を自社でどう進めるか、内容が固まっていない段階でも相談できます。仕事の相談

毎週 1 回、その週の記事から 5 本と実践の 1 本を選んでメールで届けます。ニュースレターを購読する(無料)

PHPに認証なしで乗っ取れる穴2つ 修正版とCodexの点検

PHPの開発元は10月21日、PHP 8.5.12、8.4.27、8.3.36、8.2.35を公開した。直したのは、条件がそろうと認証なしでサーバー上のコードを動かされる2つの重大な脆弱性である。php2shellと呼ばれる。PHPを運営面で支えるPHP Foundationは、PHPを動かしている人は「今すぐ更新を」と呼びかけた。Claude CodeやCodexでWordPressや小さなサービスを作り、自分でサーバーを持っている人にも関係する。

メモリーの後始末に潜んだ2つの穴

PHP Foundationの説明によると、1つ目のCVE-2026-109618は、リクエストがmemory_limitにちょうど悪い瞬間に達すると、作りかけの内部データを残し、後で正しいものとして扱ってメモリーを壊す問題だ。Apacheとmod_phpの組み合わせでは、アプリのコードが動く前に認証なしのリクエストで起こせ、初期設定のままコードを動かせることが示された。PHP-FPMでも、アプリ側の処理を通じた実行が確かめられたという。

2つ目のCVE-2026-109619は、致命的なエラーで処理が止まると、前のリクエストのメモリーを指したままの状態が残る問題だ。同じワーカーが次のリクエストを受けた時に、解放済みのメモリーを使ってしまう。報告者は、Apacheとmod_phpで動く実在のアプリに対し、コードの実行を示した。

Cloudflareの説明では、影響はPHP 5.4以降のすべてのWebサーバーに及ぶ。PHPの実行環境そのものの穴なので、アプリやプラグインを更新しても直らない。レンタルサーバーなどでPHPを事業者が管理しているなら、事業者に更新を頼む必要がある。

2年前の兆しを外部監査とAIが掘り起こす

PHP Foundationは、見つかった経緯も隠さず書いた。1つ目の根っこは2024年の外部監査の後に兆しが見つかっていたが、攻撃の道筋が見えず、直し方の選択で合意できないまま、作業は何度も止まった。Foundationはこの遅れを「構造的な失敗」と認めている。

動いたのは2026年8月だ。Patch the Planetという取り組みで監査に入ったCalifの研究者が8月11日、同じ根っこを持つ無条件のコード実行を報告した。OpenAIも同じ日に、独立に同じ根っこを報告した。PHP Foundationによると、8月24日にWiz、9月18日にOpenAIが別の攻撃の道筋を足した。Foundationは今年、AnthropicのClaude MythosでPHPを調べたほか、報告と攻撃手順の検証にOpenAIのDaybreak Redを使っているという。AIを使う調査が広がり、届く報告もずっと増えたと書いている。

Codexで自分のサイトを点検する

OpenAIは、点検の道具をphp2shell-checkerとして公開した。ライセンスはApache 2.0だ。Codexに「$skill-installer install both skills from https://github.com/openai/php2shell-checker」と頼むと2つのスキルが入る。サーバーに入れるならphpcheck-server、URLしか無いならphpcheck-urlを使う。Codexを使わず、node phpcheck.jsで直接動かすこともできる。

ただし、READMEは限界をはっきり書いている。見るのはHTTPの応答のX-Powered-ByとServerの欄か、php -vの表示だけだ。欄を隠していれば結果はUNKNOWNになり、「UNKNOWNは直っているという意味ではない」。Linuxの配布元が修正だけを古い版に入れた場合は、版の番号が変わらないこともある。OKと出ても、公式の修正版の一覧と突き合わせるのが前提である。

Cloudflareは無料プランも防御

Cloudflareは、日本時間10月21日12時2分から、無料と有料のWAFを使う顧客を初期設定のまま守ったと書いた。公開日より前にCVEの番号が先に漏れ(技術の中身は漏れていないとFoundationは説明)、顧客を狙う攻撃の通信も見えたという(会社の申告)。今回の防御では、リクエストとサーバーの応答を1組で見て、攻撃が通った応答を相手に返す前に止める新しい仕組みを初めて使った。それでもCloudflare自身が、WAFは守りを重ねる1枚であり、PHPは更新すべきだと書いている。

編集部の見方

AIで脆弱性を探す流れは、攻める側にも守る側にも速さをもたらしている。今回は外部の監査とAIを使う調査が2年前の兆しを本物の穴として示し、報告した会社の1つが点検のスキルも配った。小さなチームが今日やることは単純で、まず自分のサーバーのPHPの版を見て、修正版に上げることだ。Codexのスキルは入口の確認には便利だが、UNKNOWNやOKの意味を取り違えると、直っていないサーバーを見逃す(編集部の読み)。

出典

に確認(日本時間)

  1. PHP Foundationの説明(thephp.foundation)
  2. Cloudflareの説明(blog.cloudflare.com)
  3. php2shell-checker(github.com)

この記事をシェア

この記事は役に立ちましたか