• 検索結果がありません。

第 5 章 Visual clickjacking の実行 51

5.5 実験

5.5.1 検査結果の正当性

Joomla [75] や Roundcube [95],MediaWiki [96],WordPress [97]の実際にサイ トで利用されている 4つのウェブアプリケーションに Clickjugglerを適用するこ とで評価する.これらのウェブアプリケーションは広く利用されていて,例えば,

JoomlaとRoundcube,WordPressはそれぞれ3500万回以上と200万回以上,7000 万回以上ダウンロードされている.visual clickjackingの脆弱性を検査するために,

2 種類のバージョンの Firefox (20.0.1 と 3.6.8) を利用する.5.4 節に示したよう に,Firefox (20.0.1)はX-Frame-Options HTTPヘッダをサポートしており,Firefox

(3.6.8)はサポートしていないためである.また,cursorjackingを検査するために,

検査対象のボタンとして4つのウェブアプリケーションのリンクやボタンを選択 した.これは,cursorjackingのテンプレートがリンクやボタンを対象としている ためである.

表5.2はClickjugglerの検査結果をまとめたものである.表5.2の“ウェブアプ リケーション”は検査対象のウェブアプリケーションの名前とバージョンを示して いる.“ユーザ”は“検査対象のボタン”を普段利用しているユーザを示しており,

“検査対象のボタン”は実験において検査対象としたリンクやボタン,フォームを

示している.

この表5.2 の“脆弱性”と“Clickjugglerの検査結果”からClickjugglerは4つの オープンソースのウェブアプリケーションの脆弱性を正確に検査できることがわ かる.“脆弱性”は検査対象のリンクやボタン,フォームが脆弱であるかを示して いる.このvisual clickjackingの脆弱性を発見するために検査対象のリンクやボタ ン,フォームを手動で調査した.そして,[72]や[98]のような脆弱性リポジトリ

や wiki [99],リリースノート[100]を使って検査対象のウェブアプリケーション

表5.2: Clickjugglerの検査結果

ウェブアプリケーション ユーザ 検査対象のボタン 脆弱性 Clickjuggler の検査結果

Joomla 1.6.1 ユーザ リンク vul. vul.

プロフィールの編集 vul. vul.

管理者 リンク vul. vul.

記事の編集 vul. vul.

ユーザ情報の編集 vul. vul.

Joomla 2.5.7 ユーザ リンク vul. vul.

プロフィールの編集 vul. vul.

管理者 リンク vul. vul.

記事の編集 vul. vul.

ユーザ情報の編集 vul. vul.

Joomla 3.0.2 ユーザ リンク vul. vul.

記事の作成 vul. vul.

プロフィールの編集 No vul. No vul.

管理者 リンク vul. vul.

記事の編集 vul. vul.

ユーザ情報の編集 vul. vul.

Roundcube 0.4.1 ユーザ リンク vul. vul.

設定の編集 vul. vul.

Roundcube 0.7.0 ユーザ リンク No vul. No vul.

設定の編集 No vul. No vul.

Roundcube 0.7.0 ユーザ リンク No vul. No vul.

(Firefox 3.6.8) 設定の編集 No vul. No vul.

MediaWiki 1.16.0 ユーザ リンク vul. vul.

記事の編集 vul. vul.

管理者 リンク vul. vul.

記事の編集 vul. vul.

ユーザ情報の編集 vul. vul.

WordPress 3.1.2 ユーザ リンク vul. vul.

コメントの投稿 vul. vul.

管理者 リンク vul. vul.

ユーザの追加 vul. vul.

“vul.”visual clickjackingの脆弱性があることを示しており,“No vul.”visual clickjackingの脆 弱性がないことを示している.

に残ったvisual clickjackingの脆弱性を探して,手動での調査結果の確認を行った.

“Clickjugglerの検査結果”は,Clickjugglerから得られた検査結果を示している.こ

表5.3: Clickjugglerの各テンプレートの攻撃結果

ウェブ ユーザ 検査対象のボタン 脆弱性 テンプレートの攻撃結果* アプリケーション basic 1 2 3 4 5 6 cursor

Joomla 1.6.1 ユーザ リンク vul. X X X X X X X X

プロフィールの編集 vul. X X X X X X X

-管理者 リンク vul. X X X X X X X X

記事の編集 vul. X X X X X ! ! -ユーザ情報の編集 vul. X X X X X ! !

-Joomla 2.5.7 ユーザ リンク vul. X X X X X X X X

プロフィールの編集 vul. X X X X X X X

-管理者 リンク vul. X X X X X X X X

記事の編集 vul. X X X X X ! ! -ユーザ情報の編集 vul. X X X X X ! !

-Joomla 3.0.2 ユーザ リンク vul. X X X X X X X X

記事の作成 vul. X X X X X ! ! -プロフィールの編集 No vul. ! ! ! ! ! ! !

-管理者 リンク vul. X X X X X X X X

記事の編集 vul. X X X X X ! ! -ユーザ情報の編集 vul. X X X X X ! ! -Roundcube 0.4.1 ユーザ リンク vul. X X X X X ! ! X 設定の編集 vul. X X X X X ! ! -Roundcube 0.7.0 ユーザ リンク No vul. ! ! ! ! ! ! ! !

