Won. Studio

🛡️ 実践 11【緊急】PHP の脆弱性、うちの WordPress は大丈夫?Claude Code に確かめて直させた

10月21日の夜(日本時間)、PHP の重大な脆弱性2件(通称 PHP2Shell)の修正版が出ました。国内でも大手サービスが修正前に緊急メンテナンスに入るほどの騒ぎです。「うちのサイトは大丈夫?」を、Claude Code に実際に確かめてもらい、直してもらいました。題材は、何年も前に作ってもらって PHP 7.4 のままになっている WordPress です。結論から言うと、PHP 7.4.33 を 8.4.27 に上げ、古いテーマも先に直して、表示は1バイトも変わりませんでした。途中、Claude Code の推測が外れる場面もありました。

10月21日に出た、PHP の修正版(公式の発表)

  • 何が危ないか — ログインなしで、外からプログラムを動かされるおそれ。CVE-2026-109618・CVE-2026-109619 の2件で、深刻度は CVSS v4.0 で 9.2(Critical)
  • 修正版の番号 — 8.5.12・8.4.27・8.3.36・8.2.35。これより前の番号のままなら、まだ直っていない
  • 8.1 以前は公式の修正なし — サポートが終わった版。7.4・8.0・8.1 向けの最小限のバックポートは公開されている。8.2 も 2026年12月31日で終わる
  • 完全な対策はアップデートだけ — 設定で一時的に避ける方法も示されているが、公式は「完全な対策ではない」としている

出典は PHP 公式の発表(php.net、2026年10月21日)です。この記事は守る側の手順だけを扱います。攻撃の方法は扱いません。

今回の流れ

  • PART 1 確かめる — 「まだ何も変えないで」と付けて、影響を受けるか調べてもらう
  • PART 2 AI の推測の裏を取る — 「推測」を根拠まで確かめてもらう
  • PART 3 PHP 8.4 に上げる — 壊れる所は先に直し、元に戻せる形で
  • PART 4 確かめ直す — お店のページと、WordPress の「サイトヘルス」で版を見る

題材のサイト

  • 架空のお店「こもれび珈琲」 — 撮影用に仮想 Mac の中に用意した WordPress 7.1.3(日本語版)
  • 何年も前に作ってもらった設定 — PHP 7.4 のまま。テーマは PHP 7 の頃の書き方
  • サーバーの組み方 — nginx + PHP-FPM + MariaDB。レンタルサーバーや VPS と同じ組み方
  • 使った AI — Claude Code(Opus 5.5・auto mode)

試したのは2026年10月22日です。


PART 1 確かめる(まだ何も変えない)

まずは調べるだけ。どこが危ないか分かってから直します

何年も前に作ってもらった、お店の WordPress

何年も前に作ってもらった、お店の WordPress

営業時間・メニュー・お知らせを出すだけの、よくあるお店のサイトです。

管理画面に「PHP の更新が必要です」

管理画面に「PHP の更新が必要です」

WordPress の管理画面を開くと、ダッシュボードに「PHP の更新が必要です」。PHP 7.4.33 のままでした。下のニュース欄にも「PHP の重大なセキュリティリリース」が出ています。

Claude Code に「うちは大丈夫?」と聞く

Claude Code に「うちは大丈夫?」と聞く

