Windows の PHP も PHP2Shell の影響を受けますか?
受けます。PHP2Shell(CVE-2026-109618・CVE-2026-109619)は PHP 本体の脆弱性なので、修正版より古い PHP を動かしている Windows サーバーや PC は、Web サーバーの種類にかかわらず対象です。IIS では PHP は FastCGI(php-cgi.exe)で動き、これは PHP のセキュリティ告知が更新を求める Web 向けの構成です。修正版は次のとおりです。
| 系列 | 最初の修正版 |
|---|---|
| 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 は公式ソースパッチあり) |
IIS が使っている PHP のバージョンはどう確認しますか?
コマンドラインではなく、IIS が呼び出している PHP を確認します。コマンドプロンプトの php -v は PATH 上で最初に見つかった php.exe の結果で、IIS の php-cgi.exe とは別のコピーのことがあります。IIS マネージャーの「ハンドラー マッピング」で *.php の実行ファイルのパスを見れば、サイトが使う PHP のフォルダーが分かります。Web 側では WordPress のサイトヘルスや一時的な php_sapi_name() のページで確認でき、IIS なら cgi-fcgi と表示されます。確認用のページは終わったら削除してください。ほかの方法は PHP バージョンの確認方法にあります。
Windows 版の修正済み PHP は出ていますか?
出ています。2026年10月21日に、4つの修正版すべての Windows 版が公式の Windows リリースフォルダーに公開されました。以前の windows.php.net のダウンロードページは現在 php.net の Windows ダウンロードに転送され、ファイルサイズと SHA256 が載っています。IIS 向けの x64・NTS 版は次のファイルです。
| PHP の系列 | ファイル(NTS・x64) | コンパイラ |
|---|---|---|
| 8.2 | php-8.2.35-nts-Win32-vs16-x64.zip | VS16 |
| 8.3 | php-8.3.36-nts-Win32-vs16-x64.zip | VS16 |
| 8.4 | php-8.4.27-nts-Win32-vs17-x64.zip | VS17 |
| 8.5 | php-8.5.12-nts-Win32-vs17-x64.zip | VS17 |
Thread Safe 版と x86 版も同じフォルダーにあります。PHP のページによると、実行には Visual C++ 再頒布可能パッケージ(Visual Studio 2015-2022)が必要です。7.4・8.0・8.1 の Windows 版は新しく出ておらず、最新のファイルは PHP2Shell より前の 2024年・2025年のものです。
IIS の PHP はどの手順で更新しますか?
- 今使っている系列の NTS・x64 の zip をダウンロードし、php.net に載っている SHA256 と照合します。非公式のミラーや同梱パッケージの zip は使わないでください。
- 新しいフォルダーに展開し、今の
php.iniをコピーします。独自に入れている拡張機能が新しいビルド用にあるかも確認します。 - IIS マネージャーで
*.phpのハンドラー マッピングと FastCGI の設定を、新しいフォルダーのphp-cgi.exeに向けます。この設定と APPCMD での自動化は PHP の IIS 向けインストール手順に載っています。 - Visual C++ 再頒布可能パッケージが入っていなければ入れます。
同じ系列のまま(8.3.x から 8.3.36 など)更新すれば、アプリの互換性の問題を避けやすくなります。系列を上げるのは別の作業として計画してください。
IIS の再起動と確認はどうしますか?
古い php-cgi.exe のプロセスが残らないよう、IIS を再起動します。IIS マネージャーでサーバーのノードを選んで「操作」ペインの「再起動」を押すか、管理者のコマンドプロンプトで iisreset /restart を実行します(Microsoft の IIS の手順))。再起動中は接続中のセッションが切れるので、アクセスの少ない時間に行ってください。その後サイトヘルスなどで新しいバージョンを確認し、PHP バージョンチェッカーで判定します。Windows で Apache を使っている場合は Thread Safe 版を使い、入れ替え後に Apache のサービスを再起動します。
すぐに更新できない場合は?
php.ini で session.upload_progress.enabled を無効にする、post_max_size を下げるといった PHP 公式の暫定策を入れ、IIS を再起動します。特定の攻撃経路を防ぐだけなので、暫定対策のページで一覧と限界を確認してください。
Windows で PHP 7.4・8.0・8.1 を使っている場合は?
PHP 公式の 7.4・8.0・8.1 向け修正はソースパッチだけで、Windows 版のバイナリは出ていません。Windows では 8.2 以降へ上げるのが現実的な対策です。PHP のサポート終了で選択肢を確認し、PHP2Shell の対処法と PHP2Shell チェッカーで状況を確かめてください。XAMPP などの同梱パッケージを使っている場合は XAMPP の PHP バージョンを見てください。
IIS には Thread Safe と Non Thread Safe のどちらを使いますか?
Non Thread Safe(NTS)です。PHP のダウンロードページは、NTS を FastCGI(IIS の方式)向け、Thread Safe を Apache のモジュール向けと説明しており、x64 版を推奨しています。
Windows Update で PHP2Shell は修正されますか?
されません。PHP は php.net から別に入れるソフトで、Windows の一部ではないためです。新しい PHP の zip を自分で入れるか、PHP を同梱した製品の更新を待つ必要があります。
情報源
このページの主要な事実(修正版、CVE の内容、配布元のパッケージ、公的機関の呼びかけ)は公式の情報源にもとづいています。研究者の報告、報道、コミュニティの投稿はそれぞれ区別して表示しています。
- 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
- php_sapi_name公式 The PHP Group
- Site Health screen公式 WordPress.org
- Windows releases directory公式 The PHP Group
- Downloads & Installation Instructions (Windows)公式 The PHP Group
- Installation on Windows with IIS公式 The PHP Group
- Start or Stop the Web Server (IIS 8)事業者 Microsoft