2009-12-15

Chaotic Next Stage                      第11号

                                                  発行責任者  稲崎義明

脆弱性とは(5)

 

さて、脆弱性ですが、いつごろから話題になってきたのかなあという気がします。初期のパソコンはもちろん1台で使用するわけですからネットワークにつながることもなく、他からの攻撃ということもありませんでした。もちろん、Windossになる前からウィルスはあったわけで、個人的にもFDには言った初期のウィルスを持っています(もちろん感染したわけではなのですが)。脆弱性ということからするとそのころのOSはあまり対策されていなかったのではないかと考えています(もちろんメーカ側はある程度対策していたでしょうが)。そのころのウィルスは自分の技術力を誇示しようとするのが多く、感染すると花火が上がったり画面が崩れたりしたものです。20年近く前はそんなものです。そのうちに会社でLANが導入され、メールが使われるようになって外部からの攻撃という形で脆弱性が話題になってきたのではないでしょうか。初期のメールはパソコン通信によるメールで、なかなかたくさんの人に一斉送信しようとすることは無く、やっぱりインターネットの普及により危険も増えていったのでしょう。

では、誰がこのような脆弱性を見つけているのでしょうか。もちろんセキュリティ研究者もありますが、攻撃者側も探しているようです。脆弱性はOSだけではありません。今回紹介しているWebページにもありますが、一般アプリケーションにもあります。研究者側はもちろん攻撃者より早く見つけて攻撃される前に修正しようとしますし、見つかった脆弱性がOSなどにあった場合はメーカ側に報告したりします。攻撃側の目的はもちろん金銭で、メーカ側に対し売り込んだり攻撃者間で売買したりしているそうです。脆弱性の内容にもよりますが、その内容によってはパソコン内の重要なデータを盗み出すようなウィルスを作って広げようとします(パソコン内にはいろいろなデータがあるもので、住所などの個人情報だけでなく、クレジットカード番号やパスワードまであったりします)。

どうやって見つけるかですが、これは大変です。アプリケーションは通常コンピュータがわかるデータ(俗に言うバイナリデータなど)になっていますが、まずこれを元の開発言語に戻すリバースエンジニアリングを行い、それを解析して脆弱性を見つけていきます。他にはファジングといって、そのシステムにいろいろなデータを入力してみる方法があります。想定外であろう長いデータを入れてみたり、数字であればとんでもなく大きい値や「0」やマイナスの数値などです。長いデータはもちろんバッファオーバーフローの脆弱性チェックです。Webの場合は内部のデータが外から直接して見えたりしないかなどもあります。アプリケーションのメーカ側はもちろん脆弱性を残したままにしているわけではないのですが、人間の作ったものですから脆弱性が完全に無いということは無いものです。脆弱性の中には、当初の仕様通りに作って含まれているものもあります。昔あった「これは仕様です」といったものですが、やはり問題となれば仕様自体を変更することになります。

脆弱性への対処はOSなどの自動更新やメーカ側の脆弱性対処アナウンスなどの情報をいち早く収集し対処することなのですが、なかなかそうも行かないこともあり、脆弱性には対処できたけど肝心のアプリケーションが動かなくなってしまうこともあります。会社のPCに特に多いのですが、一般のユーザで問題となる可能性のあるのが、メーカからのアップデート情報と偽ってウィルスメールを送ってくることがあります。メールの送信元は簡単に変更することができますから、たとえばマイクロソフトからだからといって安心できないことがあるということです。脆弱性はいたちごっこです。今後とも気をつけてください。      (連載終了)