FACULTY OF ENGINEERING
CONTENTS

プログラム解析とWebセキュリティ

西田誠幸教授

Webに潜むセキュリティホールを見つける
Q
なぜ、研究を?
A
1990年ごろ生まれたWorld Wide Web は、それから約20年の間に急速に普及して、今では大変身近になっています。このページを読んでいる人の中にも、電車や飛行機、ホテルの予約、それからネットショッピング、SNSなどでWebを使っている人が少なくないのではないでしょうか?こういったWebページに欠陥があるかもしれないといったら、皆さんは驚くでしょうか?
なぜ、研究を?
少し話がずれますが、10年ほど前に、変造硬貨による自動販売機の誤動作が大問題になりました。これは当時の自動販売機の欠陥が原因でした。われわれが正規の硬貨を使っている分には、何も問題がないように見えましたが、ある種類の変造硬貨を正規の硬貨と誤認識する欠陥があったのです。
実はWebページにも同じような欠陥の恐れがあります。例えば、今皆さんが見ているページの上段には検索の「窓」がありますね。われわれがここに検索キーを入力して使う分には何も問題がないように見えるかもしれません。しかし、もしこのページにある種の欠陥があれば、悪意あるユーザは特殊な検索キーを指定することで、Webサイトを誤動作させることができるかもしれません。(実際にはこの検索窓には欠陥はありませんが。)誤動作にはいろんなパターンがあります。例えば、ログインページで誤動作させることで、別の誰かの振りをしてログインすることができてしまったり、Webサイトのページを勝手に書き換えたり、サイトに記録されている個人情報を抜き出したりといったことができることがあります。

このような問題の解決のため、私はWebサイトに潜む欠陥、セキュリティホールを見つける技術について研究しています。
Q
どんな特徴があるの?
A
Webサイトの欠陥の見つけ方には二通りがあります。一つは不正アクセスを試してみる方法です。もう一つはWebサイトの内部を詳しく見て、欠陥がないか調べる方法です。
不正アクセスを試してみる方法は、攻撃者になったつもりでWebサイトに不正アクセスをしてみます。これは、自動販売機の欠陥を見つけるのに、さまざまな偽造通貨を使ってみるやり方とよく似ています。

一方、Webサイトの内部を詳しく見る方法は、自動販売機の設計書を分析して欠陥を見つけるやり方とよく似ています。もっとも、Webサイトの中にあるのは設計書ではなく、Webサイトのサーバコンピュータで動作するプログラムとデータです。ですので、このプログラムとデータが分析対象になります。

この2つのやり方ともにそうなのですが、人手で欠陥を見つけるのはとても大変です。そこで、欠陥を見つける手助けをするためのソフトウェアあります。不正アクセスを試みて欠陥を発見するソフトウェアを 「脆弱性検査ツール」「Vulnerability Scanner」などと呼びます。一方、Webサイトの内部を分析するソフトウェアのことを「静的解析ツール」などと呼びます。

「コンピュータ上で動作するWebサイトの欠陥をコンピュータに自身に調べさせる」という部分に面白さを感じつつ、日々研究を行っています。
Q
どんな成果があがった?
A
静的解析ツールのプロトタイプを自分自身で作ってみました。
そして従来は正確に欠陥を見つけ出すことができなかったプログラムに対しても、ある程度正確に欠陥を見つけることができるように拡張しました。図1は、プログラムの中のデータ加工の様子を解析した結果を表しています。また図2は、プログラム解析の結果得られるデータ構造の1つです。この構造から、データベースへのアクセスにセキュリティホールがないかどうかを判定します。この方法を使って、現実のWebサイトのプログラムの検査を行ったところ、一目では見つけるのが難しい欠陥を見つけ出すことができました。
図1:プログラム解析の過程図1:プログラム解析の過程
図2:静的検査に使用するデータ構造図2:静的検査に使用するデータ構造
Q
今後の展望は?
A
先ほど述べた2種類のソフトウェアはともに欠陥を正確に全て見つけ出すことが、原理上できないことが知られています。欠陥を発見する精度をもっと高めていきたいです。
Webサイトを作るためのプログラミング環境(Webアプリケーションフレームワークなどと呼ばれます)にはいろいろな種類があります。こういったフレームワークを工夫することで、Webサイトの中に欠陥が作りこまれにくくなるかもしれません。安全なWebサイトの開発を促すフレームワークの考案にも興味を持っています。