放っておくと、自分が銃口になる
珍しく、YOOtheme からメールが来ました。
普段は新機能の案内やセール告知ばかりで、正直あまり真剣に読んでいません。ところが今回は件名が違う。「重要なセキュリティ更新」。開いてみると、ZOOとYOOtheme Proの両方に深刻な脆弱性が見つかったので、すぐ更新しろ、と書いてあります。
うちはもう更新を当てました。この記事は、その報告というより、更新を当てながら考えたことの話です。
何が起きていたのか
ZOOはJoomla用のコンテンツ構築キットで、com_zooという名前で入っています。今回見つかったもののうち最悪の一つは、ログインも会員登録も要らずに、外から送り込んだファイルをサーバー上で実行できてしまう、というものでした。危険度の評価は満点です。満点というのは「これ以上悪くしようがない」という意味で、そう滅多に付く点数ではありません。
YOOtheme Proの方はもう少し限定的で、記事や下書きを作れる権限を持っている利用者なら悪用できる、という種類のものが二件。メールにも「そういう利用者に心当たりがなければ急ぐ必要はない」と正直に書いてありました。会員登録を開放していないサイトなら、慌てなくてよい部類です。
このあたりの詳しい話は、CVE番号で検索すればいくらでも出てきます。興味のある方は自分で辿ってみてください。読むと、案外わかりやすい日本語で説明している人がいます。
変わったのは危険度ではなく、速さ
さて、ここからが本題です。
私が引っかかったのは、脆弱性そのものより、修正版の出方でした。まず4.1.64が出て、その一時間後に4.1.65が出ています。数日のうちに4.1.66まで進みました。
「直したはずが直りきっていなかった」が、公開の場で立て続けに起きたわけです。責める気はまったくありません。むしろ、隠さずに出し続けた方が正しい。ただ、使う側から見ると意味が変わります。
昔は、更新というのは「たまに来る用事」でした。月に一度、思い出したときに管理画面を開けばよかった。それが今は、当番に近い。今日当てた更新が、明日には古くなっていることがある。完全な安全が保証されないのは昔からで、そこは変わっていません。変わったのは、安全でいられる期間の長さです。
公表から総当たりまでの猶予が、消えた
もう一つ、実感していることがあります。
以前、別のページビルダー拡張に致命的な穴が見つかったとき、うちのアクセスログに、その穴を狙う名前を堂々と名乗るスキャナーが現れました。公表されてから、そのスキャナーが世界中を舐め始めるまで、ほとんど間がなかった。
昔なら、脆弱性が公表されてから実際に攻撃道具が出回るまでに、それなりの時間がありました。手を動かせる人間が、腰を据えて書く必要があったからです。今は、公表された手順書さえあれば、道具を仕立てるのはずいぶん簡単になりました。世の中には賢い道具がいくらでもありますから。
つまり、猶予がなくなった。更新の通知が来てから当てるまでの数日が、以前ほど安全な数日ではなくなったということです。
乗っ取られた側は、被害者では終わらない
ここまでは、自分が被害を受ける話です。でも、私が一番書いておきたいのはその先です。
うちのサーバーには、毎日のように見知らぬアクセスが来ます。存在しない管理画面を探し、置いてもいないファイルを要求し、使ってもいない拡張機能の名前を打ち込んでくる。数字にすると、一日のリクエストの数パーセントがそういう類です。
では、その要求はどこから来ているのか。
もちろん本職の連中が自前で用意した機械もあるでしょう。しかし、少なからぬ数は、たぶん誰かの「もう触っていないサイト」です。三年前に作って、更新を止めて、ドメインだけ払い続けているサイト。乗っ取られたことにも気づいていない。そこに置かれた小さなプログラムが、次の標的を探して世界中を叩いている。
放置されたサイトは、スパムの中継所になり、詐欺の入れ物になり、そして次の獲物を探す偵察機になります。被害者のまま終わらないんです。気がつかないうちに、加害の側に回っている。
私のログに並んでいるあのIPのいくつかは、たぶん、誰かが手放したサイトの成れの果てです。
放っておくと、自分が銃口になる。
では、素人は手を出すなという話か
まったく逆です。
私は、自分の場所は自分で持つべきだと思っています。借り物の平場に載せているだけでは、規約が変わった日に全部消えます。だから自分でサーバーを借りて、自分で組んで、自分で直す。この考えは変えるつもりがありません。
ただし、続けるなら条件があります。しかもそれは、知識の量ではありません。
一つ。使っていないものを、置いておかない。今回のZOOがまさにそれで「入れた覚えすらない」ものが全権を明け渡す穴になっていた例です。試しに入れて、気に入らなくて、そのまま放置している拡張機能。管理画面の一覧を上から下まで眺めて、名前を見て用途が言えないものがあったら、それはもう外していい。動いているから残すのではなく、使っているから残すんです。
二つ。更新の知らせが、自分に届く状態にしておく。今回の私はYOOthemeからのメールで知りました。メールアドレスを変えたまま登録を直していなかったら、気づかないままだったはずです。有償の拡張機能なら購読期限、無償のものなら配布元の告知。どこを見れば新版が出たとわかるのか、自分で言えるようにしておく。
三つ。壊したときに、戻せるようにしておく。更新を当てるのが怖いのは、失敗が怖いからです。戻せるとわかっていれば、その日のうちに当てられます。バックアップは、事故に備えるものであると同時に、思い切りよく更新するための道具でもあります。
三つとも、詳しい知識は要りません。要るのは、抱えている数を減らすことと、手順を決めておくことだけです。
数を減らす
結局、私が言いたいのはそれだけかもしれません。
守るべきものが多いほど、守れなくなる。拡張機能を十五個入れているサイトは、十五本の水道管を持っているのと同じで、どれか一本が破れたら濡れます。全部を理解できる人はそう多くない。だったら、本数を減らすのが一番速い。
安全とは、詳しくなることではなく、抱えている数を減らすことだ——今回の一件で、私はそう受け取りました。
以前、このサイトで「お金がないことは、安全対策にはならない」という話を書きました。小さいから狙われない、というのは幻想だ、という趣旨です。今回はその続きで、「気づかないうちに、こちらが撃っている側になる」という話でした。
サイトを持つというのは、そういう責任を引き受けることでもあります。それでも私は、持つ方を選びます。