SCAN DISPATCH :ブラウザ・ヒストリのCSRF対策用トークンを発見する方法、研究者が発表 | ScanNetSecurity[国内最大級のサイバーセキュリティ専門ポータルサイト]
2018.12.18(火)

SCAN DISPATCH :ブラウザ・ヒストリのCSRF対策用トークンを発見する方法、研究者が発表

 SCAN DISPATCH は、アメリカのセキュリティ業界及ハッカーコミュニティから届いたニュースを、狭く絞り込み、深く掘り下げて掲載します。

国際 海外情報
 SCAN DISPATCH は、アメリカのセキュリティ業界及ハッカーコミュニティから届いたニュースを、狭く絞り込み、深く掘り下げて掲載します。

──

 クロスサイトリクエストフォージェリ(Cross site request forgeries,CSRF)は、攻撃者が、あらかじめWebページを用意し、そこに訪れたユーザのブラウザを使用し、ユーザが少し前に訪れたWebメールやWebショップのアカウントを操作する攻撃。この攻撃は、ユーザが気がつかない間に行われること、正規のWebページであっても、セキュリティが万全でない場合に何者かによって攻撃コードを埋め込まれる可能性があることに加え、ユーザにとっては被害が膨大になる可能性がある攻撃だ。

 CSRFを防止する方法として使用されているのが、トークンの使用だ。その実装方法は開発者によって異なっているが、ポピュラーなものにURLの一部にランダムに生成されたトークンをアペンドする方法がある。

 この方法は、トークンのブルートフォースがほとんど不可能であることから、安全と考えられている。その理由は、例えばBase16で5文字のトークンの場合、組み合わせは393,216にもなり、これだけの数のリクエストをサーバに試みれば必ず検知されてしまうこと、通常、間違ったトークンを使用して30回以上のリクエストが行われた場合には、セッションを無効とするようにアプリケーションはプログラムされているからだ。

 ところが、SecureThougts.comというWebページのInfernoというセキュリティ研究者が、URLにアペンドされた5文字程度のトークンならば、クライアント側でこのトークンを探し出してCSRF攻撃が行えると発表した。『ウェブアプリケーション セキュリティ』などの著書で知られている金床 氏こと、株式会社ビットフォレスト 取締役CTO、株式会社セキュアスカイ・テクノロジー 技術顧問の佐藤匡氏は、この攻撃について「面白いテクニックですね。私が知る限りでは新しい発見(攻撃手法)です」とコメントしている。

 この攻撃方法について、Inferno氏とのメールインタビューを交えて紹介したい。

 この攻撃、「Hacking CSRF Tokens using CSS History Hack」とタイトルがついており、Jeremiah Grossman氏が3年前に発見したCSSヒストリーハックをベースとしている。攻撃は、(1)同一セッション内ではトークンが同じ、あるいは、(2)同一セッション内ならば、古いフォームに使われたトークンも有効、というどちらかの条件があれば可能だ。大手IT企業のセキュリティ部をリードするInferno氏は「調査をしたところ、大手企業のWebショップなどでこの脆弱性を多数発見した」と述べており、実際、アメリカの大手家電販売社、BestBuy.comでこの脆弱性が確認されている。また、サーバにリクエストをかける必要が無いため、サーバ側では阻止できないだけでなく、悪意のあるWebページ側では、JavaScriptを使わずにCSSだけで攻撃が行えることもわかっており、ユーザーがJavaScriptを無効にしても攻撃が可能となるため、日本の開発者も至急対策を講じる必要があろう。

 そもそも、CSRF対策の方法自体がきちんと理解されていないことも事実だ。東京支社でアプリケーション・セキュリティを担当している、Stach & Liu社のシニア・セキュリティ・アソシエイツ、ジャスティン・ヘイズ氏によれば、「現在のWebアプリケーションは、CSRF攻撃に概して無防備である。いくつかの対策方法が存在するものの、開発者にきちんと理解されておらず、アプリケーションやユーザを保護することができない、いいかげんな実装が行われる結果となっている」そうだ。また、佐藤匡氏も「(日本でも)ここ1〜2年間、新しく開発されるアプリケーションではCSRF対策が考慮されるケースが少しずつ増えているようです。ただ、実際の割合などの統計的なデータは存在していないだろうと思います」と述べている。

 さて、JavaScriptとCSSを使ったこの攻撃のコンセプト実証がInferno氏のWebページにある。まず、

http://securethoughts.com/?param1=val1&csrftoken=b59fe

を訪れてb59feを英字から始まる5文字のbase16のストリング(つまり、>a0000)に変更してから、

http://www.securethoughts.com/security/csrfcsshistory/csrfscan.html

を訪れると、Webページでアクティブなトークンを表示する。

 Inferno氏はサーバ開発者側の対策として…

【執筆:米国 笠原利香】

【関連リンク】
Inferno氏のブログ
http://securethoughts.com/2009/07/hacking-csrf-tokens-using-css-history-hack/
──
※ この記事は Scan購読会員向け記事をダイジェスト掲載しました
購読会員登録案内 http://www.ns-research.jp/cgi-bin/ct/p.cgi?w02_ssw
《ScanNetSecurity》

Scan PREMIUM 会員限定記事

もっと見る

Scan PREMIUM 会員限定記事特集をもっと見る

カテゴリ別新着記事

★★Scan PREMIUM 会員限定コンテンツにフルアクセスが可能となります★★
<b>★★Scan PREMIUM 会員限定コンテンツにフルアクセスが可能となります★★</b>

経営課題としてサイバーセキュリティに取り組む情報システム部門や、研究・開発・経営企画に携わる方へ向けた、創刊20年のセキュリティ情報サービス Scan PREMIUM を、貴社の事業リスク低減のためにご活用ください。

×