ウェブアプリケーション系の攻撃に関する研究
近年の情報システムは,「ほとんど」といっても過言ではないくらいに,ウェブアプリケーションになっています.ウェブアプリケーションというのは,情報システムがサーバ上で稼働しており,それにアクセスするクライアントでは,その情報システムへのインターフェイスとしてウェブブラウザを使っています.
ウェブアプリケーションが台頭する前の時代には,サーバとクライアントは独自のプロトコルで接続して,情報のやり取りを行なっていましたが,専用のクライアントアプリケーションが必要であったため,開発者は,サーバとクライアントの両方を開発する必要がありました.クライアント・サーバ・システム,クラサバシステム,C/Sシステムとも呼ばれていました.
一方,ウェブアプリケーションは,通信プロトコルとしてHTTP(HyperText Transfer Protocol)を使用しており,それを利用できるブラウザがクライアントアプリケーションになるので,開発者はサーバ側の開発に特化できます(クライアントであるブラウザで表示する画面設計はする必要はあります).その「手軽さ」が脚光を浴びることになり,クラサバ型のシステムはどんどんウェブアプリケーションへ置き換わっていきました.
開発・提供・利用が便利になった反面,ウェブアプリケーションを構成するプログラミング要素に脆弱性を多く含むことになってしまい,それが攻撃のターゲットとなりました.従来のクラサバ型システムでは,プロトコルがブラックボックスであったためと,ネットワークはInternetではなく,閉鎖的なネットワークで構築されていたこともあって,なかなか攻撃対象にはならなかったのですが,ウェブアプリケーションがInternetのどこからでもアクセスできることから,攻撃が容易になったという背景もあります.
ウェブアプリケーションのプログラミング要素としては,さまざまなものがありますが,代表的なところでは,JavaScript,Java,PHP(PHP: Hypertext Preprocessor)などが挙げられます.情報処理技術者試験の問題としても頻繁に出題されている分野でもあり,対策は緊急性を要します.
本研究室では,当初,悪意のあるJavaScriptを判別する研究から始め,その後,Drive-by Download攻撃が可能なページを検出する研究に発展し,その後,XSS(Cross Site Scripting)脆弱性を含んだ情報のフローを検出する動的な判別システムの開発へ移行しました.現在では,ウェブアプリケーションを開発している段階でXSS脆弱性を含むような(XSS脆弱性を発現させる可能性があるデータフローが存在するような)プログラムに対して警告を発することができる,開発者向けの対策ツールの開発を行っています.
キーワード: クロスサイトスクリプティング,XSS,抽象構文木,静的解析,動的解析,JavaScript,PHP,ソース,シンク,データフロー
Keyword: Cross Site Scripting,XSS,Abstract Syntax Tree,AST,static analysis,dynamic analysis,PHP,Source,Sink,data flow