PHPの脆弱性PHP2Shell(CVE-2026-109618)|コード実行の対象バージョンと確認方法・修正版
CVE-2026-109618・CVE-2026-109619PHP本体の脆弱性CVE-2026-109618・CVE-2026-109619(通称PHP2Shell)は、Webのリクエストを処理するPHPが、認証なしで遠隔からコードを実行されるおそれがあるものです。PHP公式が2026年10月21日(日本時間23時)に修正版を公開し、米CISAは10月26日(米国時間)に悪用を確認した脆弱性の一覧(KEV)に加えました。8.5.12・8.4.27・8.3.36・8.2.35より前の版が対象で、系列ごとにこの版以上へ上げます。[1][2][3][4]
- 対象は8.5.12・8.4.27・8.3.36・8.2.35より前のPHPで、修正版はこの4つです。PHP-FPM、mod_php、php-cgiなどWebのリクエストを処理するPHPが当てはまります。
- 米CISAが10月26日にKEVへ追加しました。上げる前に、ログで攻撃の痕跡(
PHP_SESSION_UPLOAD_PROGRESSを含むmultipartのリクエスト、メモリ上限のエラー)も確かめます。 - OSのパッケージは番号が古いまま修正が入ります(Ubuntu 24.04は8.3.6-0ubuntu0.24.04.13)。
php -vだけで判断せず配布元の修正版と比べます。 - 8.1以前は、アドバイザリに対象としても修正版としても記載がありません。配布元の修正を確かめるか、8.2以上へ移ります。
01PHP2Shellで起きること
PHP公式によると、2件はどちらも認証なしで遠隔からコードを実行されるおそれがあります。CVE-2026-109618は、メモリ不足(OOM)で処理を抜けたとき、初期化の途中のデータを終了処理が正しいものとして扱う問題です。CVE-2026-109619は、終わったリクエストのメモリを指す内部状態が残り、同じワーカーの次のリクエストがそれを使う問題です。[1][2][3]
深刻度は緊急です(PHP公式の評価:CVSS 4.0で2件とも9.2)。NVDはCVSS 3.1で、CVE-2026-109618を9.8(緊急)、CVE-2026-109619を8.1(高)としています。攻撃の複雑さは高く、成功するかはPHPの版・実行環境・メモリの配置などで変わるとJPCERT/CCは説明しています。[2][3][5][6][8]
細工したリクエストでPHP本体のメモリの扱いを崩し、ワーカーの権限でコードを実行する
PHP公式の告知と2件のアドバイザリから、攻撃の入口と脆弱な部品を並べる。
PHP本体(8.5.12・8.4.27・8.3.36・8.2.35より前)
出典 PHP公式「Security advisory: Critical remote code execution vulnerabilities, update now」(2026-10-21)、GHSA-w8hw-w9fx-j79w・GHSA-6wmf-4rv5-p3rp(2026-10-21)
02PHPのどの動かし方が対象になるか
PHP公式は対象を「Webのリクエストを処理するすべてのPHP」とし、PHP-FPM、Apacheのmod_php、php-cgi、FrankenPHP、LiteSpeedを挙げています。最も危険なのはmod_phpで、アプリのコードが動く前に攻撃が始まることを実証済みとしています。コマンドライン(CLI)だけで動かすPHPの記載はありません。[1]
足がかりは、multipartのリクエストでmemory_limitを使い切らせること、初期設定で有効なセッションのアップロード進捗、致命的エラーや実行時間切れ、8.5のfatal_error_backtracesなどです。[2][3]
mod_phpは攻撃を検証済みで、PHP-FPMなどの動かし方も対象に入る
PHP公式の告知とCVE-2026-109618のアドバイザリから、動かし方ごとの扱いを並べる。
出典 PHP公式「Security advisory: Critical remote code execution vulnerabilities, update now」(2026-10-21)、GHSA-w8hw-w9fx-j79w(2026-10-21)
03PHP2Shellの悪用の状況
米CISAは10月26日(米国時間)に2件をKEVへ追加し、連邦政府機関の対応期限を10月29日としました。今後30日に悪用される見込みの推定(EPSS)は、2件とも99.9%を超えています(11月1日時点)。[4][18]
JPCERT/CCは、悪用できると主張するPoCが多数公開され、悪用を試みる通信の観測も相次いでいるとし、10月29日には、あるファイアウォール製品で侵害の成功を示唆する痕跡が報告されたと追記しました。IPAの注意喚起(11月2日更新)は、国内での攻撃被害の事例は把握していないとしています。国内で緊急メンテナンスを行ったサービスはPHP2Shellのサービス停止まとめにあります。[7][8][12]
修正版の公開から5日でKEVに載り、10月29日には侵害の痕跡も報告された
PHP公式、米CISA、JPCERT/CC、IPAの告知から、日付のある出来事を並べる。
PHP公式 米CISA・JPCERT/CC・IPA
2026年10月20日
10月21日
10月22日
10月23日
10月26日
10月29日
11月2日
出典 PHP公式の告知(2026-10-20・21・23)、米CISA「Known Exploited Vulnerabilities Catalog」(2026.10.30版)、JPCERT/CC「JPCERT-AT-2026-0033」(2026-10-29更新)、IPA(2026-11-02更新)
04攻撃を受けていないかの確認
更新に加えて、それまでに攻撃を受けていないかを確かめます。JPCERT/CCが挙げる確認点は次の3つです。[8]
- 過去のレスポンスで、不自然に長い、または形式のおかしい
PHPSESSIDのCookieを設定していないか。 - 不審な
multipart/form-dataのリクエストと、その前後のメモリ上限のエラーやHTTP 500がないか。 - PHPのワーカーの予期しない異常終了や、頻繁な再起動がないか。
米CISAの検知ルール(Sigma)は、index.phpへのPOSTでPHPSESSIDとPHP_SESSION_UPLOAD_PROGRESSを含むmultipartのリクエスト、エラーログの「PHP Fatal error:」「Allowed memory」「in Unknown」がそろう行、PHP-FPMやApacheから/bin/sh・curl・wgetを起動した記録、公開された攻撃コードやスキャナーの印(php2shell-scan、区切り文字列B7kQpoc618・BNDRY12345)を探します。[10]
grep -E "PHP Fatal error: +Allowed memory.* in Unknown" /var/log/php*-fpm.log /var/log/apache2/error.log
grep -E "php2shell|B7kQpoc61|BNDRY12345" /var/log/nginx/access.log /var/log/apache2/access.log本文の文字列はアクセスログに残らないことが多いので、WAFやプロキシの記録でも探します。JPCERT/CCは、痕跡が無くても侵害されていないとは言い切れないとし、不審なプロセス・外部への通信・ファイルの作成も確かめ、疑わしければログを保全してシステムを隔離するよう求めています。[8]

