2009-11-15

Chaotic Next Stage                       第9号

                                                  発行責任者  稲崎義明

脆弱性とは(3)

 

これまで説明したのは、一般アプリケーション(Officeなどが中心ですが、OSもあります)の場合ですが、ホームページを利用している場合に使うサーバサイド(Webアプリケーション)でも脆弱性がある場合があります。その場合は一般アプリケーションとちょっと内容が異なります。というのは、確かにWebアプリケーション側も改変されたりして問題になりますが、もっと問題なのはそのページをアクセスした側となることが多いのです。つまり、Webページを改変することによって「罠」を仕込まれ、自動的に「ウィルス配布サイト」に接続されたり、ユーザ情報が盗まれたりします。罠にかかり、ウィルス配布サイトに勝手にアクセスしてしまうと、Webブラウザやプラグイン(Flash PlayerAdode Readerなど)の脆弱性を悪用するウィルスが自動でダウンロードされてしまいます。十分なウィルス対策をしていないと、罠を仕組まれたページを見るだけでウィルスに感染することとなってしまいます。Webページに脆弱性のあるものとして最も悪用されていると思われるものに「SQLインジェクション」があります。これは名前からわかるようにデータベースで使用されているSQLに関係するものです。このごろのWebページはいろいろな情報を管理するためにデータベースサーバと連携しています。決められたものだけを表示するのではなくて、ユーザからの情報によって格納したデータベースから必要なものを探し出し表示しています。このとき使用するデータベースサーバはSQLという言語で記述された命令文で制御されることになります。SQLインジェクションとは、Webからデータベースサーバに悪質な命令を送り込み不正操作するもので、本来はWebサイト側でそのような命令は拒絶すべきものですが、チェックが不十分な場合見過ごしてしまうことになります。このチェックの甘さが脆弱性の根源です。素通しになった悪質な命令が実行されてしまうと、データベースが書き換えられたり、情報がWebページに表示されたり、特定のところに送信されたりします。

ここまで説明しましたが、その前に説明することがありました。Webページのプログラムは昔のプログラムとだいぶ異なった動きをします。表示はブラウザで各ユーザの端末ですが、プログラムの本体はWebサイト側にあります。最も簡単なものはHTMLで書かれたもので、これはユーザの端末側でWebブラウザが処理します。ただしこれはどちらかというと表示する内容やデータの入力などを処理するもので、一般的なプログラムの処理は含まれていません。どういったものかについては、Webページでメニューの「ページ」から「ソース表示」をクリックすると簡単に現在のページの内容を表示することができます。あと、ユーザ側で動作するものとして羽「Javascript」があります。これは、確かにプログラムですが、マウスの動きに合わせて表示を変えたり、表示した画像を動かしたりぐらいしかできません。というのも、ユーザ側にはHTMLを含めてデータが無く、表示する画像のデータなどもWebサイドが管理しているからです。そのためWebサイドの動きとしては、ユーザ側とWebサイド側でデータのやり取りを行って構成することになります。ですから、ユーザ側からWebサイド側には、ユーザ側の情報を含めた次の要求(次に表示するページのインデックスや入力されたデータなど)が送信され、Webサイド側は、その要求に合わせたデータを送り返すことになります。Webサイド側としては、たくさんのユーザから要求を受けているわけですから、必要な情報をきちんと送らないと、正しいページが表示できなくなります。ですから、たとえばログインした後でも何らかのユーザ情報、ログインの情報を送らないとなりませんし、それらの情報はインターネットの通信回線上を流れていることになります。       (次回へ続く)