「PHP2shell」で何が起きたのか。PHPを「厨房の料理人」にたとえて説明してみる
はじめに:日本時間2026年10月21日
10月21日の午後から22日の朝にかけて、国内のウェブサービスが次々と止まりました。イラスト投稿サイト、動画サイト、スマホゲーム、ネットショップ、銀行、鉄道会社まで。普段使っているサービスがメンテナンス中で、首をかしげた方もいるかもしれません。
理由はどれも同じでした。「PHP(ピー・エイチ・ピー)」というプログラミング言語に、深刻な欠陥が見つかったのです。この重大な脆弱性を「PHP2shell」と総称しています。
とはいえ、「そもそもPHPって何?」という方がほとんどだと思います。もしかしたら、「Webサイトは持っているけど、PHPなんて聞いたことがない」と言う方がいらっしゃるかもしれません。
そこでこの記事では、PHPとは何か、今回なにが起きたのかを、できるだけ専門用語を使わずに説明してみます。
よく使われる例なのですが「レストラン」に例えてみたいと思います。
1. ひとことで言うと
PHPは、ホームページを「その場で組み立てる」ための言語です。
ホームページというと、どこかに完成したページが1枚ずつ保存されていて、それが画面に表示される、というイメージがあるかもしれません。もちろん、そういう作りのサイトもあります。
しかし、ブログやニュースサイト、ネットショップの多くは違います。誰かがページを開いたその瞬間に、サーバー(ホームページを置いておくコンピューター)がページを組み立てて、できたてを届けています。その「組み立て係」を担っている代表格が、PHPです。
2. 弁当屋とレストラン
ホームページには、大きく分けて2種類あります。
ひとつは「静的サイト」。これは作り置きの弁当屋です。お弁当はあらかじめ作って棚に並べてあり、お客さんが来たら、それをそのまま手渡します。早くて確実ですが、「ご飯少なめで」といった注文には応えられません。そもそも店の奥に厨房がないのです。
もうひとつは「動的サイト」。こちらは注文を受けてから作るレストランです。お客さんの注文に応じて、厨房で料理人が一皿ずつ仕上げるわけです。手間はかかりますが、そのぶん柔軟です(そうでない店もあるかもしれませんが笑)。
このレストランの登場人物を、ホームページの仕組みに当てはめると、こうなります。
| レストラン | ホームページの世界 |
|---|---|
| 料理人 | PHP |
| 冷蔵庫の食材 | データベース(記事の文章や商品情報、会員情報などを保管しておく場所) |
| レシピ | テーマやプラグイン(サイトの見た目や機能を決めるプログラム) |
| 完成した一皿 | 画面に表示されるページ |
PHPは厨房の料理人。この一点だけ覚えておけば、この先の話はすべて理解できます。
3. ページが開かれた瞬間、厨房では何が起きている?
たとえば、あなたがブログ記事のリンクをクリックしたとします。画面に記事が表示されるまでの、ほんの一瞬のあいだに、厨房ではこんなことが起きています。
- 注文が届く:あなたのスマホやパソコンから、「この記事を見せてください」という注文がサーバーに届きます。
- 料理人が受け取る:PHPが注文票を受け取ります。
- レシピを開く:PHPは、テーマやプラグインに書かれた手順を読みます。「見出しはここ、本文はここ、サイドバーには人気記事を並べる」といった段取りです。
- 冷蔵庫から食材を出す:データベースから、その記事の本文、投稿日、関連記事などを取り出します。
- 盛り付けて出す:レシピどおりに組み立てたページを、あなたの画面に届けます。
- 調理台を片付ける:一皿出し終えたら、使った道具や材料を片付けて、次の注文に備えます。
これを、注文が来るたびに毎回くり返しています。人気サイトなら、一秒間に何十、何百という注文をさばいているわけです。
最後の「片付け」は地味ですが、覚えておいてください。
今回の騒動の主役は、まさにここでした。
4. なぜPHPはここまで広まったのか
PHPの始まりは1990年代半ば。ある技術者が、自分のホームページを管理するために作った小さな道具でした。もともとの名前は「Personal Home Page」。個人のホームページ用、という素朴な出自だったといえます。
それから約30年。PHPは世界中のウェブサイトを支える、最も普及した「厨房の料理人」になりました。理由は大きく3つあります。
- 覚えやすい:ホームページの文章の中に、少しずつプログラムを書き足していける。初心者でも始めやすい言語でした。
- どこでも雇える:安価なレンタルサーバー(ホームページを置く場所を月額で貸すサービス)の多くが、最初からPHPを使える状態で提供しています。料理人つきの貸し厨房のようなものです。
- 人気のレシピ集がPHP製:世界中で使われているCMS(専門知識がなくてもブログやホームページを更新できる仕組み)の多くが、PHPで動いています。WordPress、Drupal、Joomlaといった有名どころは、いずれもPHPが料理人です。
人気のレシピ集が、PHPという料理人を前提に書かれている。だから、レシピ集を使う店が増えるほど、PHPも広まっていきました。
裏を返すと、PHPに欠陥が見つかれば、その影響は世界中の厨房に一斉に及びます。今回の騒ぎが大きくなったのは、このためです。
5. 今回の騒動を、レストランで振り返る
今回見つかった欠陥は2つ。どちらも危険度は10点満点中9.2という、最高レベルに近い評価です。しかも、ログインもパスワードも不要で、外部からリモート(遠隔操作)され、サーバー上で好きなプログラムを動かされるおそれがありました。
何が起きたのか(日本時間)
| 日時 | 出来事 |
|---|---|
| 10月20日 | PHPの開発チームが、重大な欠陥2件の修正版を翌日に出すと予告 |
| 10月20日 | 予定より早く、欠陥の情報が外部に流出 |
| 10月21日 夕方 | 修正版の公開を待たずに、攻撃とみられる通信が海外で観測される |
| 10月21日 16時 | 国内大手レンタルサーバーが、予防措置として公式サイトや管理画面を一時停止(不正アクセスによるものではないと説明) |
| 10月21日 23時ごろ | 修正版を公開 |
本来は、修正版の公開と欠陥の発表を同時に行う段取りでした。ところが情報が先に漏れたため、各社は修正版が出る前から身構えることになりました。冒頭で触れた一斉メンテナンスは、「やられたから止めた」のではなく、「やられる前に止めた」ものです。
欠陥の正体:パンクした厨房の、片付け忘れ
3章で、料理人は一皿ごとに調理台を片付ける、と書きました。今回の欠陥は、この片付けに潜んでいました。
料理人が一度に抱えきれないほどの作業を押しつけられると、PHPは調理を途中で打ち切ります(専門的には「メモリ不足」と呼ばれる状態です)。そのとき本来なら、作りかけの材料もすべて片付けるはずでした。ところが、作業途中の材料が調理台に残ったまま、次の注文に移ってしまうことがあったのです。
犯人はそこを狙います。わざと厨房をパンクさせる注文を送り、散らかった調理台に毒を仕込む。次の料理人がその残り物を使ったとき、犯人の思いどおりの料理、つまり犯人の命令が実行されてしまう。今回の欠陥を大づかみに言えば、そういう仕組みです。
やっかいなのは、これが料理人本人の癖だった点です。サーバーの構成によっては、料理人がレシピを開く前の段階で攻撃が成立することも確認されています。つまり、レシピ(WordPressのテーマやプラグイン)がどれだけ丁寧に書かれていても、防ぎようがありませんでした。
さらに、厨房に残った他のお客さんの注文票、つまりパスワードや認証情報などを盗み見られるおそれも指摘されています。
修正版は、料理人の再教育
10月21日夜に出た修正版は、いわば料理人の再教育です。途中で手を止めたときも、調理台をきちんと片付けてから次の注文に移るよう、手順を叩き込み直したわけです。
修正版の番号は、8.5.12、8.4.27、8.3.36、8.2.35の4つ。それより古い8.1以前の料理人には、PHPの公式からは再教育の機会が用意されていません。すでに引退扱い(サポート終了)だからです。
静的サイトは無縁だった
一方、作り置きの弁当屋、つまり静的サイトは今回の騒ぎと無縁でした。理由は単純で、そもそも厨房がないからです。料理人がいなければ、料理人の癖を突かれることもありません。
ちなみに、今回の欠陥を見つけた研究チームには、AI企業も名を連ねています。最先端のAIが欠陥の発見に一役買ったとされており、これはこれで考えさせられる話です。
必ずしも「AIが出てきたせいで世界が悪くなった」ということではないのです。
本質は、あくまでも、使う側の人間の倫理なのです(2026年現在は。自律型になったらその後はわかりません)。
6. サイトを持っている人が覚えておきたいこと
最後に、ホームページを運営している方に向けて、押さえておきたい点をまとめます。
1. レシピを新しくしても、料理人は直らない
いちばん誤解されやすいところです。CMSやプラグインを最新版に更新しても、今回の欠陥は直りません。直すべきは料理人、つまりPHPそのものです。
2. レンタルサーバーなら、料理人の再教育はまず事業者の仕事
一般的なレンタルサーバーでは、PHP本体は事業者が管理しており、利用者が自分で入れ替えることはできません。まずは契約している事業者のお知らせを確認しましょう。対応が終われば、PHPのバージョン番号が上の4つのどれかになっているはずです。
3. 古い料理人を指名していないか確認する
サーバーの管理画面で、PHPのバージョンを自分で選べる場合があります。何年も前に8.1以前を選んだままになっているなら、要注意です。公式の修正版が出ていない系列なので、修正版のある新しい系列に切り替える必要があります。ただし、切り替えるとサイトの表示が崩れることもあるので、制作を頼んだ人がいれば相談してから進めると安心です。長年、貢献してくれた古参料理人をクビにするようで酷ですが、最新の衛生管理者資格を持っていなかったらどうなるか?を考えるとわかりやすいかもしれません。食中毒が起きた際、誰が責任を取るのか?という話に発展するかも、と考えるとどうでしょうか。
4. 「本日休業」の札だけでは守れない
CMSには、サイトを一時的に閉じる「メンテナンスモード」という機能があります。しかしこれは、店先に「本日休業」の札を出すようなものです。料理人が厨房にいて裏口が開いていれば、犯人は入ってこられます。本当にサイトを止めるなら、PHPが動き出す前の段階、つまりサーバーの入口でアクセスを断つ必要があります。
5. 入口の警備員は心強いが、再教育の代わりにはならない
Cloudflareなどの「WAF」(不審なアクセスを入口で弾く仕組み)は、今回の攻撃に対する防御策をいち早く用意しました。ただ、PHPの開発者自身が「どんな応急処置も攻撃を完全には防げず、確実な対策は修正版の適用だけだ」と明言しています。
6. 放ったらかしのサイトこそ危ない
昔作って更新していないサイトは、古い料理人がそのまま厨房に立っている可能性が高い場所です。または、「自称・料理店オーナー」が作った店が、ほとんどオープンしないままに放置されているかもしれません。もう使っていないなら、この機会に閉じることも考えてください。
今回、国内で一斉にサービスが止まったのは、被害が出たからではなく、各社が先手を打った結果でした。慌てる必要はありません。ただ、自分の店に料理人がいるのかどうか。いるなら、その料理人は再教育を受けたのかどうか。この2点だけは、確かめておいて損はないはずです。
おわりに:世界中の厨房に、同じ料理人
今回の騒ぎで改めて見えたのは、世界中の厨房が、ほぼ同じ料理人を雇っているという事実です。
一軒一軒の店にとって、それは合理的な選択でした。PHPは覚えやすく、安く雇え、人気のレシピ集もそろっている。わざわざ別の料理人を探す理由はありません。けれど、誰もが同じ合理的な選択を重ねた結果、ひとりの料理人の癖が、世界中の厨房を一晩で止める力を持つようになりました。
農業の世界には「モノカルチャー(単一栽培)」という言葉があります。19世紀半ばのアイルランドでは、主食のジャガイモをほぼ一つの品種に頼っていました。そこへ疫病がやってきて、畑という畑が同時にやられ、大飢饉を招いたと言われています。一品種に揃えるのは効率的です。ただ、弱点まで揃ってしまうのです。
「だから一刻も早くPHPを捨てよう」という話ではありません。どの料理人が天下を取ったとしても、同じ構図は生まれます。それに、PHPの開発チームと研究者たちは、今回も短期間で再教育を仕上げてみせました。このことは、賞賛に値することだと思いますし、希望を感じます。
考えておきたいのは、便利さと引き換えに何を一か所に預けているのか、ということです。私たちが日々受け取っている「できたての一皿」は、思っている以上に少数の料理人の腕にかかっています。
「効率化」「便利」の請求書は、ときどき、こうして真夜中に届きます。
ほとんど手遅れのタイミングで。
また、今後、おそらく「PHPは終わりだ!」「WordPressはオワコン」「Cloudflareに乗り換えないとWebサイトが消える」など、扇情的なことを言う人が増えると思います。「え!やばいじゃん!」と思うでしょうが、そういうときこそ冷静に考え、複数の選択肢を持って視野を広く保つことをおすすめします。
参考情報
※2026年10月22日昼時点の情報に基づいています。
- CERT-EU Security Advisory 2026-018: Critical Vulnerabilities in PHP
- CISA: Critical Vulnerabilities in PHP Require Immediate Patching
- BleepingComputer: PHP ships emergency patches for critical PHP2Shell flaws
- Cloudflare: Cloudflare deploys protections against php2shell vulnerability
- watchTowr: PHP Remote Code Execution (PHP2Shell)
- Sansec: PHP2Shell
- お名前.com:PHPの脆弱性への弊社対応について
画像クレジット
アイキャッチ画像のPHPロゴ:Colin Viebrock / CC BY-SA 4.0(ロゴ自体は改変せず、白背景の画像に配置)。このアイキャッチ画像も同じくCC BY-SA 4.0で提供します。なお、本記事はPHPの開発元やその関係者が推薦・監修したものではありません。
追記・更新について
本記事は2026年10月22日時点の情報に基づいています。事態は現在も動いているため、新たな事実が判明した場合は、この欄に日付を添えて追記します。