05PHPの系列ごとの対象と推奨する版
対象と修正版は、PHP公式の告知と2件のアドバイザリから出しました。11月2日時点で、これより新しい版は出ていません。[1][2][3]
| 系列 | 対象 | 推奨する版 |
|---|---|---|
| 8.5 | 8.5.12より前 | 8.5.12 |
| 8.4 | 8.4.27より前 | 8.4.27 |
| 8.3 | 8.3.36より前 | 8.3.36 |
| 8.2 | 8.2.35より前 | 8.2.35(セキュリティ修正は2026年12月31日まで) |
| 8.1以前 | アドバイザリに記載がない | アドバイザリに記載がない(PHP公式の更新の対象外) |
NVDの判定では、CVE-2026-109619は5.4.0以降、CVE-2026-109618は7.3.0以降が対象です(11月2日確認)。Windows版は、10月26日の8.5.12-1などを入れると、同梱のBrotliの脆弱性もあわせて直ります。[5][6][19][16]
06動いているPHPの版を確かめて、修正版に上げる手順
Webのリクエストを処理しているPHPの版を確かめます。ターミナルの
phpとPHP-FPM・mod_phpは別の版のことがあります。FPMの実行ファイル名は環境で違います。ターミナルphp -v ls /usr/sbin/php-fpm* php-fpm8.3 -v apachectl -M | grep -i phpOSのパッケージは、番号ではなく配布元の修正版と比べます。Debian 12のphp8.2は8.2.35-1~deb12u1、Ubuntu 24.04のphp8.3は8.3.6-0ubuntu0.24.04.13、Ubuntu 22.04のphp8.1は8.1.2-1ubuntu2.28で直っています。RHEL系は更新履歴でCVE番号を探します。[13][14]
ターミナルdpkg -l 'php*' | grep '^ii' rpm -q --changelog php-fpm | grep -m1 CVE-2026-10961コンテナは本番のイメージそのもので確かめます。公式のphpイメージは、
8.4-fpmのような系列のタグも10月31日に作り直されています。手元のイメージは基のイメージを取り直して作り直します。[15]ターミナルdocker run --rm <本番のイメージ> php -v docker build --pull --no-cache -t <イメージ名> .composer auditが見るのはインストールしたパッケージです。PHP本体の版はcomposer show --platformで見られますが、Composerを動かしたPHPの版なので、手順1と照らし合わせます。[17]ターミナルcomposer show --platform | grep '^php '更新したらPHP-FPMやApacheを再起動し、手順1と同じ方法で修正版になったことを確かめます。再起動までは古い版が動き続けます。
ターミナル(Debian系の例)sudo apt update && sudo apt upgrade sudo systemctl restart php8.3-fpm sudo systemctl restart apache2 php-fpm8.3 -v
07すぐに上げられないとき
PHP公式は、更新だけが完全な対策で、次の設定は特定の経路を減らすだけだとしています。php.iniやFPMのプールに書いてすべてのワーカーを再起動し、ini_set()や.user.iniには頼りません。[1]
memory_limit=-1をアプリが上書きできない形で設定し、メモリの上限はコンテナやcgroupで設ける(RLIMIT_AS・RLIMIT_DATAは使わない)。post_max_sizeをアップロードが無ければ8M、あれば32Mにし、upload_max_filesizeをそれより小さくする。session.upload_progress.enabled=0にする(10月23日に告知された別の問題CVE-2026-115560の対策も兼ねる)。8.5ではfatal_error_backtraces=0も。[11]
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M
php_admin_value[upload_max_filesize] = 4M
php_admin_flag[session.upload_progress.enabled] = off米CISAは、すぐ更新できないPHPはオフラインにするよう勧めています。[9]
08PHP 8.1以前を使っているとき



