悪い人は穴を秘密にするのに、なぜ修正版が間に合うのか PHP2Shellで崩れた「いつもの流れ」
PHPの重大な穴(PHP2Shell)のニュースを追っていた夜中、素朴な疑問がわきました。
「悪い人たちは、自分のやっていることを秘密にしておくものじゃないの?」
穴を見つけた攻撃者が黙っていれば、誰も気づかない。
なのに、なぜ修正版が用意できて、「今すぐ更新を」と呼びかけられるのか。
穴を見つけるのは、悪い人だけではない
実は、穴を見つけるのは良い側であることが多いのです。
- セキュリティの研究者:穴を探すのが仕事の人たち
- 開発チーム自身:コードを見直す中で見つける
- 懸賞金に応じる人:「穴を見つけたらお金を払います」という募集に応じる人たち。犯罪者に売るより、安全に稼げる
いつもの流れ:直してから公表する
良い側が穴を見つけたときは、ふつうこう進みます。
- 研究者が穴を見つけ、開発チームにこっそり知らせる
- 開発チームが、秘密のまま修正版を作る
- 修正版と一緒に「こういう穴がありました」と公表する
公表したときには、もう直し方ができている。
だから「対策ができる」のです。
この進め方を「協調公開」と呼びます。

今回は、その流れが崩れた
ところが、PHP2Shellでは、この流れがうまくいきませんでした。
報道によると、公表の予定日より前に、穴の情報がネットに漏れてしまったのです。
PHPのチームは前日に「10月21日に修正版を出す。詳細が出回ったり攻撃が始まったりしたら前倒しする」と告知し、予定どおり21日に修正版を出しました。
秘密のはずの情報が、直す前に外へ出てしまう。
これは、守る側にとってかなり怖い状況です。
悪い人が先に見つけていたら
攻撃者が先に見つけて、秘密のまま使っている穴もあります。これを「ゼロデイ」と呼びます。
それでも、気づくきっかけはあります。
- 攻撃を受けた会社が、記録の中に不審な動きを見つける
- セキュリティ会社が仕掛けた「おとりのサーバー」に、攻撃が引っかかる
そこから手口を分析して開発チームに知らせ、修正が始まります。
いちばん危ないのは「公表したあと」
意外かもしれませんが、修正版が出たあとが、いちばん危ない時間です。
攻撃者は、修正前と修正後のプログラムを見比べます。
どこを直したかが分かれば、穴の場所も分かってしまうからです。

今回も、「修正版の公開から短時間で大量の攻撃が始まる」と予想した専門家がいました。
すでに攻撃を観測したという報告と、まだ確認していないという報告が、並んで出ています。
だから、「修正版が出た」というニュースは、「今すぐ動いてください」という合図なのです。
PHPの版の確かめ方や、レンタルサーバーで自分にできることは、こちらにまとめました。
