このエントリでは、ケータイ向けWebサイトがDNSリバインディング攻撃に対する防御耐性があるかどうかをチェックする方法を説明します。ケータイ向けに「かんたんログイン」機能をもつWebサイトをチェック対象とします。
基本的な前提として、検査対象のWebサイトの管理者が自ら検査することを想定しています。
用意するもの
- チェック対象のWebアプリケーション(かんたんログイン機能あり)
- 携帯電話(かんたんログイン可能なもの)
- インターネット接続されたパソコン
ステップ0:IPアドレスの調査
検査対象のWebサーバーのIPアドレスを調べます。一例として、検査対象サーバーのホスト名が mobile.example.com の場合、以下のコマンドでIPアドレスを調べることができます。
C:>nslookup mobile.example.com
サーバー: ns.example.com
Address: 192.0.2.1
権限のない回答:
名前: mobile.example.com
Address: 115.146.17.185
C:>
上記の例では、WebサイトのIPアドレスは、115.146.17.185になります。
ステップ1:数値IPアドレスでログイン画面を閲覧
ケータイWebアプリケーションのログイン画面のURLに対して、ホスト名を数値IPアドレスに変更したもので、携帯電話ブラウザを使用してアクセスします。上の例では、ログイン画面のURLがhttp://mobile.example.com/login?guid=ONの場合、http://115.146.17.185/login?guid=ONにアクセスすることになります。
この結果、403 Forbiddenなどのエラーでログイン処理が継続できなくなった場合はチェックを終わります(耐性あり)。画面が正常に表示された場合はステップ2に進んでください。
ステップ2:かんたんログインの実行
携帯ブラウザ上でかんたんログインボタンを押下(あるいはリンクを選択)します。
この結果、403 Forbiddenなどのエラーが表示された場合はチェックを終わります(耐性あり)。ログインが正常終了し、ログイン後の画面が表示された場合はステップ3に進んでください。
ステップ3:URLのチェック
携帯ブラウザの機能を利用して、現在表示されている画面のURLをチェックします。ホスト名が数値IPアドレスのままになっている場合は、DNSリバインディング攻撃に対して脆弱です。数値IPアドレスではなく、本来のホスト名に変更されている場合はステップ4に進んでください。
ステップ4:数値IPアドレスでのコンテンツ閲覧
先ほど確認したURLに対して、ホスト名を数値IPアドレスに変更したものでコンテンツを閲覧します。コンテンツが正常に表示された場合、DNSリバインディング攻撃に対して脆弱です。エラーになった場合は、DNSリバインディング攻撃への耐性がある可能性が高いと予想されます。
まとめ・注意事項
かんたんログインのDNSリバインディング脆弱性をサイト運営者が自らチェックできる方法を説明しました。この方法はあくまで簡易検査であり、疑わしい状況である場合や、対策方法が分からない場合は専門家に問い合わせることを推奨いたします。ステップ4まで進んではじめて結果が出た場合も不確かである可能性があるため、専門家に相談されることを推奨します。
免責
この情報は、読者の便宜のために、HASHコンサルティング株式会社(現EGセキュアソリュージョンズ株式会社)が執筆時点のあるがままの状態で提供するものです。この検査の引き起こす結果等について、EGセキュアソリューションズ株式会社はいかなる保証もしません。また、この情報は事前連絡なく改訂される場合があります。
また、この検査方法は、あくまで自分が管理するWebサイトについてのみ実施してください。
追記(2010/03/21)
水無月ばけらさんのはてなブックマークコメントにて、指摘を頂戴しました。
ほとんどの場合はこれでOK。しかし、「数値だと蹴られるが、でたらめな Host: だと受け入れる」という設定が実在するので油断大敵。
ご指摘ありがとうございます。当方で確認した範囲では、ModSecurity(Apacheのモジュールとして動作するWebアプリケーションファイアウォール)を導入している場合に、「数値だと蹴られるが、でたらめな Host: だと受け入れる」設定となる事象を再現できました。以下に、ModSecurity導入状態で、数値IPアドレスによるリクエストがエラーになっている画面例を示します。
すなわち、数値IPアドレスによるリクエストでエラーになる状況には以下の二通りがあることになります。
- ホスト名が本来のものでないことによるエラー
- 数値IPアドレスをエラーにしている
上記1の状況であれば問題ありませんが、2の状況であれば、DNS Rebindingに対して脆弱である可能性があります。携帯電話の画面内容から、上記の区別をつけることは簡単ではない場合があるため、正確な検査を実施するには、正式なドメインとは別に検査用のドメインが必要になります。
- カテゴリ:
- 検証・考察