PHPの重大な脆弱性「PHP2Shell」(CVE-2026-109618・109619)|業務システムで確認すること・修正版・8.1以前の対応【2026年10月】

2026年10月21日(日本時間23時ごろ)、PHPに2件の重大な脆弱性が公表され、修正版が公開されました。「PHP2Shell」と呼ばれるこの脆弱性は、ログインなしで外部からサーバー上のプログラムを実行される可能性があるもので、国内でも公表前後に多くの企業・自治体がWebサービスを予防的に停止しました。
この記事では、PHPで動く業務システムやWebサイトを持つ企業の担当者向けに、脆弱性の概要、修正版の一覧、自社で確認すべきこと、すぐに更新できない場合の暫定策、修正版が出ないPHP 8.1以前のシステムの扱いを整理します。情報は2026年10月23日時点のものです。
- PHP2Shell(CVE-2026-109618・CVE-2026-109619)は、ログイン不要でサーバー上のコードを実行される可能性がある重大な脆弱性で、深刻度はCVSS v4で9.2です。
- Webで使われているPHPは、PHP-FPM・mod_php・CGI・LiteSpeedなど動かし方を問わず影響を受けます。修正版は 8.5.12・8.4.27・8.3.36・8.2.35 です。
- PHP 8.1以前には公式の修正版がありません。サーバー会社や保守会社が独自に修正を当てているかを確認し、サポート中のバージョンへの移行を計画しましょう。
- WordPressやプラグインの更新では直りません。サーバー側のPHPの更新が必要です。あわせて、不正アクセスの痕跡がないかも確認します。
目次
PHP2Shellとは
PHP2Shellとは、2026年10月21日に公表された、PHP本体の2件のリモートコード実行の脆弱性(CVE-2026-109618・CVE-2026-109619)の通称です。悪用されると、PHPを実行しているプロセスの権限で、攻撃者が任意のプログラムを動かせる可能性があります。
2件の脆弱性の概要
| 項目 | CVE-2026-109618 | CVE-2026-109619 |
|---|---|---|
| 内容 | メモリ不足(OOM)の処理中に起きるメモリ破損 | リクエストをまたいで、解放済みのメモリを参照してしまう問題 |
| 深刻度 | CVSS v4 9.2(緊急) | CVSS v4 9.2(緊急) |
| 攻撃の条件 | ログイン不要。細工したHTTPリクエストを送るだけで攻撃できる可能性がある | |
| 影響を受ける環境 | Webリクエストを処理するすべてのPHP(PHP-FPM、Apacheのmod_php、php-cgi、FrankenPHP、LiteSpeed)。PHPの開発チームは、mod_phpの危険性が最も高いとしています | |
PHPは世界中のWebサイトや業務システムで使われているため、影響の範囲が非常に広いのが特徴です。公表前の10月17日には、攻撃を試みる通信がすでに観測されていたと報じられています。国内では、公表の前後に200を超える組織がサービスの全部または一部を予防的に止めました。
修正版と、修正版が出ないバージョン
PHPのバージョンごとの状況(2026年10月23日時点)
| バージョン | 修正版 | サポート状況 | やること |
|---|---|---|---|
| 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 | 2026年12月31日でサポート終了 | 8.2.35以降へ更新し、年内に8.3以降への移行を計画 |
| 8.1・8.0・7.4 | 公式の修正版なし(最小限の修正コードのみ公開) | サポート終了済み | サーバー会社・保守会社の独自修正を確認し、サポート中の版へ移行 |
| 7.3以前 | なし | サポート終了済み | 提供元に確認。移行を最優先で検討 |
無料ツール業務システムのサポート期限カレンダー|OS・Office・DB・言語の終了日一覧【毎月更新】
自社で確認すべきこと(環境別)
やるべきことは、PHPがどこで、誰の管理のもとで動いているかによって変わります。
環境ごとの確認ポイント
| 環境 | 誰がPHPを更新するか | 確認すること |
|---|---|---|
| レンタルサーバー(共用) | サーバー会社 | サーバー会社の告知で修正の完了を確認。使っているPHPが8.1以前なら、8.3以降への切り替えを検討 |
| VPS・クラウド(自社で管理) | 自社 | OSのパッケージ更新で修正版を入れ、PHP-FPMやWebサーバーを再起動。動作確認も行う |
| 開発会社・保守会社に委託 | 委託先(契約による) | 委託先に対応状況と完了日を問い合わせる。保守契約の範囲外なら、早めに個別の依頼を |
| PHPを組み込んだ製品・機器 | 製品の提供元 | 提供元の告知を確認。修正が出るまで、外部からのアクセスを絞ることを検討 |
- どのサーバーでPHPが動いているかを洗い出す:公開サイトだけでなく、社内システム、取引先向けポータル、検証環境、使っていない古いサイトも対象です
- PHPのバージョンと動かし方を確認する:WordPressなら「ツール」→「サイトヘルス」→「情報」→「サーバー」で確認できます。phpinfoを置いた場合は、確認後すぐに削除します
- 修正の完了を確認する:修正版への更新、またはサーバー会社・委託先の完了告知を確認します
- 侵害の痕跡を確認する:更新前に攻撃を受けていないかを確認します(下の章を参照)
- 8.1以前のシステムの移行を計画する:今回しのげても、今後の脆弱性には修正が出ません
すぐに更新できない場合の暫定策
PHPの開発チームは、更新までの間に攻撃の経路を減らす設定を案内しています。ただし、これらは特定の攻撃経路を防ぐだけで、安全になるわけではありません。根本的な対策は修正版への更新だけです。
- session.upload_progress.enabled を 0 にする:php.ini、PHP-FPMのプール設定、サーバー設定で指定し、すべてのワーカーを再起動します。アプリケーション内の ini_set() や .user.ini では間に合いません
- post_max_size を小さくする:ファイルのアップロードがなければ8M、必要なら32Mを目安にし、upload_max_filesize はそれより小さくします
- memory_limit を -1 にする:アプリケーションから上書きできない方法(FPMの php_admin_value など)で指定します
- PHP 8.5では fatal_error_backtraces を 0 にする:確認されている攻撃経路の1つを防ぎます
- WAFのルールを有効にする:一部のCDN・WAFサービスは、既知の攻撃パターンを防ぐルールを提供しています
不正アクセスの痕跡を確認する
JPCERT/CCは、修正を当てるだけでなく、すでに侵害されていないかを確認するよう呼びかけています。主な確認ポイントは次のとおりです。
- Cookie:過去のレスポンスで、PHPSESSID に異常に長い値や不正な形式の値が設定されていないか
- リクエスト:不審な multipart/form-data のリクエストがないか。その前後に、メモリ上限のエラーやHTTP 500エラーが出ていないか
- プロセス:PHPのワーカーが予期せず異常終了したり、頻繁に再起動したりしていないか
- その他:見覚えのない管理者アカウント、改ざんされたページ、不審なファイル、外部への不審な通信、Search Console の警告がないか
痕跡が見つからなくても、攻撃を受けていないとは言い切れません。侵害が疑われる場合は、ログなどの証拠を保全したうえで影響範囲を調べ、必要に応じてシステムを隔離します。
PHP 8.1以前の業務システムをどうするか
今回、PHP 7.4・8.0・8.1には例外的に修正コードが公開されましたが、今後の脆弱性でも同じ対応がある保証はありません。古いPHPで動く業務システムは、次の順で検討するのが現実的です。
- 現状を把握するPHPのバージョン、使っているフレームワーク・ライブラリ、改修できる人がいるかを確認する
- 当面の安全を確保するサーバー会社・保守会社の修正を確認し、外部からのアクセスをVPNやIP制限で絞れないか検討する
- バージョンアップの影響を調べる8.3以降で動かしたときに、エラーになる箇所や改修が必要な範囲を洗い出す
- 改修か作り直しかを決める改修範囲が広い、仕様書がない、担当者がいないといった場合は、システムの置き換えも含めて比較する
小さなPHPのバージョンアップなら数週間で済むこともありますが、古いフレームワークを使っている場合は、フレームワークの更新も必要になり、期間と費用が大きくなりがちです。PHP 8.2も2026年12月31日にサポートが終了するため、まとめて8.3以降への移行を計画するのがおすすめです。
10の質問と、サイトのURLから公開されている情報(HTTPS、セキュリティ設定、PHPのバージョン表示など)を確認できる簡易セキュリティ診断を用意しています。登録は不要です。
関連記事PHPのバージョン確認方法|WordPress・サーバー管理画面・コマンドでの調べ方と結果の読み方
関連記事PHP 8.2のサポート終了は2026年12月31日|影響と8.3・8.4への移行手順・スケジュール例
関連記事Webサイトの改ざん・不正アクセスの確認方法と初動対応|症状・調べ方・個人情報保護委員会への報告と相談窓口
よくある質問
- WordPressやプラグインを最新にすれば対策になりますか?
- なりません。今回の脆弱性はPHP本体にあるため、サーバー側のPHPを修正版に更新する必要があります。ただし、WordPressやプラグインの更新は別の脆弱性への対策として引き続き必要です。
- レンタルサーバーを使っている場合も、自分で何かする必要がありますか?
- PHPの更新はサーバー会社が行います。サーバー会社の告知で修正の完了を確認し、使っているPHPが8.1以前なら、サポート中の8.3以降への切り替えを検討してください。切り替えの前には、サイトが正しく動くかを確認します。
- PHP 8.1を使っていますが、サーバー会社が修正済みなら安全ですか?
- 今回の2件については、サーバー会社の修正で対策されている可能性があります。ただし、PHP 8.1はサポートが終了しており、今後見つかる脆弱性には公式の修正が出ません。移行の計画を立てておくことをおすすめします。
- エラー表示を止めれば攻撃を防げますか?
- 防げません。display_errors や error_reporting の設定、@ 演算子でエラーを隠しても、脆弱性はそのまま残ります。修正版への更新が必要です。
- 不審なメールで「PHPの対策が必要です」と案内が来ました。
- 脆弱性の話題に便乗したフィッシングのおそれがあります。メールやSMSのリンクからログインせず、サーバー会社や委託先の公式サイト、管理画面から直接確認してください。
まとめ
PHP2Shellは、ログイン不要でサーバー上のコードを実行される可能性がある重大な脆弱性です。PHP 8.2〜8.5は修正版へ更新し、8.1以前は提供元の独自修正を確認したうえで、サポート中のバージョンへの移行を計画しましょう。更新とあわせて侵害の痕跡を確認し、古いPHPで動くシステムは、今回を機に今後の保守の体制まで見直すことが大切です。
参考:PHP公式「Security advisory: Critical remote code execution vulnerabilities, update now」(2026年10月21日)、JPCERT/CC「PHPにおける複数の脆弱性(CVE-2026-109618、CVE-2026-109619)に関する注意喚起」(2026年10月22日)、Rapid7の技術解説、各レンタルサーバー会社の告知。
この記事に関連するサービス
システム保守・運用
業務システムやWebシステムの監視、障害対応、セキュリティ更新、小さな修正を月額の定額制で行います。他社が開発したシステムも、引き継ぎ調査から対応します。 サービスの詳細を見る



