修論タイトル:「JavaScriptにおける動的情報流解析のソースコード変換による実装」 (2012年度 修士論文)

氏名:佐藤 寛之

概要:

JavaScript コードを Web ブラウザで実行すると,Web ブラウザが保持するユー ザの機密データ (document.cookie 等) が漏洩する場合がある.例えば、Cross-Site- Scripting はセキュリティが不備な第三者の Web アプリケーションに悪意のある JavaScript コードを設置することで,攻撃者のサーバにユーザの機密情報を送信する. 現在,Web ブラウザを使用するユーザは JavaScript エンジンを無効化する以外,Web ブラウザに保持されている機密情報の漏洩を阻止する手段を持ち合わせていない. 情報流解析はプログラムがユーザの機密情報を漏洩するかを検査するプログラム解析 手法のことである.Austin らの動的情報流解析はプログラム中のデータにセキュリ ティラベルを付加し,機密ラベルを保持するデータの情報流を動的に追跡する.これ を用いることで,ユーザの機密データを漏洩するコードを動的に検出することが可 能である.Seth Just らは動的情報流解析を取り入れた改造 JavaScript エンジンを実 装した.しかし,この実装法は JavaScript エンジンを直接改造しているため,Safari や Firefox など主要な Web ブラウザがアップデートされる度に,Web ブラウザの JavaScript エンジンを改造し直す必要がある.

そこで,本研究では JavaScript プログラムを Austin らの動的情報流解析手法に基づ いた動的情報流解析を行うコードを埋め込んだ JavaScript プログラムに変換する変換 器を実装した.この変換器は,元の JavaScript コードを静的に構文解析し,動的情報 流解析を行いながらプログラムを実行する JavaScript コードに変換するソースコード 変換器である.この変換器によって変換された JavaScript プログラムを実行すること で,ユーザの機密情報を保持した変数のラベルの情報をデータフロー上で追跡するこ とが可能になる.この実装法では,変換器は Web ブラウザ内部に限らず,プロキシ サーバや Web ブラウザのアドオンなど,様々な場所に設置することが可能であるた め,既存の Web ブラウザに搭載されている JavaScript エンジンを改造する必要がな い.

本研究では,実装した変換器が出力する JavaScript コードが,正しく Austin の動的 情報流解析と等価なラベリングを行うか検証した結果,暗黙的フローによって機密情 報が漏洩するプログラムにおいても,正しいラベリングが行われたことを確認した. また,性能評価では変換前と変換後のプログラムの実行において,約 10-50 倍の実行 時間を要した.実行オーバヘッドを削減は今後の課題の一つである.


[修論pdf][研究室内部向け情報]