OpenAI の php2shell-checker とは何ですか?
php2shell-checker は、OpenAI が PHP2Shell(CVE-2026-109618・CVE-2026-109619)の協調公開に合わせて 2026年10月21日に公開したオープンソースのツールです(Apache 2.0 ライセンス)。短い Node.js のスクリプトで、二つのモードがあります。
- URL モード:サイトに HEAD リクエストを送り、
X-Powered-ByとServerヘッダーから PHP のバージョンを読みます。HEAD が拒否されたときだけ GET を使い、リダイレクトは追わず、ページの中身も読みません。 - ローカルモード:そのマシンで
php -vを実行してバージョンを読みます。
読み取ったバージョンを、5.4 から 8.5 までの系列ごとの「最後の脆弱なバージョン」の表と比べます。攻撃に当たる通信は送りません。
OpenAI のチェッカーはどう実行しますか?
Node.js と、GitHub から取得したリポジトリが必要です。リポジトリのフォルダで次のように実行します。
- サーバー上でコマンドラインの PHP を確認:
node phpcheck.js --local - 自分のサイトを確認:
node phpcheck.js "https://自分のサイト" - 機械で読める形式にするには
--jsonを付けます。
URL モードは、自分が管理しているサイトにだけ使ってください。--local が見るコマンドラインの PHP は、サイトを動かしている PHP と違うことがあります。WordPress なら「ツール → サイトヘルス → 情報 → サーバー」でサイト側のバージョンも確認してください。
OK・VULNERABLE・UNKNOWN は何を意味しますか?
| 結果 | 終了コード | ツールの意味 | すること |
|---|---|---|---|
OK | 0 | 系列の最後の脆弱なバージョンより新しい | サイトで実際に動いているバージョンか、PHP を再起動したかを確認 |
VULNERABLE | 1 | 最後の脆弱なバージョン以下 | PHP を更新(配布元が修正を取り込んでいる場合は下記参照) |
UNKNOWN | 3 | バージョンが見つからない、表にない系列、プレリリース | 管理画面やサーバー上でバージョンを確認 |
UNKNOWN は安全という意味ではありません。きちんと設定されたサーバーの多くはヘッダーで PHP のバージョンを隠すため、URL モードでは UNKNOWN になることがよくあります。
OpenAI のチェッカーが間違えやすいのはどんなときですか?
このツールはバージョンの番号だけを比べます。OpenAI 自身も、OK は修正を独自に確認したものではないと説明しています。実際に問題になるのは次の三つです。
- 配布元のバックポート:Ubuntu、Debian、Red Hat などは番号の古い PHP パッケージにも修正を入れます。修正済みの
8.3.6-0ubuntu0.24.04.13でも VULNERABLE と出ます。Ubuntu での PHP 更新をご覧ください。 - 管理パネルや配布元の独自番号:古い系列では、PHP が出していない番号でも上限より大きければ OK と出ます。宝塔や aaPanel は 7.4.34 や 8.1.35 という修正版を出していますが、8.0.27 は宝塔の修正版であると同時に、修正を含まない PHP の旧版の番号でもあります。
- ヘッダー:プロキシや CDN が
X-Powered-Byを隠したり書き換えたりします。1 台のサーバーで、バージョンの違う複数のサイトが動いていることもあります。
当サイトの PHP2Shell チェッカーと組み合わせるには?
ツールの出力を、PHP2Shell チェッカーのバージョン欄にそのまま貼り付けてください。--json の出力、OK: PHP 8.3.36 のような行、php -v の出力、X-Powered-By: PHP/8.3.36 のヘッダーからバージョンを取り出します。そのうえで PHP の入手元(OS のパッケージ、宝塔 / aaPanel、その他の管理パネルなど)を選ぶと、番号だけでは分からないバックポートや管理パネルの修正版も考慮して判定します。判定はブラウザーの中だけで行い、貼り付けた内容はどこにも送りません。
修正版は次のとおりです。
| 系列 | 最初の修正版 |
|---|---|
| PHP 8.2 | 8.2.35 |
| PHP 8.3 | 8.3.36 |
| PHP 8.4 | 8.4.27 |
| PHP 8.5 | 8.5.12 |
| 8.1 以前 | 新しいリリースなし(7.4・8.0・8.1 は公式ソースパッチあり) |
影響を受けると出た場合は、php2shell 対処法で自分の環境の手順を確認してください。更新後は侵害の確認方法で、それ以前の侵入がないかも確認しましょう。
php2shell.help で URL を確認してもらえますか?
はい。PHP2Shell チェッカーの URL 欄に入れると、同じ方法でサイトのヘッダーを読み、当サイトの基準で判定します。サーバー上で php -v を読む --local は、ツールを自分で実行すると便利です。
OpenAI のチェッカーで OK と出ました。PHP2Shell は大丈夫ですか?
そうとは限りません。OK は、示されたバージョンが系列の最後の脆弱なバージョンより新しいという意味だけで、修正そのものは確認していません。ヘッダーは書き換えられることもあります。サイトで実際に動いているバージョンと、PHP の再起動を確認してください。
情報源
このページの主要な事実(修正版、CVE の内容、配布元のパッケージ、公的機関の呼びかけ)は公式の情報源にもとづいています。研究者の報告、報道、コミュニティの投稿はそれぞれ区別して表示しています。
- php2shell-checker: check a website or local PHP binary for php2shell研究 OpenAI (GitHub)
- Security advisory: Critical remote code execution vulnerabilities, update now公式 The PHP Group
- RCE via OOM corruption公式 The PHP Group
- RCE via stale global state公式 The PHP Group
- Site Health screen公式 WordPress.org