• 運用保守・セキュリティ

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

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の更新が必要です。あわせて、不正アクセスの痕跡がないかも確認します。
目次
  1. PHP2Shellとは
  2. 修正版と、修正版が出ないバージョン
  3. 自社で確認すべきこと(環境別)
  4. すぐに更新できない場合の暫定策
  5. 不正アクセスの痕跡を確認する
  6. PHP 8.1以前の業務システムをどうするか
  7. よくある質問
  8. まとめ

PHP2Shellとは

PHP2Shellとは、2026年10月21日に公表された、PHP本体の2件のリモートコード実行の脆弱性(CVE-2026-109618・CVE-2026-109619)の通称です。悪用されると、PHPを実行しているプロセスの権限で、攻撃者が任意のプログラムを動かせる可能性があります。

2件の脆弱性の概要

項目CVE-2026-109618CVE-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公式のセキュリティ告知(2026年10月21日)、Rapid7の解説。

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.352026年12月31日でサポート終了8.2.35以降へ更新し、年内に8.3以降への移行を計画
8.1・8.0・7.4公式の修正版なし(最小限の修正コードのみ公開)サポート終了済みサーバー会社・保守会社の独自修正を確認し、サポート中の版へ移行
7.3以前なしサポート終了済み提供元に確認。移行を最優先で検討
PHP 7.4・8.0・8.1については、深刻度の高さから、PHPの開発チームがソースコード用の最小限の修正を例外的に公開しました。ただし、通常の修正版としては提供されていません。
バージョン番号だけでは判断できない場合がありますLinuxディストリビューションやレンタルサーバー会社は、バージョン番号を変えずに修正を当てていることがあります。たとえば、サーバー会社がPHP 8.1に独自の修正を当てても、表示は「8.1.34」のままです。修正済みかどうかは、サーバー会社やOSの提供元の告知で確認してください。

自社で確認すべきこと(環境別)

やるべきことは、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サービスは、既知の攻撃パターンを防ぐルールを提供しています
効果がない対策エラー表示を止める(display_errors、error_reporting、@ 演算子)だけでは防げません。また、メモリの上限をOSの機能(RLIMIT_AS など)でかけると、かえって脆弱な処理を引き起こすおそれがあるとされています。設定変更はサーバーの仕組みを理解したうえで行い、不安があれば管理会社に相談してください。

不正アクセスの痕跡を確認する

JPCERT/CCは、修正を当てるだけでなく、すでに侵害されていないかを確認するよう呼びかけています。主な確認ポイントは次のとおりです。

  • Cookie:過去のレスポンスで、PHPSESSID に異常に長い値や不正な形式の値が設定されていないか
  • リクエスト:不審な multipart/form-data のリクエストがないか。その前後に、メモリ上限のエラーやHTTP 500エラーが出ていないか
  • プロセス:PHPのワーカーが予期せず異常終了したり、頻繁に再起動したりしていないか
  • その他:見覚えのない管理者アカウント、改ざんされたページ、不審なファイル、外部への不審な通信、Search Console の警告がないか

痕跡が見つからなくても、攻撃を受けていないとは言い切れません。侵害が疑われる場合は、ログなどの証拠を保全したうえで影響範囲を調べ、必要に応じてシステムを隔離します。

PHP 8.1以前の業務システムをどうするか

今回、PHP 7.4・8.0・8.1には例外的に修正コードが公開されましたが、今後の脆弱性でも同じ対応がある保証はありません。古いPHPで動く業務システムは、次の順で検討するのが現実的です。

  1. 現状を把握するPHPのバージョン、使っているフレームワーク・ライブラリ、改修できる人がいるかを確認する
  2. 当面の安全を確保するサーバー会社・保守会社の修正を確認し、外部からのアクセスをVPNやIP制限で絞れないか検討する
  3. バージョンアップの影響を調べる8.3以降で動かしたときに、エラーになる箇所や改修が必要な範囲を洗い出す
  4. 改修か作り直しかを決める改修範囲が広い、仕様書がない、担当者がいないといった場合は、システムの置き換えも含めて比較する

小さなPHPのバージョンアップなら数週間で済むこともありますが、古いフレームワークを使っている場合は、フレームワークの更新も必要になり、期間と費用が大きくなりがちです。PHP 8.2も2026年12月31日にサポートが終了するため、まとめて8.3以降への移行を計画するのがおすすめです。

まずは無料の簡易診断で確認
10の質問と、サイトのURLから公開されている情報(HTTPS、セキュリティ設定、PHPのバージョン表示など)を確認できる簡易セキュリティ診断を用意しています。登録は不要です。
オーバーエックスの対応オーバーエックスでは、PHPで動く業務システム・Webシステムの調査、PHPのバージョンアップ、他社が開発したシステムの保守の引き継ぎに対応しています。「自社のシステムがどのPHPで動いているかわからない」「開発会社と連絡が取れない」といった段階からご相談いただけます。詳しくはシステムリプレイスのページをご覧ください。

よくある質問

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の技術解説、各レンタルサーバー会社の告知。

OX

TechBase 編集部(株式会社オーバーエックス)

東京・秋葉原のシステム開発会社。業務システム・Webシステム・基幹システムの受託開発、システムリプレイス、自社パッケージ開発、要件定義の支援を手がけています。オーバーエックスの特徴を見る

この記事に関連するサービス システム保守・運用 業務システムやWebシステムの監視、障害対応、セキュリティ更新、小さな修正を月額の定額制で行います。他社が開発したシステムも、引き継ぎ調査から対応します。 サービスの詳細を見る

Contact

今すぐ無料相談

全国対応

Page Top