設定の編集 No vul. ! ! ! ! ! ! ! -Roundcube 0.7.0 ユーザ リンク No vul. ! ! ! ! ! ! ! !

(Firefox 3.6.8) 設定の編集 No vul. ! ! ! ! ! ! ! -MediaWiki 1.16.0 ユーザ リンク vul. X X X X X X X X 記事の編集 vul. X X X X X ! !

-管理者 リンク vul. X X X X X X X X

記事の編集 vul. X X X X X ! ! -ユーザ情報の編集 vul. X X X X X ! ! -WordPress 3.1.2 ユーザ リンク vul. X X X X X X X X コメントの投稿 vul. X X X X X X X

-管理者 リンク vul. X X X X X X X X

ユーザの追加 vul. X X X X X ! !

-テンプレートの攻撃結果*において,“basic”: basic clickjackingのテンプレート,“1”: double framing,“2”: onBeforeUnload event,“3”: No-Content flushing,“4”: manipulating Referrer,“5”:

restricting JavaScript with sandbox,“6”: restricting JavaScript with designMode,“cursor”:

cursorjackingのテンプレートをそれぞれ示している.“-”は,cursorjackingのテンプレートが検査

を行わなかったことを示している.“vul.”“No vul.”は表5.2と同じものを示している.“!はテ ンプレートによる攻撃が失敗したことを示しており,“X”は攻撃が成功したことを示している.

の“脆弱性”と“Clickjugglerの検査結果”が全て一致しているために,Clickjuggler がfalse positiveやnegativeなしにvisual clickjackingの脆弱性を検査できたことが わかる.

さらに,表5.3はClickjugglerの各テンプレートによる攻撃結果をまとめたもの である.表 5.3の “ウェブアプリケーション”と “ユーザ”,“検査対象のボタン”,

“脆弱性” は,表 5.2 と同じものを示している.“テンプレートの攻撃結果” 内の

“basic”と“1”から“6”,“cursor”はClickjugglerの各テンプレートによる攻撃結果 を示している.全ての脆弱な検査対象のボタン(“脆弱性”の列のvul.) は,少なく とも1つのテンプレートによる攻撃が成功している.全ての脆弱でない検査対象

のボタン (“脆弱性”の列のNo vul.) は,全てのテンプレートによる攻撃が失敗し

ている.

この結果からClickjugglerは5.2節で紹介したvisual clickjackingに対する防御手 法を検査できることがわかる.表5.2に示したようにClickjugglerは,Roundcube 0.7.0に正確に実装されたX-Frame-Optionsとelement-customized defenseに脆弱性 はないと判断した.Clickjugglerは,表5.3からわかるようにFirefox 20.0.1上にお いてRoundcube 0.7.0のX-Frame-Optionsがテンプレートによる攻撃を全て防いだ ことから脆弱でないと判断した.

X-Frame-Optionsに加えてRoundcube 0.7.0に実装されているelement-customized defenseは,X-Frame-OptionsをサポートしていないFirefox 3.6.8上においても脆 弱でないと判断された.これは,表5.3からわかるようにこのelement-customized

defense

のコードがテンプレートによる攻撃を全て防いだためである.element-customized defense のコードは,Roundcube 0.7.0 のページが他のページに埋め込 まれる時,Roundcube 0.7.0のページを埋め込んだページのオリジンを調査する.

そして,このページのオリジンがRoundcube 0.7.0のページのオリジンと異なる場 合,このコードはRoundcube 0.7.0のページ内の全てのフォームエレメントを無効 化する.

表5.2に示すようにClickjugglerは,Joomla 3.0.2のプロフィール編集のための ボタンがbasic clickjackingとframe bustingの回避手法に対して脆弱ではないと判 断した.なぜなら,このボタンにはframe bustingのコードが実装されており,こ のコードを回避することができないためである.このコードには,5.2.1で示した 回避手法を防ぐための手法[27]が実装されていた.このコードは,ページのヘッ ダタグ内に実装されており,JavaScriptが無効化されても,ページをブラウザ上に 表示しない.さらに,parent.locationやdocument.referrerのような変数をコード内 で使用していない.

表5.4: ClickjugglerとCJTool,BeEF plug-inの検査時間

ウェブアプリケーション Clickjuggler CJTool BeEF plug-in 準備(s) テスト(s) 合計(s) 準備(s) テスト(s) 合計(s) 準備(s) テスト(s) 合計(s)

Joomla 1.6.1 9.78 10.7 20.5 11.5 15.9 27.4 11.5 26.3 37.8

Joomla 2.5.7 9.44 10.7 20.1 11.5 15.9 27.4 11.5 25.4 36.9

Joomla 3.0.2 9.41 10.7 20.1 10.5 15.4 25.9 11.3 24.7 36.0

Roundcube 0.4.1 12.6 14.6 27.2 19.7 28.9 48.6 19.7 36.2 55.9

Roundcube 0.7.0 12.8 14.4 27.2 19.7 21.2 40.9 19.7 28.0 47.7

Roundcube 0.7.0 12.8 14.5 27.3 19.5 31.3 50.8 19.5 36.1 55.6

(Firefox 3.6.8)

MediaWiki 1.16.0 8.14 10.7 18.8 10.8 15.0 25.8 10.8 24.3 35.1

WordPress 3.1.2 9.18 10.6 19.8 10.3 15.0 25.3 10.3 22.8 33.1