2026.10.23
PHP2Shell(php2shell)とは?PHPの重大な脆弱性の影響範囲・確認方法・対処法【2026年10月】
2026年10月21日、PHPに認証なしで外部からコードを実行されうる重大な脆弱性「PHP2Shell(php2shell)」が公表され、修正版が公開されました。
PHPで動いているWebサイトは、WordPressをはじめとして非常に多くあります。「自社のサイトは対象なのか」「何をすればいいのか」を、専門用語をできるだけ避けて整理します。
結論:PHPのバージョンを確認し、修正版へ更新する
- 脆弱性はCVE-2026-109618とCVE-2026-109619の2件
- 認証なしで、1回のリクエストから攻撃される可能性がある
- 修正版は PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12
- PHP 8.1以前はサポート終了(EOL)で、PHP本体の公式修正版はない
- 公開の4日前(10月17日)に攻撃の試行が観測されたと報告されている
- WordPressやプラグインを更新しても、PHP本体が古ければ解消しない
まずは、使っているPHPのバージョンを確認してください。
何が起きたのか
2件の脆弱性
| CVE | 内容 |
|---|---|
| CVE-2026-109618 | メモリ不足(OOM)時の処理の不備により、リクエストのデータが不完全な状態のまま扱われ、コード実行につながる |
| CVE-2026-109619 | リクエストごとの内部状態が、メモリ解放後も残り、次のリクエストで使われてコード実行につながる |
どちらも、深刻度は「Critical(緊急)」とされています。GMO Flatt Securityの情報として報じられた深刻度の数値(CVSS v4.0)は、2件とも9.2です。
どちらも認証が不要で、アプリケーションのコードが動く前の段階で攻撃が成立しうると説明されています。
公開までの経緯
- 2026年10月17日:Amazonのセンサーが、攻撃の試行を観測したと報告
- 2026年10月21日:脆弱性の詳細と修正版が公開
- 公開前から、GMO Flatt Securityが暫定的な回避策を呼びかけていた
なお、公開前には「Session Upload Progress(セッションのアップロード進捗)機能が関係するのではないか」という推測が出て、session.upload_progress.enabled=0 という設定が暫定策として提案されました。しかし、その後の情報では、この設定だけでは完全な対策にならず、回避される可能性が高いとされています。PHP公式も、設定変更では部分的な保護にとどまると説明しています。設定変更で済ませず、更新を行ってください。
影響を受けるのはどんなサイトか
PHPでWebリクエストを処理している環境は、広く対象になりえます。公式の情報では、次のような構成が挙げられています。
- PHP-FPM
- Apache(mod_php)
- php-cgi
- FrankenPHP
- LiteSpeed
特に危険度が高いのは、Apache + mod_phpの構成とされています。
WordPress、Drupal、Joomlaなど、PHP製のCMSでも、認証なしでのコード実行が実証されたと報告されています。PHP公式は「CMSやプラグインを更新するだけでは、脆弱なPHP本体は置き換わらない」と説明しています。
バージョン別の対応表
| PHPのバージョン | 状況 | 対応 |
|---|---|---|
| 8.5系 | 修正版あり | 8.5.12以上へ更新 |
| 8.4系 | 修正版あり | 8.4.27以上へ更新 |
| 8.3系 | 修正版あり | 8.3.36以上へ更新 |
| 8.2系 | 修正版あり | 8.2.35以上へ更新 |
| 8.1以前 | サポート終了(EOL) | 新しい系統へ移行。ディストリビューションやLTS提供元の修正がある場合は確認 |
8.1以前については、PHP 7.4・8.0・8.1向けに、ソースからビルドする人向けの最小限のパッチも提供されたと報じられています。ただし、これは一般の利用者向けではありません。
自分のサイトが対象か確認する方法
WordPressの場合
- WordPress管理画面の「ツール」→「サイトヘルス」を開く
- 「情報」タブ→「サーバー」の項目で、PHPのバージョンを確認する
レンタルサーバーの場合
多くのレンタルサーバーは、管理画面の「PHPバージョン設定」などで確認できます。サーバー会社が、PHPの更新状況や対応方針をお知らせで公表している場合もあります。
注意:バージョン番号だけでは判断しにくいこと
OS(Linuxディストリビューション)やレンタルサーバー会社は、PHPのバージョン番号を変えないまま、修正だけを取り込む(バックポート)ことがあります。「8.2.30と表示されているから危険」と決めつけず、サーバー会社の案内も確認してください。
今すぐやること
1. PHPを更新する
最優先の対応は、修正版への更新です。
- レンタルサーバー:管理画面でPHPバージョンを上げられるか確認する。サーバー会社の対応状況も確認する
- VPS・自社サーバー:OSのパッケージ更新、または公式の修正版へ更新する
- Dockerなど:ベースイメージを更新して再構築し、再デプロイ後に、動いているPHPのバージョンを確認する
更新前には、バックアップを取り、できればテスト環境で動作を確認してください。
2. すぐに更新できない場合の暫定対応
- WAF(Webアプリケーションファイアウォール)を前段に置く:Cloudflareは10月21日にPHP2Shell向けのルールを導入し、全プランで有効としています。ただし、攻撃者が手口を変えているとも報告されており、WAFだけでは不十分です
- 影響を受けるサービスへのアクセスを制限する、または一時的に停止する:英国のNCSCなどは、すぐに修正できないシステムは、オフラインにすることを勧めています
session.upload_progress.enabled=0:前述のとおり、完全な対策ではありません
3. 公開サイトの状態を確認する
攻撃の試行が観測されている以上、更新後も次を確認すると安心です。
- 見覚えのないファイルや管理者アカウントが増えていないか
- サーバーのアクセスログに、不審なリクエストがないか
- 心当たりのない設定変更がないか
不安がある場合は、専門の事業者に相談してください。
PHP 8.1以前で動かしているサイトの場合
PHP 8.1以前は、PHP本体のサポートが終了しています。今回のような脆弱性が見つかっても、公式の修正版は出ません。
古いPHPで動いているサイトは、次のような選択肢があります。
- サイトのコードやテーマ・プラグインを、新しいPHPに対応させる
- 新しいPHPに対応したテーマや仕組みへ作り替える
- WordPressに依存しない構成(静的サイトやヘッドレス構成など)へ移行する
PHPの更新で表示が崩れたり、古いプラグインが動かなくなったりすることはよくあります。「更新したいが、何が壊れるか分からない」という場合こそ、早めに専門家に確認することをおすすめします。
移行や作り替えの考え方は、こちらの記事も参考にしてください。
よくある質問
Q. WordPressのプラグインを最新にすれば大丈夫ですか? A. いいえ。この脆弱性はPHP本体のものです。CMSやプラグインを更新しても、PHPが古いままでは解消しません。
Q. PHPを使っていないサイトも対象ですか? A. PHPで動いていないサイト(静的なHTMLのみ、PHP以外の言語で動くサイトなど)は、この脆弱性の直接の対象ではありません。ただし、サーバー上で別のPHPアプリケーションが動いていないかは確認してください。
Q. レンタルサーバーなので、自分では何もできません。 A. まず管理画面でPHPのバージョンを確認し、サーバー会社の案内を確認してください。バージョン変更ができる場合は、テストのうえ更新します。
Q. すでに攻撃されたかどうかは分かりますか? A. 不審なファイルやログ、アカウントの増加などを確認します。断定は難しいため、不安があれば専門家に調査を依頼してください。
まとめ
- PHP2Shellは、認証なしでコードを実行されうるPHPの重大な脆弱性(CVE-2026-109618・CVE-2026-109619)
- 修正版は8.2.35 / 8.3.36 / 8.4.27 / 8.5.12。8.1以前はEOLで公式修正なし
- 設定変更やWAFだけでは不十分。PHP本体の更新が基本
- WordPressやプラグインの更新だけでは解消しない
- 古いPHPのサイトは、更新と合わせて、作り替え・移行も検討する
PHPの更新や、古いサイトの保守・移行についてお悩みの方は、LEAPHのホームページ制作・保守サービスもぜひご覧ください。
出典
- PHP 公式ニュース(php.net)
- GitHub Security Advisory:CVE-2026-109618(php-src)
- GitHub Security Advisory:CVE-2026-109619(php-src)
- PHPの重大脆弱性に関する報道(窓の杜)
- PHPの重大脆弱性「php2shell」、パッチ公開まで待てない(@IT)
- PHP2Shell: CVE-2026-109618 and CVE-2026-109619(Help Net Security)
- PHP2Shell(Wiz)
(2026年10月23日時点の情報です。状況は変わる可能性があるため、最新の公式情報を確認してください。)