2026年10月22日時点の情報です。新しい公表があれば、このページを更新します。
何が起きたか
2026年10月21日、PHPの開発チームが、重大な脆弱性2件(CVE-2026-109618 と CVE-2026-109619)を直した修正版を公開しました。通称は「php2shell」です。深刻度はどちらも CVSS v4.0 で 9.2。ログインしていない第三者が、外からサーバー上で任意のコードを動かせるおそれがあります。
修正版の公開前、10月20日に情報が外に漏れ、PHPは同じ日の夜に予告を出しました。修正版は日本時間の21日22時40分ごろに出ています。
対象になるバージョン
- 8.2〜8.5:修正版は 8.5.12、8.4.27、8.3.36、8.2.35 です。
- 8.1以前:PHPからの修正版は出ません。7.4、8.0、8.1 向けには、ソースコードだけの最小限の修正(バックポート)が公開されています。自分でビルドするか、Linuxディストリビューションや延長サポートの提供元の修正を待つことになります。
- GMO Flatt Security の解説は、5系から8系まで広く影響すると考えるべきだとしています。WordPress、Laravel、Symfony などで作られた一般的な構成で、攻撃が再現したと報告されています。
今日やること
- 本番で動いているバージョンを確かめる。サーバーで
php -vを打って出るのはコマンドライン用のPHPで、ウェブで動いているPHPと違うことがあります。レンタルサーバーなら管理画面、自社サーバーなら PHP-FPM や Apache の設定で、ウェブ側のバージョンを確認してください。 - 8.2〜8.5なら、修正版へ上げる。Linuxディストリビューションや延長サポートの提供元には事前に修正が渡されています。使っているパッケージの更新を確認してください。
- すぐ上げられないときは、暫定策を入れる。PHPの公式の案内では、
session.upload_progress.enabled=0を php.ini か FPM のプール設定に書いてワーカーをすべて再起動すること、memory_limit=-1をアプリから上書きできない形(php_admin_value)で設定すること、post_max_sizeを小さくすること、8.5ではfatal_error_backtraces=0にすることなどが挙がっています。ini_set()や.user.iniでは効きません。PHPは、暫定策は一部の経路を塞ぐだけで、完全な対策は更新だけだとしています。 - 8.1以前なら、今をしのぎつつ移行の計画を立てる。バックポートや提供元の修正で穴をふさぎ、そのうえでサポート中のバージョンへ移る順番を決めます。
- 入られていないかを確かめる。修正前に情報が出回っていたため、アクセスログ、見覚えのないファイル、サーバーに与えている権限を確認してください。
もうひとつの期限:PHP 8.2 は年末で終わる
PHP 8.2 のセキュリティサポートは 2026年12月31日で終わります。今日 8.2.35 に上げても、年明けからは次の脆弱性が見つかっても修正版は出ません。8.3(2027年末まで)か 8.4(2028年末まで)へ上げる準備を、いまから始める必要があります。
古いPHPはまだ多く使われています。W3Techs の集計(2026年8月22日時点、世界のウェブサイト)では、PHPを使うサイトのうち PHP 7 が 28.9%、PHP 5 が 7.9% でした。
kensaurus がお手伝いできること
古いPHPのシステムを、止めずに一段ずつ新しくする仕事を引き受けています。今のバージョンと構成の確認、修正版の適用や暫定策の設定、サポート中のバージョンへのアップグレード、必要な部分だけ新しい構成へ移す作業です。進め方はこちらのページに書きました。
攻撃の手順や検証用のコードは、このページでもご相談の中でも扱いません。