極楽せきゅあブログ

ときどきセキュリティ

脆弱性の指摘について

注:あまりに長くなってしまったので(すんません)、「脆弱性って何?」というのを読んだあと、すっ飛ばして「脆弱性を探すのは危険?」に行っても良いと思います。

脆弱性って何?

脆弱性(ぜいじゃくせい)という耳慣れない言葉があります。コンピュータを動かすソフトウエア(アプリ(ケーション)、システム、プログラム、いろいろな呼び名や種類があります)の欠陥のことをバグ、と呼びますが、そのバグの中でも悪用されてしまう可能性があるものを脆弱性と言います。脆弱性を悪用(攻撃)されると、会員全員の個人情報を盗まれたり、オンラインバンキングを狙うウイルスをばらまかれたり、提供しているサービスを破綻させられたりすることがあります。サイバー攻撃、などと言われる活動は、脆弱性を悪用するものが多く、社会的にも大きな問題となっています。

脆弱性はなぜ作られる?

プログラムを作る行為(プログラミング)はもう何十年も行われていますが、未だにバグをゼロにすることはできていません。人間は自分のミスをゼロにできないので、これは仕方無いことかもしれません。バグがゼロにならない以上、バグの中でも特に危険な脆弱性もゼロにならないのです。
ただし、脆弱性に関する研究が進んできて、以前よりも遥かに効率良く脆弱性を発見して修正できるようになってきています。

脆弱性を悪用するのは誰?

以前はいたずら目的や、愉快犯として世間を騒がせようと目論む人などが脆弱性を悪用していましたが、今では職業的犯罪者が狙っています。オンラインバンキングなど、お金の直接的な取引を狙えば大金を得られる可能性があるからです。2013年から急速に拡大している実際の被害状況も、職業的犯罪者の狙いを表しています(【図解・社会】インターネットバンキングの不正送金被害:時事ドットコム)。犯罪者たちはウイルスをばらまいたり、ウイルスそのものの機能として脆弱性を悪用するため、ブラックマーケットでは未修正の脆弱性情報が高値で売買されています。

脆弱性を発見するのは誰?

多くの脆弱性はバグとともにソフトウエアの開発者が発見しています。それらは直ちに修正され、ソフトウエアが世に出るころにはほとんど無くなっていると思われています。しかし、いったん世に出ると、無くなっているはずの脆弱性が続々発見されることになります。
脆弱性を発見する知見や技術は、ソフトウエア開発の中でも特殊な扱いをされることが多いのですが、もしかしたらそれはセキュリティという分野の根底にある考え方が「普通の人と違う視点を持つ」というものだからかも知れません。少なくとも、ごく普通のソフトウエア開発技術者にとっては特殊で、小難しいものと捉えられてしまうことが多いようです。その苦手を埋めるために、セキュリティ監査のサービスを頼んだり、テストツールを用いたりしてはいますが、一般的にソフトウエアの開発はコストや納期(締め切り)に縛られることが多いので、どうしてもやり尽くせないことが残ってしまいます。
その点、公開されたソフトウエアの脆弱性を見つける人は、時間にはあまり縛られずに、なおかつ監査サービスやテストツールがし残しそうなことを重点的に検査したり、新しいことを試したりもできるので、発見できることが多いのです。

脆弱性を発見するのは難しい?

脆弱性には発見が難しいものもありますし簡単なものもあります。難易度は脆弱性の種類やソフトウエアの品質に依ります。残念ながら品質があまり良くないソフトウエアも少なくありません。そうしたソフトウエアは、利用者が少しでも想定と異なる入力をすると異常な反応を示してしまいます。脆弱性を見つける人は、そのような「異常な反応を引き出す入力」に非常に詳しい人が多いのですが、品質が良くないソフトウエアの場合、それほど詳しくなくても発見できてしまいます。特にWebのサービス、アプリケーションは異常な反応を引き出しやすいので、発見しやすいと言えるでしょう。
それこそ子どもであっても、セキュリティを少し勉強すれば脆弱性は発見できてしまうのです。ただ単にうっかりキーボードなどを打ち間違えてしまっただけで、脆弱性の徴候に遭遇することもあるのです。

脆弱性を探すのは危険?

