- セキュリティ
PHPに認証不要のリモートコード実行の脆弱性「PHP2Shell」:WordPressを使う事業者と開発者がすべきこと
LIKELIVEの対応状況:LIKELIVEがクライアントの皆さまに提供しているサーバー・サービスについては、修正版の公開(日本時間10月21日23時ごろ)から即座に対応を始め、翌22日の午前中にはすべての対応を完了しています。対応の内容について確認したい点があれば、お気軽にお問い合わせください。
2026年10月21日(UTC)、PHPの開発チームは、PHP本体にある深刻な脆弱性2件を修正した緊急リリースを公開しました。認証なしで外部からサーバー上のコードを実行される恐れがあり、すでに実際の攻撃も確認されています。「PHP2Shell」と呼ばれるこの問題は、WordPressなどPHPで動くサイトを持つすべての事業者に関係します。
何が起きたのか
経緯を時系列で整理します。
| 日付(2026年) | 出来事 |
|---|---|
| 10月20日 | PHPチームが、翌日に緊急のセキュリティリリースを出すと事前告知 |
| 10月21日 | 修正版 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 を公開(日本時間では21日23時ごろ) |
| 10月22日 | IPAとJPCERT/CCが注意喚起を公開 |
| 10月23日 | PHPチームが関連する別の問題(CVE-2026-115560)について設定変更を推奨 |
| 10月26日 | 米CISAが2件を「悪用が確認された脆弱性」カタログ(KEV)に追加 |
セキュリティ企業のwatchTowrによると、10月20日、本来の公表予定日(22日)より前に詳細がSNSで漏れ、同じ日にPHPチームが緊急リリースを告知しました。同社は修正版の公開当日から、実際の攻撃を観測したと報告しています。
脆弱性は次の2件です。どちらもCVSS v4.0で9.2(Critical)と評価されています。
| CVE番号 | 内容 |
|---|---|
| CVE-2026-109618 | メモリ不足(OOM)時のエラー処理で、初期化が終わっていないデータを後処理が正しいものとして扱ってしまう |
| CVE-2026-109619 | 前のリクエストの内部状態が、メモリ解放後も残り、同じワーカーの次の処理で使われてしまう |
影響を受けるバージョンと修正版は以下のとおりです。
| 系列 | 影響を受けるバージョン | 修正版 |
|---|---|---|
| PHP 8.5 | 8.5.12より前 | 8.5.12 |
| PHP 8.4 | 8.4.27より前 | 8.4.27 |
| PHP 8.3 | 8.3.36より前 | 8.3.36 |
| PHP 8.2 | 8.2.35より前 | 8.2.35 |
| PHP 7.4 / 8.0 / 8.1 | 影響あり | 公式の修正版なし(最小限のソース修正のみ提供) |
| PHP 7.3以前 | 影響あり(watchTowr調べ) | 修正なし |
PHP-FPM、Apacheのmod_php、php-cgi、FrankenPHP、LiteSpeedなど、Webリクエストを処理する構成は広く対象です。中でもmod_phpは、アプリケーションのコードが動く前に攻撃が成立しうるため、最もリスクが高いとされています。
なぜ重要なのか
今回の問題は、WordPress本体やプラグインの脆弱性ではありません。その下で動いているPHPそのものの問題です。WordPressを最新にしても、この脆弱性は塞がりません。
攻撃にログインは不要で、アプリのコードより手前で起きうるため、セキュリティ系のプラグインでは防ぎきれないと考えるべきです。PHPチームは、設定による回避策は部分的なものにとどまり、完全な対策は更新だけだと明言しています。
CISAが連邦機関に求めた対応期限は10月29日で、公表から約1週間という短さでした。
あわせて、PHP 8.2のサポートは2026年12月31日で終了します。今回8.2系の修正版は出ましたが、来年以降は出ません。
実務での影響・対応
事業者の方:まずサーバーの種類を確認する
対応は、サイトをどこで動かしているかで大きく変わります。
| 利用形態 | 誰がPHPを更新するか | やること |
|---|---|---|
| 共用レンタルサーバー・マネージドWordPress | 基本的にサーバー会社 | 会社のお知らせで対応完了を確認する |
| VPS・クラウドの自社サーバー | 契約者(自社または制作会社) | 自分で更新する。早急に |
| 制作会社に保守を任せている | 契約内容による | 対応状況を問い合わせる |
たとえばエックスサーバーは、レンタルサーバーについては運営側で修正を適用し、10月26日に全対象サーバーで完了したと告知しています。一方、同社のVPSでは運営側は修正を適用しておらず、利用者自身の対応が必要です。同じ会社のサービスでも、ここが分かれる点に注意してください。
確認のポイントは3つです。
- サーバー会社や制作会社の告知を確認する:CVE-2026-109618と109619への対応が完了しているかを見ます。告知が見当たらなければ問い合わせてください。
- PHPのバージョンを確認する:WordPressの管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」で表示されます。ただし、古い番号のまま修正だけを当てる方式のサーバー会社もあるため、番号だけで判断せず告知とあわせて確認します。
- PHP 8.1以前を使っていないか確認する:該当する場合は、サーバー会社の個別対応がない限り守られていません。8.3以降への移行を計画してください。
開発者・サーバー管理者の方
自分でPHPを管理しているなら、すぐに次を行ってください。
- 棚卸し:インターネットに公開しているPHP環境をすべて洗い出します。mod_phpの環境から優先します。
- 更新:修正版、またはLinuxディストリビューションの修正済みパッケージに更新します。ディストリビューション版は番号が変わらない場合があるので、各ベンダーの告知でパッチ適用済みかを確認します。
- 再起動:PHP-FPMやApacheのワーカーをすべて再起動します。更新しただけで古いプロセスが残っていると、修正は効きません。
- コンテナの再ビルド:PHPを含むDockerイメージは、ベースイメージを更新して作り直す必要があると私は見ています。サーバーの更新だけでは中身は変わりません。
php -v # バージョン確認
sudo systemctl restart php8.3-fpm # サービス名は環境に合わせる
どうしてもすぐ更新できない場合、PHPチームはいくつかの暫定策を示しています。アプリ側から上書きできない場所(FPMのプール設定など)に書くことが条件で、ini_set() や .user.ini では効果がないとされています。
; FPM プール設定の例(暫定策。更新の代わりにはならない)
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M
php_admin_value[upload_max_filesize] = 8M
php_admin_value[session.upload_progress.enabled] = 0
memory_limit を無制限にする代わりに、メモリはコンテナやcgroupの上限で抑えます。RLIMIT_AS などのプロセス単位の制限は、逆に脆弱な処理を呼び起こすため使わないよう注意書きがあります。PHP 8.5では fatal_error_backtraces=0 も推奨されています。
session.upload_progress.enabled=0 は、10月23日に告知されたCVE-2026-115560の回避策も兼ねます。この機能を使っていないなら、更新後も無効のままにしておくのが無難です。
侵害されていないかを確認する
すでに攻撃が観測されているので、更新したあとに痕跡も確認してください。JPCERT/CCは次の3点を挙げています。
- 過去のレスポンスで、不自然に長い
PHPSESSIDCookieが設定されていないか - 不審な
multipart/form-dataのリクエストの前後で、メモリ上限エラーやHTTP 500が出ていないか - PHPのワーカーが異常終了や再起動を繰り返していないか
痕跡がないからといって安全とは言い切れない点も、JPCERT/CCは強調しています。疑わしい場合はログを保全し、作り直しも含めて検討してください。
なお、Windows版のPHPについては、10月26日に圧縮ライブラリBrotliの脆弱性(CVE-2026-111497)を修正した再ビルド版(-1 付き)が出ています。Windowsで運用している方は、こちらも入れ替えてください。
まとめ
PHP2Shellは、認証不要で外部からコードを実行されうる脆弱性で、すでに悪用されています。WordPressの更新では防げず、PHP本体の更新が必要です。
事業者の方は、自社のサイトが共用サーバーなのかVPSなのかを確認し、サーバー会社や制作会社の対応状況を確かめてください。開発者は、更新・再起動・痕跡確認までを一続きの作業として行ってください。あわせて、12月末にサポートが終わるPHP 8.2の環境は、この機会に移行の計画を立てることをおすすめします。
参考リンク
あわせて読みたい
npm v12でインストールスクリプトが既定で無効に:サプライチェーン攻撃への備えと移行準備
GitHubがnpm v12の破壊的変更を予告しました。依存パッケージのインストールスクリプトが既定で実行されなくなります。背景と、今のうちに進めておきたい準備をまとめます。
Node.js 2026年1月のセキュリティリリース:8件の脆弱性と、いま確認すべきこと
2026年1月13日、Node.jsの全サポート中ラインに8件の脆弱性修正が入りました。中身を整理し、事業者・開発者が今やるべき確認をまとめます。
EU AI法の透明性義務が2026年8月2日に適用開始:日本の事業者も確認したいチャットボット表示とAI生成コンテンツの扱い
EU AI法の第50条(透明性義務)が2026年8月2日から適用されました。直前に成立した改正で高リスクAIの規制は延期された一方、チャットボットの表示やディープフェイクの明示は予定どおり始まっています。