よくある質問
Ubuntu 24.04でphp -vを打つと8.3.6でした。対象ですか?
番号だけでは決まりません。Ubuntuは修正を8.3.6のまま取り込み、パッケージの版8.3.6-0ubuntu0.24.04.13以降で直っています(USN-8948-1)。dpkg -l 'php*'で確かめます。[14]
cronのバッチなど、コマンドラインでしかPHPを使っていません。
PHP公式が対象に挙げるのはWebのリクエストを処理するPHPで、CLIの記載はありません。同じサーバーでWebも動かしているなら、同じパッケージの更新で両方が上がります。[1]
Windows版のPHPは何を入れればよいですか?
10月26日に出た8.5.12-1・8.4.27-1・8.3.36-1・8.2.35-1です。PHP2Shellの修正に加えて、同梱のBrotliの脆弱性も直ります。[19]
出典・参考資料
- PHP公式:Security advisory: Critical remote code execution vulnerabilities, update now2026-10-21 / 修正版4つ、対象の動かし方、mod_phpの危険性、8.1以前の扱いと最小限の修正、配布元への事前提供、緩和策
- PHP公式:GHSA-w8hw-w9fx-j79w(CVE-2026-109618、RCE via OOM corruption)2026-10-21 / 仕組み、対象(8.2.35・8.3.36・8.4.27・8.5.12より前)、CVSS 4.0 9.2、足がかりのリクエストの形、SAPIごとの検証の状況
- PHP公式:GHSA-6wmf-4rv5-p3rp(CVE-2026-109619、RCE via stale global state)2026-10-21 / 仕組み、対象と修正版、CVSS 4.0 9.2、アップロード進捗・致命的エラー・fatal_error_backtracesの経路、緩和策
- 米CISA:Known Exploited Vulnerabilities Catalog(JSON版 2026.10.30)2026-11-02確認 / 2件の追加日10月26日、対応期限10月29日、Forensic Triageの対象
- NVD:CVE-2026-1096182026-10-30更新 / NVDの評価CVSS 3.1 9.8、対象の判定(7.3.0以降)
- NVD:CVE-2026-1096192026-10-30更新 / NVDの評価CVSS 3.1 8.1、対象の判定(5.4.0以降)
- IPA:PHPの脆弱性対策について(CVE-2026-109618、CVE-2026-109619:PHP2shell)2026-10-22(11-02更新) / 国内での被害の事例を把握していないこと、PHP 5.4以降が少なくとも一方の影響を受けるというWizの説明
- JPCERT/CC:PHPにおける複数の脆弱性に関する注意喚起(JPCERT-AT-2026-0033)2026-10-22(10-29更新) / PoCの公開と悪用の試みの観測、ファイアウォール製品での侵害の痕跡、侵害の調査で確かめる3点、成功が環境に左右されること
- 米CISA:Critical Vulnerabilities in PHP Require Immediate Patching2026-10-21(10-26更新) / 更新できないPHP・8.1以前のPHPをオフラインにする勧め、WAFの扱い、検知ルールの追加
- 米CISA:SIGMA_Rules(CISA_SIGMA_261429 PHP2Shell)2026-10-23更新 / リクエスト・エラーログ・プロセスの痕跡、PoCの印、攻撃元のIPアドレス・ドメイン、誤検知の程度
- PHP公式:Informational advisory: Session upload progress2026-10-23 / CVE-2026-115560の条件、session.upload_progress.enabled=0の勧め
- PHP公式:Upcoming Critical PHP Security Release2026-10-20 / 公開日時の予告(10月21日14時UTC)
- Debian:Security Tracker CVE-2026-1096182026-11-02確認 / Debian 12(8.2.35-1~deb12u1)・Debian 13(8.4.27-1~deb13u1)の修正版
- Ubuntu:CVE-2026-109618(USN-8948-1)2026-11-02確認 / Ubuntu 24.04(8.3.6-0ubuntu0.24.04.13)・22.04(8.1.2-1ubuntu2.28)の修正版
- Docker Hub:php(公式イメージ)のタグ2026-11-02確認 / 8.5.12・8.4.27・8.3.36・8.2.35のタグ、系列のタグの10月31日の更新、8.1系のタグが1月2日から更新されていないこと
- PHP公式:Supported Versions2026-11-02確認 / 8.2のセキュリティ修正の終了日
- Composer公式:Command-line interface(audit・show・check-platform-reqs)2026-11-02確認 / auditの対象、show --platform、check-platform-reqs
- FIRST:EPSS(CVE-2026-109618・CVE-2026-109619)2026-11-01 / EPSSの値
- PHP公式:Updated PHP Windows builds for Brotli security fix2026-10-26 / Windows版8.5.12-1などの再公開
- php-src:PHP-8.1-CVE-2026-109618-109619(ブランチ)2026-11-02確認 / 8.1向けの最小限のソースの修正
あわせて読みたい記事
PHPのWindows版のBrotliの脆弱性、8.5.12-1などへの入れ替えとcURL・Guzzleの確かめ方(CVE-2026-111497)
PHPのWindows版に同梱のBrotliの脆弱性CVE-2026-111497は、米CISAが悪用を確認しています。10月21日の版も対象のままである理由、GuzzleやWordPressで自動展開が有効になる条件、8.5.12-1などへの入れ替えと確かめ方を説明します。
Laravelの脆弱性CVE-2026-114509|TokenGuardの認証回避と13.30.0・12.69.0への対応
Laravelの脆弱性CVE-2026-114509は、TokenGuardで守るAPIに文字列でない値を送ると、MySQL・MariaDBの一部の構成で既存の利用者として認証されるおそれがあります。自社がTokenGuardかSanctumかの見分け方、12.69.0・13.30.0以上への上げ方、サポートが終わった11系以前の扱いを説明します。
Brotliの脆弱性の確認方法、PythonとNode.jsで対象かを確かめて直す(CVE-2026-111497、コード実行のおそれ)
圧縮形式Brotliの展開処理の脆弱性CVE-2026-111497(HTTP2Shell)は、米CISAが悪用を確認しています。Pythonのbrotli・brotlicffi、Node.jsの同梱版などで、自分の版と構成が対象かを確かめる方法と修正版を、言語ごとに説明します。