PHP2Shell対策:自社管理サーバーのPHPを修正版に更新する手順(Ubuntu・Debian・RHEL・Windows・XAMPP・AppServ・Docker)
PHP2Shell対策として、Ubuntu、RHEL、Windows、XAMPP、DockerでPHPを修正版に更新する公式手順と、再起動・確認の方法を解説します。
PHP2Shell対策:自社管理サーバーのPHPを修正版に更新する手順(Ubuntu・Debian・RHEL・Windows・XAMPP・AppServ・Docker)
2026年10月21日、PHPは 8.5.12、8.4.27、8.3.36、8.2.35 をリリースし、PHP2Shellと呼ばれる2件の脆弱性を修正しました(脆弱性の詳細)。自社管理サーバーでの更新手順をプラットフォームごとにまとめます。
結論: PHPを導入した経路で更新し、設定を済ませてからPHP-FPMまたはApacheを再起動して新しいバイナリを読み込ませ、パッケージをアドバイザリーと照合します。多くの配布元で10月21〜23日に修正版が出ていますが、状況は配布元とブランチによって異なります。修正版がない例はLinux/macOS版XAMPP、AppServ、8.1/8.0のDockerイメージです。修正版のないホストはインターネットから到達できない状態にしてください。
どのホストでどのPHPが動いているか不明なら、先にPHPバージョンの確認方法をご覧ください。cPanelやPleskはホスティングパネル編、アプライアンスはPHPを内蔵する製品編で扱います。
修正版の提供状況(2026年10月25日時点)
10月25日時点の状況です(日付はUTC)。リンク先の配布元の最新情報と食い違う場合は、配布元を優先してください。
| プラットフォーム | 修正版 | バージョンの見え方 |
|---|
| Ubuntu 22.04 / 24.04 / 26.04 | あり、USN-8948-1(10月21日) | 独自の番号(24.04は 8.3.6-0ubuntu0.24.04.13) |
| Ubuntu 14.04〜20.04 | Ubuntu Proのみ、USN-8948-2(10月21日) | USNのとおり |
| Debian 12 / 13 | あり、DSA-6574-1(10月21日)とDLA-4848-1(トラッカー) | 8.2.35-1~deb12u1、8.4.27-1~deb13u1 |
| ondrej/php PPA、packages.sury.org | あり(10月21日) | 上流の番号 |
| RHEL 8 / 9 / 10 | ほぼ全ストリーム、RHSA(10月21日) | 9の php:8.4 はAffected |
| AlmaLinux 8 / 9 / 10 | 告知に記載のストリーム(10月21日) | 上流より小さい番号、末尾 .alma.1 |
| Rocky Linux 8 / 9 / 10 | あり、RLSA(10月22日) | Rocky 9の php:8.4 はRLSA未確認 |
| Remi(EL 8以降) | あり、Remiの告知(10月22日) | 上流の番号 |
| Windows(php.netのzip) | あり、windows.php.net(10月21日) | 8.2.35、8.3.36、8.4.27、8.5.12 |
| XAMPP for Windows | 8.3.36、8.4.27、8.5.12(Apache Friends、10月23日) | 8.2.35はなし |
| XAMPP for Linux | なし(SourceForge) | 最新は8.2.12(2023年) |
| XAMPP for macOS | なし(SourceForge) | 最新は8.2.4 |
| AppServ | なし(appserv.org) | 9.3.0はPHP 7.3.10(2019年) |
公式Dockerイメージ php | 8.2.35、8.3.36、8.4.27、8.5.12のタグ(Docker Hub) | 8.1・8.0はなし |
番号が小さくても未修正とは限りません。UbuntuとAlmaLinuxは既存の番号のまま修正を取り込んでいます。
1. 再起動の前に:設定を済ませる
以下は後述の再起動より前に、php.ini、FPMプール、またはサーバー設定で設定します(php.netは ini_set() や .user.ini に頼らないよう求めています)。再起動後はSophosの推奨どおりCLIではなくWebリクエストで有効な値を確認し、確認はアクセス制限付きのページで行います(phpinfo() の公開は不可)。
session.upload_progress.enabled=0: php.net(10月23日、PHP2Shellとは別件のCVE-2026-115560)は、次の定例バグ修正リリースまでこの設定を推奨しています。
memory_limit: -1 にしていた場合のみ。第三者のSansecは上限を戻すよう推奨しています。GHSA-w8hw-w9fx-j79w によれば、修正で _exit() によるハードOOMが加わります。
2. UbuntuとDebian
-
ディストリビューションから更新: UbuntuのAbout CVEsページによれば、次のコマンドはインストール済みの全パッケージを更新し、sudoが必要です。個別のパッケージだけを選ぶ更新は推奨されていません。
sudo apt update && sudo apt upgrade
DebianのSecurity FAQも、root権限での apt-get update と apt-get upgrade(全パッケージが対象)を示しています。
-
バージョンに deb.sury.org を含む場合: Ondřej Surý氏のリポジトリ由来です。PPA(Ubuntu 22.04、24.04)とpackages.sury.org(Debian 12、13)には10月21日から8.2.35、8.3.36、8.4.27、8.5.12があり、上記のコマンドで取得できます。同じ配布元の8.1、8.0、7.4の新ビルドは、CVE修正を含むという公式な確認がありません。旧バージョンPHP編をご覧ください(Ubuntu 14.04〜20.04もこちら)。
-
再起動: ThaiCERTは、更新後にPHPワーカーと関連するWebサーバーを再起動し、修正済みバイナリを読み込ませるよう求めています。mod_phpならApache、FPMなら該当バージョンのPHP-FPMサービスです。reloadで新しいバイナリが読み込まれるとはPHPマニュアルに書かれていないため、restartを使います。
-
確認: dpkg-query -W 'php*' 'libapache2-mod-php*' はPHPパッケージとインストール済みのバージョンを表示します。USNまたはDebianトラッカーの同名パッケージと照合し、Web側でも確認します。
3. RHEL・AlmaLinux・Rocky Linux(AppStreamとRemi)
-
RHEL: 10月21日のRHSAが、RHEL 8、9、10のAppStreamのPHPパッケージをほぼ全ストリームで修正しました。例外はRHEL 9の php:8.4 モジュールで、10月25日時点でAffectedです。各RHSAがリンクするRed Hatの記事では、RHEL 9は dnf upgrade、RHEL 8は dnf update で、いずれもシステム全体を更新しroot権限が必要です。
-
AlmaLinux: AlmaLinuxの告知は次の手順です。
sudo dnf clean metadata && sudo dnf upgrade 'php*'
sudo systemctl restart php-fpm
AlmaLinux 8でmod_phpを使う場合は sudo systemctl restart httpd を代わりに使います。
-
Rocky Linux: 10月22日にRHSAと同じ番号のRLSAをRocky 8、9、10向けに公開しています。10月25日時点でRocky 9の php:8.4 向けRLSAは見つからず、AlmaLinuxの告知も9の php:8.4 を挙げていないため、このストリームの状況は未確認です。利用中の配布元に確認してください(RemiのPHP 8.4は修正済みの8.4.27)。
-
Remi: 10月22日にremi-modularで4バージョンを公開しました。告知のコマンドは dnf module switch-to php:remi-8.4/common(既定のPHPをRemiの8.4に置き換え)または yum install php84(SCLとして並行導入)です。
-
確認: rpm -q php-common(AlmaLinux 10などのPHP 8.4は php8.4-common)を、AlmaLinuxの告知、RHSA、RLSAの同名パッケージと照合し、Web側でも確認します。
4. WindowsとIIS/FastCGI
- ダウンロード: php.netのDownloadsページ(Windows)とreleasesフォルダーに、10月21日付の8.2.35、8.3.36、8.4.27、8.5.12のzipがあります。
- ビルドの選択: php.netは、IISでFastCGIとして使うならNon Thread Safe(NTS)、ApacheならThread Safe(TS)としています。
- IIS: PHPマニュアルでは、FastCGIモジュールで
.php を php-cgi.exe(php.exe ではない)に割り当てます。このハンドラーのパスを新しいビルドに向けます。
- 再起動: PHPファイル入れ替え後のIIS/FastCGIの再起動手順は公式ページが見つからなかったため、Microsoftのドキュメントに従い、旧ビルドの
php-cgi.exe が残らないようにします。Apacheの場合はApacheのサービスを再起動します。
- 確認: PowerShellでは、ハンドラーが指すフォルダーで
.\php.exe -v を実行するか、フルパスを指定します(Microsoftのドキュメントによれば、パスを指定しないとカレントフォルダーのファイルは実行されません)。Web側でも確認します。
5. XAMPP
学校、大学、組織にXAMPPやAppServのマシンが残っているなら、この2節が最も重要です。
- Windows: Apache FriendsはXAMPP for Windows 8.5.12、8.4.27、8.3.36を10月23日付で公開していますが、8.2.35はないため、8.2の利用者はアプリを確認したうえで8.3.36以降へ移ります。上書きアップグレードの手順は見つからなかったので、新規インストールとして計画し(htdocsとデータベースの事前バックアップを推奨)、導入後はWeb側で確認してください。
- LinuxとmacOS: 修正版はありません。最新はLinux版が8.2.12(2023年11月25日)、macOS版が8.2.4です。
- 代わりにすること: XAMPPのFAQ自体が「not meant for production use」と明記しています。インターネットから到達できるマシンは、ThaiCERTの推奨どおり、パッチ適用まで切り離すか、接続を許可したネットワークとIPアドレスに限定することを検討してください。公開が必要なサイトは、2〜3節の修正済みPHPへ移します。
6. AppServ
AppServの最新は9.3.0(PHP 7.3.10)で、2019年9月29日のリリースです。PHP 7.3は2021年12月6日にサポートが終了し、PHPのソースバックポートも7.4、8.0、8.1のみで、7.3向けの修正はありません。
AppServを稼働させているマシンは、インターネットからアクセスできない状態にしてください。CISAは、PHP 8.1以前を使い続ける組織はパッチ適用か更新ができるまでPHPシステムをオフラインにするよう求めています。移行の選択肢は旧バージョンPHP編をご覧ください。
7. 公式Dockerイメージ php
docker-library/phpは10月21日に4つの修正版をマージしました。
FROM を修正: パッチ番号まで固定している場合は php:8.3.36-fpm などの修正版に変えます。php:8.3-fpm は現在8.3.36と同じイメージを指しています。
- 再ビルド: Dockerのドキュメントにある
docker build --pull -t my-image:my-tag . で、新しいベースイメージを取得します。
- 再デプロイ: イメージはスナップショットなので、再ビルドしても稼働中のコンテナは変わりません。ThaiCERTは新しいコンテナをデプロイし、旧PHPが使われていないか確認するよう求めています。
- 確認:
docker ps --quiet --filter "ancestor=OLD_IMAGE_ID"(実際の旧イメージIDに置換)の出力が空であることを確かめます。対象はそのDockerデーモン上の稼働中コンテナのみなので(Dockerドキュメント)、全レプリカをWeb側でも確認します。
本記事の範囲
- 更新しても過去の侵害の有無は分かりません。ログ調査と侵害が疑われる場合の対応へ進んでください。
- IIS/FastCGI、LiteSpeed、OPcacheの再起動手順は公式情報が見つからなかったため、ベンダーのドキュメントに従い、旧バイナリのプロセスが残らないようにしてください。
作業チェックリスト
- 各ホストのPHPの導入元を特定し、その経路で更新する
- php.iniまたはFPMプールで
session.upload_progress.enabled=0 を設定し、-1 にしていた場合は memory_limit を戻す
- PHP-FPMまたはApacheを完全に再起動し、コンテナは置き換える
- パッケージ番号をアドバイザリーと照合し、バージョンと有効な設定をWeb側で確認する
- 修正版のないホストはインターネットから切り離す
ホストの一覧が表計算で追い切れなくなったら、料金ページで選択肢と価格をご確認ください。
次回に向けては、zcrXでソフトウェア製品ごとのライフサイクルとEOLを追跡できますが、パッチ適用の代わりにはなりません。
お問い合わせ
どのホストから更新すべきか、お気軽にご相談ください。無料でご相談いただけます。zcrが提供するのはソフトウェアで、実作業はチャネルパートナーを通じて提供します。
次に読む
PHPバージョンの確認方法 · 旧バージョンPHP編 · ホスティングパネル編 · WAFでどこまで防げるか
出典
- PHP News Archive 2026 — 修正版(10月21日)、Remiはリリース当日に未対応、設定はphp.ini/FPMプール/サーバー設定で行い
ini_set()・.user.ini に頼らない、7.4/8.0/8.1のソースバックポート、10月23日のsession upload progress告知(CVE-2026-115560)
- GHSA-w8hw-w9fx-j79w (CVE-2026-109618) — ソフトOOMと
_exit() によるハードOOM
- Ubuntu USN-8948-1、USN-8948-2 — リリースごとの修正版、14.04〜20.04はUbuntu Pro
- Ubuntu — About CVEs: Getting security updates —
sudo apt update && sudo apt upgrade は全パッケージを更新
- Debian Security Tracker CVE-2026-109618、CVE-2026-109619 — bookwormとtrixieの修正版、Debian Security Information — 10月21日のDSA-6574-1
- Debian Security FAQ —
apt-get update、apt-get upgrade、dpkg-query(1) — -W はパッケージ名とインストール済みバージョンを表示
- Launchpad — PPA for PHP (ondrej/php)、DEB.SURY.ORG — 10月21日のビルド
- Red Hat — CVE-2026-109618、RHSA-2026:87070、How do I apply package updates to my RHEL system? — 修正済みストリーム、RHEL 9の
php:8.4 はAffected、パッケージ一覧に php-common、dnf upgrade/dnf update、rpm(8) — rpm -q
- AlmaLinux — php2shell: Patched PHP packages released — dnfコマンド、再起動、
rpm -q、ストリーム別の修正版
- Rocky Linux Errata — RLSA-2026:87070(87071、87079、87072、87151、87073、87080も) — 10月22日公開、パッケージ一覧
- Remi's RPM repository — PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12 — 10月22日、
dnf module switch-to、yum install php84
- PHP for Windows — Downloads、releases — 10月21日のビルド、IISはNTS、ApacheはTS
- PHP Manual — Installation with IIS for Windows、Command line options —
php-cgi.exe へのハンドラー割り当て、-v、Microsoft — about_Command_Precedence — .\ またはフルパスで実行
- Apache Friends — Download XAMPP、SourceForge XAMPP Windows、XAMPP Linux、全ファイル — 10月23日のビルド、Linux版の最新は8.2.12、macOS版の最新ダウンロードは8.2.4
- XAMPP Linux FAQ、Windows FAQ、OS X FAQ — 「not meant for production use」
- AppServ — Download — 9.3.0、PHP 7.3.10、2019-09-29
- PHP — Unsupported Branches — PHP 7.3のサポート終了は2021年12月6日
- docker-library/php PR #1694、Docker Hub — php、Docker — Building best practices — 修正版タグ、
docker build --pull、イメージはスナップショット
- Docker — docker container ls —
--quiet、ancestor フィルター、既定では稼働中コンテナのみ表示
- ThaiCERT — PHP2Shellに関する注意喚起(2026年10月22日、タイ語) — 3.5(再起動)、3.6(コンテナ)、4.7(インターネットからの切り離し)
- CISA — Critical Vulnerabilities in PHP Require Immediate Patching — PHP 8.1以前はパッチ適用までオフラインに
- Sophos — PHP2Shell advisory — CLIではなくWebリクエストで有効な設定を確認
- Sansec — PHP2Shell —
memory_limit の復元に関する第三者の助言