脆弱性の発見と通報

今回私は脆弱性を見つけるという経験をしたわけですが、はてなダイアリーのセキュリティを追及していて見つけたわけではありません。そのきっかけは全くの偶然でした。

一昨日、私はhoshikuzu | star_dust の書斎 2月7日分で書かれた引用機構に関する文章に興味を持ち、blockquote要素に関することなどについて調べて2月7日の文章を書きました。しかし、それ以外に不明な点があったためもう少しいくつかのことを試していたのです。

不明な点とは、「cite属性が消える」というhoshikuzuさんの指摘でした。これまで書いた引用部分などを見てみるとcite属性が消えるようなことは確認できませんでした。しかし、hoshikuzuさんが示された例を試してみると確かにcite属性が消えます。例文を少しずつ変えながらテストした結果、これはcite属性にurn:isbn:で始まるURIが指定されていたことが原因であることがわかりました。その代わりにhttp:で始まるURLを指定すればcite属性が消えることはありません。その違いは何かというと、はてなダイアリーではURIの始めに来る文字列が特定のもの以外禁止されており、urn:isbn:は許可されていないということにあるということがわかりました*1

しかし、そこで私は疑問に思いました。私もcite属性にurn:isbn:を指定したことが何度かあります。そして、それが正しく機能していないことには気付いていませんでした。なぜ気付かなかったのかというと、引用の際にはてなダイアリーが自動生成するリンク先にurn:isbn:で始まるURIが出てきているのが見えていたからです。

本来許可されていないはずのurn:isbn:が使えるなら、他のものも使えるのではないか。例えば、JavaScriptも……。という考えにたどりつくのには、もはや時間はかかりません。

セキュリティとは何の関係もなかったはずの、引用についての話が脆弱性発見につながった経緯がおわかりいただけたでしょうか。本来決められたステップが実装において省略されていたためにこのような脆弱性が出現してしまいました。決められた手順そのものが誤っていたわけではないという点で、深刻なものではないと言えるでしょう。

さて、私はセキュリティに関して特別な技術を持っているわけではなく、また特別に脆弱性を発見するよう努めていたわけでもありません。セキュリティ関係の話題はときどき読んでいましたが、小さなこととはいえ自分が当事者になるとは全く思っていませんでした。そんな状況でも場合によっては脆弱性を見つけてしまうことがあるということです。私がこういう経験をしたわけですから、次はここを読んでいるあなたの番かもしれません。

たまたま、はてながセキュリティに敏感で報告に誠実に対応することを私が知っていたため、見つけてすぐにその内容をメールすることができました。しかし、一般の業者の場合にはそうはいかなかったかもしれません。今回私が見つけたような脆弱性であれば、不正アクセスとみなされる可能性はありませんが、業者によってはそのことを理解せずにサービスに悪評を立てようとしていると誤解するかもしれません。また、業者にセキュリティに関する知識がなければ、対策を行うことの必要性をわかってもらえないかもしれません。

もしわかってもらえなかった場合どうするのか。難しい選択を迫られる事になります。例えば、次の3つが考えられるでしょう。

  1. わかってもらえないので、それ以上何もしない。そのサービスに脆弱性があることには口をつぐみ、脆弱性はそのまま放置される。
  2. セキュリティに対する脅威であることを伝えるため、アカウント奪取ができることなどを具体的手順で示す。
  3. その業者にわかってもらえないなら、せめてユーザには伝わるように脆弱性の内容を一般に公表する。

1.は業者にとっては一時的に都合がいいかもしれませんが、ユーザにとってはたまったものではありません。悪意を持った別の人物がその脆弱性に気付けば、当然悪用するでしょう。そもそもすでに悪用されていないという保証もありません。とはいえ、現状ではこれしかないのかもしれませんが。

2.で何とかなればいいと思いますが、現実には手順を文書で示しただけでは納得してもらえないこともあるようです。だからといって、アカウント奪取を実演してしまえば不正アクセスになってしまいます。

3.に近いことも検討されて然るべきだとは思います。具体的にどのような手続きを踏むべきかとなると、現状ではなかなか難しいようですが。

このように、脆弱性を抱えた業者がセキュリティに関して理解が乏しい場合、八方ふさがりの状況になりかねません。私なら初めから通報せずに自分だけ被害を受けないような方策を考えると思います。先ごろ逮捕されたoffice氏はこのジレンマを感じる場面が多かったようですね。あの事件*2脆弱性通報に関して大きな影響を与えつつありますが、今後どうなるかはまだ不透明です。

脆弱性に接するのは「ハッカー」だけではない、全ての人が関わる可能性があるというのはよく言われることですが、今回改めて認識を新たにしました。脆弱性を見つけてしまったらどうすればいいのか。私にはよくわかりませんが、はてなのように理解のある業者相手でなくてもスムーズにことが運ぶようなガイドラインが求められます。

直接の関係はありませんが、さきほどhttp://slashdot.jp/article.pl?sid=04/02/08/1355209を読んで少し和みました。

*1:はてなダイアリー利用可能タグによると、現在許可されているのは次の6つです。http, https, ftp, mailto, rtsp, mms.

*2:ACCS不正アクセス 京大研究員逮捕事件のテンプレ「ACCS個人情報漏洩者 逮捕事件を私的に考える」がよくまとまっています。