サイトのフォルダで Claude Code を起動して、こう頼みました。「PHP に重大な脆弱性が見つかったとニュースで見ました。このパソコンで動いている WordPress(http://localhost:8000)は影響を受けますか?公式の発表と照らし合わせて確かめてください。まだ何も変更しないでください。」

48秒で「影響を受ける」

48秒で「影響を受ける」

Claude Code はまず、サイトを実際に動かしている PHP(コマンドの php ではなく PHP-FPM)を調べ、7.4.33 と特定。PHP の公式サイトで発表を確かめて、48秒で「影響を受ける」と答えました。修正版の番号、8.1 以前は公式の修正が出ないこと、同じネットワークのほかの機械からサイトが見える設定になっていることも指摘。言われたとおり、何も変えていません。


PART 2 AI の推測の裏を取る

「確かめた結果」と「推測」を分けて聞きます

「可能性は低い」は推測だった

「可能性は低い」は推測だった

答えの中に「インストールされている PHP は 10月19日のビルドで、修正の公開より前。修正が入っている可能性は低い」という一文がありました。これは確かめた結果ではなく推測です。そこで「今回の修正が本当に入っていないか、配布元のソースまでさかのぼって確かめてください。まだ何も変更しないでください」と聞き返しました。

配布元のソースと公式の修正を、ファイルごとに照らし合わせる

配布元のソースと公式の修正を、ファイルごとに照らし合わせる

Claude Code は、Homebrew のレシピ、インストールの記録、配布元のソースを突き合わせ、PHP 公式の 7.4 向けの修正と、ファイルを1つずつ照らし合わせました。17ファイル中16ファイルで修正が入っていると確認、残る1つは中身を直接比べ、動いているプログラムの中に修正で足された関数があるかまで確かめています。

2分14秒で「修正は入っていました。誤りでした」

2分14秒で「修正は入っていました。誤りでした」

結果は「インストールされている PHP 7.4 には今回の修正が入っていました。前回『可能性は低い』とお伝えしたのは誤りでした」。配布元(Homebrew の shivammathur/php)は、公開の前から修正を用意していたようです。版の表示(7.4.33)だけでは分かりません。それでも 7.4 はサポートが終わった版で、次の脆弱性で修正が届くとは限らないので、8.4 へ移るのがおすすめ、という結論は同じでした。

ここが大事

AI の答えには、確かめた結果と推測が混ざります。

「本当に?根拠は?」と聞くと、自分で調べ直して訂正してくれました。


PART 3 PHP 8.4 に上げる

「8.4 に上げてください。上げたあと、サイトが今までどおり表示されるかも確かめてください」と頼みました

上げる前に、PHP 8 で動かない古い書き方を先に直す

上げる前に、PHP 8 で動かない古い書き方を先に直す

Claude Code は上げる前に、今のサイトの表示を記録し、テーマの中身を読みました。PHP 8 で消えた書き方が4か所(create_function、each()、文字の取り出し方 {0}、magic quotes の判定)。赤が直す前、緑が直したあとです。直したあと、まだ 7.4 のままで表示が変わらないことを6ページで確かめてから、次に進みました。

2分37秒で完了。6ページとも1バイトも変わらず

2分37秒で完了。6ページとも1バイトも変わらず

PHP 8.4.27 を入れ(7.4 は消さずに残し、ほかのソフトは巻き込んで更新しない指定つき)、設定ファイルが作られていなかったのにも自分で気づいて作り、PHP-FPM を 7.4 から 8.4 に切り替えました。主な6ページの表示は、切り替え前と1バイトも違いません。そのまま上げていたら、トップページはエラーで表示できなくなるところでした。戻し方も書いてあります。


PART 4 確かめ直す

Safari と、WordPress の管理画面で見ます

お店のページはそのまま、警告は消えた

お店のページはそのまま、警告は消えたお店のページはそのまま、警告は消えた

お店のページは、見た目も中身も前と同じ。管理画面の「PHP の更新が必要です」は消えました。

サイトヘルスで PHP 8.4.27

サイトヘルスで PHP 8.4.27

管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」。PHP バージョン 8.4.27、PHP SAPI は fpm-fcgi。サイトを動かしている PHP が修正版に切り替わっています。レンタルサーバーの人も、ここを見れば自分のサイトの PHP の版が分かります。

実際に試した結果(10月22日・仮想 Mac)

  • 確かめる — 48秒。サイトを動かす PHP-FPM の版を調べ、公式の発表と照らし合わせた
  • AI の推測 — 「修正は入っていない可能性が高い」は外れ。聞き返すと、ソースまで調べて訂正(2分14秒)
  • 上げる — 2分37秒。テーマの古い書き方4か所を先に直し、7.4 は消さずに残した
  • 確かめ直す — 6ページの表示が1バイトも変わらない。サイトヘルスで 8.4.27

あなたのサイトは?

  1. WordPress なら、まず版を見る — 管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」
  2. レンタルサーバーの人 — 管理画面で PHP の版を 8.3 か 8.4 に。サーバー会社のお知らせも確認
  3. 自分で管理するサーバー(VPS など) — 修正版に上げて、PHP-FPM などの再起動まで

AI に任せるときのコツ

  1. 最初は「何も変えないで」と調べさせる — どこが危ないか分かってから、直す
  2. 推測か、確かめた結果かを聞く — 「本当に?根拠は?」と聞けば、調べ直してくれる
  3. 元に戻せる形で変えてもらう — 古い版を残す・切り替える前の表示を記録する

PHP 公式の発表:https://www.php.net/archive/2026.php 。Claude Code の使い方は「Claude 使い方 完全ガイド」の記事と動画でも紹介しています。