10月21日、プログラミング言語PHPに、深刻な脆弱性が2件見つかったことが公表されました。通称「php2shell」(CVE-2026-109618、CVE-2026-109619)。ログインなしで、外部からサーバー上のコードを実行されるおそれがあるとされています。自分でブログや会社のサイトを運営している人は、「うちは大丈夫?」を最初に確かめておきたいところです。
先に結論
- 修正版は、PHP 8.5.12・8.4.27・8.3.36・8.2.35
- PHP 8.1以前は公式の修正版が出ない見込み。移行が必要
- WordPressやプラグインを更新しても直らない。直すのはPHP本体
何が起きたのか
PHPの開発チームが、10月21日にセキュリティリリースとして公表しました。報告されている評価は、CVSS v4.0で9.2(最大10)。警戒度がかなり高い部類です。仕組みは、ある通信でメモリに不完全なデータが残り、次の通信でそれが予期しない動作を起こす、というものと説明されています。
悪用を主張するコードが出回り始めているとも伝えられていて、公表前の10月17日ごろから攻撃の試みが観測された、という報告もあります。猶予はあまりない、と考えておいたほうが安全です。
自分のサイトは対象?まず確かめる3つの方法
- WordPressの場合:管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」で、PHPのバージョンを見る
- レンタルサーバーの場合:サーバーの管理画面にある、PHPバージョンの設定欄を見る
- 自分でサーバーを管理している場合:コマンドの「php -v」に加えて、Webが実際に使うPHP-FPMなどのバージョンも確認する(CLIとWeb側で違うことがあります)
数字が、8.5.12以上、8.4.27以上、8.3.36以上、8.2.35以上のどれかに当てはまれば、修正は入っています。Linuxの場合は、バージョン番号ではなく、OSのパッケージが修正済みかどうかで判断します。
古いバージョンだったときは
PHP 8.1以前には、公式の修正版が出ません。OSの標準パッケージ側で修正が提供される場合もあるので確認が必要ですが、なければ、サポート中のバージョンへ移るしかありません。8.2系も2026年末でサポートが終わる予定なので、移行するなら8.3以降を目安にするのが無難です。
更新したあとは、Webサーバー(ApacheやPHP-FPM)の再起動も忘れずに。再起動しないと、古いプロセスが動き続けることがあります。
すぐに更新できないときの時間稼ぎ
- セッションのアップロード進捗機能を無効にする(session.upload_progress.enabled=0)
- 投稿データの上限を絞り、巨大なリクエストを拒否する
- WAF(防御サービス)を有効にする
- どうしても難しければ、サイトを一時停止する
ただし、これらは完全な防御ではありません。あくまで時間稼ぎで、本命はPHPの更新です。
もう攻撃されていたかを確かめる
10月17日以降のログを見て、エラーログに「Allowed memory size exhausted」や「signal 11」が急に増えていないか確認します。公開フォルダに見覚えのないPHPファイル、知らないユーザーや定期実行の設定がないかも見ておきましょう。疑わしい場合は、パスワードや鍵などの秘密情報を変更するのが基本です。
管理人の感想
この記事を書いている自分のサイトも、念のため確認しました。バージョンは8.2.35で、修正版でした。ほっとしましたが、8.2系も年末で区切りがくるので、次の移行は考えておく必要があります。「動いているから触らない」が、いちばん危ないのかもしれません。
ネットで見られる声のタイプ(論調の要約。個別の書き込みの引用ではありません)
- 確認派:「うちのサーバーのバージョン、いま見てみた」
- 先送り派:「検証環境がないから、更新が怖い」
- 相談派:「どこに頼めばいいか分からない」
まとめ:今日やることは3つ
バージョンを確認する、修正版でなければ更新(または移行)の予定を立てる、ログと不審ファイルを見る。この順で進めれば大丈夫です。あなたのサイトのPHP、いま何番でしたか?
出典:PHP公式セキュリティリリース(2026年10月21日)、GMO Flatt Securityブログ、各社の解説記事。本記事は公開情報にもとづく解説で、個別のシステムの安全性を保証するものではありません。最新の情報は、PHP公式のお知らせやIPAなどの公的機関の案内でご確認ください。


コメント