なんか robots.txt がホットなキーワードになっていたので今さら知ったのですが、通信機器レンタルサービスの会社さんがクレジットカード情報をど派手に流出させたた件で、サイトに設置されていた robots.txt が色々と残念な件について話題になっていました。
情報が流出した直接の原因は SQL インジェクションによる攻撃を受けたとのことで、同サイトの robots.txt が何の経緯で話題になったのかはわかりませんが、robots.txt の内容から、CMS に Drupal を使ってるらしいことや、Drupal のパッケージに同梱されてくる robots.txt ほぼそのまま設置されている件、さらにその、Drupal の古いバージョンには XSS を含め、いくつかの脆弱性があることから、不正アクセスの経路として考えられるかもってことなんでしょうか?
でも、不正アクセスの経路が同社のプレスリリースなどを読んでいる限りわからないのであくまで推測ですが、robots.txt 自体は直接的な脆弱性ではないので、そこに管理画面のアドレス書くのとかは、自由ですよ。わかってやってるなら。
通抜け無用で通抜けが知れ
確かに、robots.txt に余計なこと書くことで、やぶ蛇的な事になるケースは多々あります。一般人は見ないかもしれないですけど、Web 業界でお仕事している人って、結構、人のサイトの robots.txt とか見てますからね。私もよく見るし (え... 見ないですか)。
で、実際にこれは robots.txt に書かないで、認証かけるとか、IP アドレス制限したりした方がいいと思うよっていうページがあったりするのも確かなのですが、今回、話題になってる robots.txt は、ざっと見る限りそういう類の情報は特に入ってないと思いますよ。
だって、Drupal の管理画面の場所やディレクトリ構成なんて誰にでもわかる公開情報だし、アクセスされる事自体は最初から想定されているから、せめて検索エンジンにはインデックスされないように robots.txt に書いてあるってお話ですからね。
robots.txt の問題じゃなくてデフォルトのまま運用してしまうことの問題も
Drupal に限らず MovableType にしても WordPress にしても、各プログラムの階層構造や、管理画面にログインするためのスクリプトがどこにあるかはパッケージをダウンロードしたり、ドキュメントを見れば簡単にわかるわけです。で、人様のサイトにインストールされている MovableType や WordPress の管理画面の場所を探すのも、デフォルト状態でインストールされているなら比較的簡単です。
例えば、これら CMS でコメント機能を使っている場合、ソースコードを見れば、コメントを投稿するためのプログラムのパスが書かれてたりします。
<!-- MovableType だと例えばこんな感じとか --> <form action="http://example.com/mt/mt-comments.cgi" method="post"> <!-- WordPress だと例えばこんな感じとか --> <form action="http://example.com/wordpress/wp-comments-post.php" method="post">
で、あとは MovableType なら、mt-comments.cgi と同階層に、mt.cgi っていう管理画面のスクリプトがあるのはわかっていますし、ご丁寧に管理画面に移動できる index.html も同梱されているので、MovableType のインストールディレクトリさえわかれば、ログイン画面までたどり着くのは大して難しくありません。
WordPress なら、wp-comments-post.php と同じディレクトリ内に、wp-admin ってディレクトリがあって、その中の index.php に管理画面があるかもねとか。わかっていれば簡単。
また、ページの HTML から推測できることも多いです。例えば、この会社さんのプレスリリースページの HTML ソースを見ると、
<link type="text/css" rel="stylesheet" media="all" href="/modules/node/node.css?8" />
みたいな記述がありますが、これ見ただけで、あぁ、CMS は Drupal ですね。ってわかる人にはわかります。で、modules ディレクトリがルートディレクトリにあるってことは、Drupal をルートディレクトリにそのままぶっ込んでますねこれ。ってすぐにわかるわけです。
だから、robots.txt に書く、書かない以前に、デフォルト設定でインストールしていれば、管理画面の場所などを推測するのはそれ程難しくない話ですし、管理画面にそもそも他人がアクセスしてくるのが嫌なら、管理画面自体にベーシック認証でもいいからかけとくとか、そういう対策が必要になります。
でもそれを別に気にしない人なら、放置でもいいし、検索エンジンにだけはインデックスされたくないなと思えば、robots.txt に
Disallow: /mt/ Disallow: /wordpress/ Disallow: /?q=admin/
とか書けばいいんです。私は絶対やらないけど。余計なことを誰でも見られる場所に書いたことで無用なリスクを背負うことになりますからね。でもこれ自体が悪いわけじゃないです。
大事な情報を扱う会社がやることじゃないけど
CMS に Drupal 使ってて、しかも robots.txt も含めて何も考えずにそのままデフォルト設定で使われてたらしいことや、この騒ぎの初期のうちにサーバを見た人の中には、ディレクトリ制御の設定もされていなくて、ファイル一覧が見えてた (いや、わかっててやってるなら別にいいんですが) とか言ってた人もいたので、そこだけ聞くと技術的にはお察しください、かつ予算ケチって自称プロの素人にお任せしてたんじゃないの? とか色々残念なニオイはします。
だから擁護するつもりは全くありませんが、robots.txt の件は直接的な原因とはあまり考えられない以上、あまり騒いでも仕方ない気がします。
そんなことより、プレスリリースを読んでると、漏洩した情報は、カード番号、カード有効期限、セキュリティコードって、セキュリティコードまでサーバに保管してたの? とか、4月 23日に提携先からクレジットカード情報漏れてるかもよって指摘があり、4月 26日には PCF 社による調査が始まって、5月 21日には調査最終報告書まで出てるのに、情報漏洩を公式に発表したのが 5月 27日なのは遅くね? とかそっちの方が重要ですよね。
あとはどういう経路で進入されたのかですが、そこは中の人しか今のところわかりませんけども、もし仮にですよ、
- robots.txt 見る
- CMS は Drupal か。しかもこの適当な感じ。これはセキュリティ甘そうなサーバだぜってなる
- 試しに Drupal のスクリプトに対して SQL インジェクション攻撃しかけてみよ
- DB に入れたよ
- わーい 同じ DB にクレジットカード情報も入ってたー
- 流出
って、robots.txt きっかけだったとしても、今度は robots.txt の記述以前に 5 番目のところとか色々おかしいのであれ。