あれ?おかしいな、と思ったことをきっかけにして、いろいろ実験して脆弱性を発見して開発者や運営者に知らせてあげると、運が良ければ喜ばれて感謝されるでしょう。しかし、運が悪ければ犯罪者扱い、脅迫扱いされ、警察に通報されてしまう可能性もあります。知らせてあげた人にすれば、親切にわざわざ調べて相手のことを思いやって知らせて上げたのに、と思うことかも知れませんが、突然見知らぬ人からいきなり何の前触れも無く「おたくのソフトウエアに脆弱性がありますよ」ということを知らされた側にすれば、「クレーム?いや、個人情報が漏洩するぞ、などと言っているところを見るとただのクレームとは違いそうだ。金銭要求してくるのか?あるいは何かとんでもないものをサービスさせられるのか?」と考えてしまったとしても不思議はありません。「手間をかけて脆弱性を発見して善意で知らせてくれる人」が居て、割と純粋に世の中のためにと思って活動してくれていることを知らない人は残念ながらまだまだ多いのです。

脆弱性を放置しても大丈夫?

では、見つけてしまった脆弱性の徴候を、知らぬ振りをして放置してしまったらどうでしょうか?自分は被害を最小限にするように、退会できるものであれば退会すれば良いでしょう。しかし、退会できない、例えば学校のWebシステムなどは使い続ける他はありません。そうなるといつか誰かに脆弱性を悪用されてしまって、あまり知られたくない住所や電話番号などの情報が盗まれてしまうかも知れません。酷いときはストーカーや性犯罪者に狙われてしまうかも知れません。
自衛策はあるでしょうか?学校からの連絡が届かなくても良ければ、偽の情報を登録しておけば良いかも知れませんが、電話は緊急連絡に使われることも多いのでそういうわけにもいかないでしょう。同じ理由で情報を消すこともできないのではないでしょうか。
また、仮に発見者は退会できたとしても、他に何十何百何千何万という人が利用しているわけです。そういう人たちは、知らずに自分たちの情報が危機にさらされてしまうことになります。対処として放置しかないとしたら、そういう人たちが被害に遭う可能性も放置するしかありません。

板挟みに悩む

仮に子どもが自分が通っている学校のWebシステムに脆弱性の徴候を見つけてしまったとしましょう。運悪くそのシステムが、生徒や学生の個人情報の管理だけでなく、成績の管理にも繋がっていたとしたら、その脆弱性を使えば成績を改竄することもできてしまうでしょう。子どもはその誘惑に勝てるでしょうか?誘惑に勝てたとして、今度は先生から怪しいヤツ扱いされることを厭わずに、その内容と意味を説明できるでしょうか?適切に受け止めることができるだけの知識を持った先生が居るでしょうか?それらのハードルをうまく越えられたとしても、その脆弱性を修理できる人や、場合によっては予算を確保できるのでしょうか?

届け出制度

独立行政法人情報処理推進機構IPA)が窓口になっている届け出制度というものがあります(http://www.ipa.go.jp/security/vuln/report/)。この制度は、上記のような善意の脆弱性発見者に対する犯罪者扱いを中和するためのものです。届け出を受けたら脆弱性を持つとされるソフトウエアやシステムの運営者、開発者に連絡し、届け出者の身元を明かさずに内容だけを伝え、修正を促します。情報を受け取る側も、見知らぬ誰かよりは独立行政法人の方がまだしも信用しやすいでしょうし、疑心暗鬼を呼びそうな直接のやり取りよりも両方の当事者にとって良い結果になるでしょう。
もし、子どもが脆弱性の徴候を見つけてしまって悩んでいたとしたら、この制度を紹介していただければと思います。
制度の利用には一つだけ注意点があります。社会のルールである法律に違反した届け出は受け付けない、ということです。不正アクセス禁止法という法律がありますが、これによればパスワードなどの認証を必要とするネットワーク上のコンピューター(サーバー)に対し、不正に入手したパスワードなどを用いてログインすることと、攻撃によって認証を回避することが不正アクセスと見なされます。例え正義の動機があっても、この認証を回避する形が成り立ってしまった場合、法律に違反しているとされてしまう可能性が高いのです。しかし、脆弱性を発見する行為のすべてが不正アクセスと見なされてしまうわけではありません。以下、届け出制度に関連して示されたガイドライン(情報セキュリティ早期警戒パートナーシップガイドライン2014年版。http://www.ipa.go.jp/security/ciadr/partnership_guide.html)における、不正アクセス禁止法に抵触しないとされる例を示します。

1) ウェブアプリケーションの利用権者が、正規の手順でログインするなどして
通常のアクセスをした際に、ブラウザとサーバとの通信の内容を観察したと
ころ、それだけで脆弱性の存在を推定できた場合。
2) ウェブページのデータ入力欄に HTML のタグを含む文字列を入力したところ、
入力した文字列がそのまま表示された。この段階ではアクセス制御機能の制
限を回避するに至らなかったが、悪意ある者に別の文字列を入力されれば、
このサイトにセキュリティ上の問題が引き起こされかねないと予想できた
場合。
3) アクセス制御による制限を免れる目的ではなく、通常の自由なページ閲覧を
目的として、日付やページ番号等を表すと推察される URL 中の数字列を、別
の数字に差し替えてアクセスしてみたところ、社会通念上、本来は利用でき
てはならないはずと推定される結果が、偶発的に起きてしまった場合。(た
だし、積極的に多数の数字列を変えて試す行為等は、制限を免れる目的とみ
なされる可能性があります。)

