なぜPHPばかり狙われる?PythonやRubyではなくPHPなのか
PHPの重大な穴(PHP2Shell)のニュースを見て、疑問がわきました。
「なんで今回はPHPなんだろう。PythonやRubyじゃなくて」
調べてみると、答えは「PHPが特別に悪い」ではありませんでした。
PHPだけに穴があるわけではない
まず前提として、PythonにもRubyにも穴は見つかっています。
そのたびに、ふつうに修正版が出ています。
ただ、攻撃する側から見ると、PHPはいちばん割に合う標的なのです。

PHPが狙われやすい3つの理由
1. 使っているサイトが圧倒的に多い
PHPで動いているWebサイトは、世の中の7割以上と言われます。
WordPressだけでも、全サイトの4割ほどを占めます。
1つの穴で、何千万ものサイトを狙えるのです。
2. 古い版のまま放置されたサイトが多い
レンタルサーバーで作ったまま、誰も面倒を見ていないサイトがたくさんあります。
サポートの終わった古いPHPのまま動いているサイトも珍しくありません。
3. 作りの事情
- PHPは、Webのアクセスを受けて直接動く仕組み。外からのデータに真っ先に触れる
- PHP本体は、扱いを誤ると穴になりやすいC言語で書かれている
- 30年近く前からの古い仕組みも、たくさん残っている
PythonやRubyは?
| PHP | Python・Ruby | |
|---|---|---|
| Webサイトでの利用 | とても多い | PHPよりずっと少ない |
| よくある置き場所 | レンタルサーバー(個人・小さなお店も多い) | 会社のエンジニアが管理するサーバー |
| 更新のされ方 | 放置されがち | 比較的更新される |
同じような穴が見つかっても、狙えるサイトの数がまるで違います。
たとえるなら、いちばん大きな住宅街
空き巣は、鍵が古くて、家の数が多い住宅街から回ります。
PHPは「いちばん大きな住宅街」なのです。
ほかの言語の家でも、鍵が古ければ同じように狙われます。
大事なのは、言語の好き嫌いではなく、自分の家の鍵を新しくしておくことです。

今回は「選ばれた」わけではない
もうひとつ。今回は、悪い人が「PHPを選んだ」というより、研究者がPHPの穴を見つけて公表した、という流れです。
公表されたことで、攻撃者が一斉に狙いはじめた、という順番です。
自分のサイトのPHPの版の確かめ方は、こちらにまとめました。
TAG