これが今のところ、この「脆弱性発見ゲーム」のルールです。
そして、制度によって公的なルートでお知らせすれば、もしかしたら予算を取りやすくなり、修正しやすくなるかも知れません(淡い期待ですが)。少なくともお金を出す人への説明材料は得られるでしょう。

どういう子どもが脆弱性に気づくのか?

今の子どもたちは生まれたときから身近にデジタルな世界が存在します。しかし、普通の子どもたちはあまりその仕組みに興味を持ちませんし、中身を知ろうともしません。ゲームや動画は大好きかも知れませんが、大人がテレビの仕組みに興味が無いのと同じでゲームや動画配信の仕組みには興味が無いのが普通でしょう。しかし、ゲームで勝ちたい、良いアイテムが欲しい、となると子どもたちは一所懸命に情報収集し、調査探求します。中には社会のルールに違反してまで、いたずらをしたりアイテムをゲットしようとする子も居ます。そんなことになってしまう原因の一つには、社会のルールを知らない、というのもあるのではないでしょうか。
調査探求、実験を行っているうちに、自然と技術や知識が身についていきます。情報セキュリティの知識もだんだんと増えていきます。その一方でルールを知らなかったとしたらどうでしょうか?技術や知識を活かして、おかしな反応をするWebサービス脆弱性を発見したとして、そのやり方が間違っていたら?やり方が適切だったとしても、正義感から乱暴な方法で世間にアピールしようとしてしまったら?あるいは、直接運営者に連絡してトラブルになってしまったとしたら?
せっかくの探究心、技術や知識がむしろ仇となって、そのまま何も無く育っていたらひらけていたであろう未来を棒に振ってしまうかも知れません。それはあまりに勿体ないことで、社会の損失といっても大げさではありません。
子どもは先生と、そして親からたくさんのことを学びますが、ぜひこの社会のルールのことも教えてあげてください。図らずも見つけてしまった脆弱性という厄介なものへの適切な対処方法も教えてあげてください。そうすればその先には、今よりは少し良い未来があるのではないでしょうか。

脆弱性発見の未来

ブラックマーケットばかりでなく、今は企業なども脆弱性情報を買う時代です。数社が集まってWebブラウザという重要なソフトウエアの脆弱性を発見するコンテストを開催したり(Pwn2Own - Wikipedia)、スマートフォンなどの脆弱性発見コンテストを開催したり(スマホを攻撃→賞金ゲット、脆弱性発見コンテスト「Mobile Pwn2Own」日本初開催 - @IT)、恒常的に脆弱性情報に報奨金を払う制度を運用している会社もあります(Bug Bounty List脆弱性報奨金制度 | サイボウズ株式会社)。このように世間から賞賛されるようになってきつつある一方で、無理解に苦しめられて犯罪者扱いされてしまう場面もあるわけです。どうせなら優秀なIT技術者やセキュリティ専門家として生きるとか、脆弱性発見者として興味を持ったことを追求するとか、そうならなかったとしてもせめて、日の当たる道でまっとうに生きていって欲しいですね。そのために必要な知識として、また子どもとネットの健全な関わり方の一つとして、関連する社会のルールは覚えておきたいところです。


この記事は『「子供」×「ネット」 Advent Calendar 2014』(http://www.adventar.org/calendars/450)の12日目の記事です。