2012年6月14日木曜日

さくらDNSにサブドメインハイジャックを許す脆弱性

さくらインターネット株式会社のDNSサービスにセキュリティ上の問題がありましたが、改修されましたので報告します。
DNSサービスへのドメイン登録時における不具合について 
障害内容 :
当社の提供するネームサーバサービスにおいて、既に登録されているドメインのサブドメインが、他の会員IDの方に登録できる状態となっておりました。この障害により、悪意のある第三者がドメインの一部を乗っとれる脆弱性につながる危険性がありました。
本問題につきましては現在は解消されており、全ての登録について不正がないかの調査を行っております。
この問題の発見者は前野年紀氏で、私はさくらインターネット株式会社に問題を通告し、改修を促すための連絡などでお手伝いをしました。
(12:00追記)なお、この脆弱性が混入したのは6月8日頃で、さくらインターネットは6月11日から修正を開始し、昨日(6月13日)には改修されましたので迅速な対応であったと考えます(追記終わり)。

問題の概要

さくらのレンタルDNSサーバーにおいて、他人(ドメイン名の保有者でない人)が勝手にサブドメインを登録できることが問題でした。 たとえば、架空の会社エグザンプル株式会社がホームページwww.example.jpを運営しており、ドメイン名example.jpをさくらDNSで運用しているとします。この状況で、第三者がexample.jpのサブドメインwww2.example.jpのゾーンを追加し、www2.example.jpのAレコード(IPアドレスの指定)を登録できました。この結果、第三者がwww2.example.jpというサイトを公開できることになります。

勝手にDNSサーバーを立てて他人のサブドメインを登録できることは問題ない

ここからは、問題点を説明するために、本来できてよいこと、できてはまずいことを順に説明します。 まず、第三者が独自のDNSサーバーを立てて、そこに勝手に別人のドメイン名を登録することはできてしまいます。私が運営するDNSサーバーに、google.comやamazon.comやapple.comなどを勝手に設定することできるし、問題にもならないということです。
それが問題にならない理由は、この勝手なDNSサーバーは上位DNSサーバーからgoogle.comなどのドメイン名を委譲されていないので、どこからも参照されないからです。

権威サーバーと同じサーバー上に、他人がサブドメインを登録できることが問題

次に、話を進めるために、以下のシナリオを考えます。
私がもつドメイン名 tokumaru.org の適当な預け先がなく、知り合いのいるエグザンプル株式会社に「御社のDNSサーバーを貸して下さい。そして、tokumaru.orgを設定させて下さい」と頼んだとします。この設定自体は問題がなく、交渉次第では貸してくれるでしょう。
ところが、私が悪い奴で、tokumaru.orgを追加するついでに、www2.example.jpのゾーンも追加したとします。example.jpのゾーンはいじれないので、www2.example.jpは、example.jpから委譲されてはいません。しかし、example.jpとwww2.example.jpは同じDNSサーバー上にあるので、外部からwww2.example.jpを問い合わせると、このDNSサーバーに登録された内容を応答してしまいます。これが問題です。
すなわち、さくらDNSの問題は、「ちょっとDNSサーバー貸して下さい」と頼みながら、そのDNSサーバーに元々設定されているドメイン名のサブドメインが登録できてしまう(チェックされない)ことが問題です。

実験

これだけだと分かりにくいと思うので、実験をしました。 私は元々tokumaru.orgをさくらDNSで運用していました。その状態で、前野年紀氏が徳丸の許可の元、私とは別アカウントでサブドメインqmail.tokumaru.orgの登録を試み、成功しました(この設定は現在はできません)。本稿執筆時点で、qmail.tokumaru.orgは参照可能です。


このドメイン名を外部から問い合わせると以下のような流れになります。

# ネット利用者が qmail.tokumaru.org にアクセスしようとする
# ブラウザがDNSキャッシュサーバーに qmail.tokumaru.org を問い合わせる
# DNSキャッシュサーバーはルートDNSサーバーに qmail.tokumaru.org を問い合わせる

$ dig +norecurse qmail.tokumaru.org @198.41.0.4
;; AUTHORITY SECTION:
org.                    172800  IN      NS      a0.org.afilias-nst.info.
;; ADDITIONAL SECTION:
a0.org.afilias-nst.info. 172800 IN      A       199.19.56.1

# ルートDNSサーバーは、qmail.tokumaru.org は知らないけど
# orgドメインの権威サーバーなら知っているよと、a0.org.afilias-nst.info などを返す
# DNSキャッシュサーバーは、a0.org.afilias-nst.infoにqmail.tokumaru.orgを問い合わせる

$ dig +norecurse qmail.tokumaru.org @199.19.56.1
;; AUTHORITY SECTION:
tokumaru.org.           86400   IN      NS      ns1.dns.ne.jp.

# a0.org.afilias-nst.infoは、tokumaru.orgの権威サーバーはns1.dns.ne.jp(さくらDNS)だよと返す
# DNSキャッシュサーバーはns1.dns.ne.jpのIPアドレスを知らないので、あらためてルートDNSサーバーにns1.dns.ne.jpを問い合わせる

$ dig +norecurse ns1.dns.ne.jp @198.41.0.4
;; AUTHORITY SECTION:
jp.                     172800  IN      NS      a.dns.jp.
;; ADDITIONAL SECTION:
a.dns.jp.               172800  IN      A       203.119.1.1

# ルートDNSサーバーは、jpドメインの権威サーバーがa.dns.jpなどであると返す
# DNSキャッシュサーバーは、ns1.dns.ne.jpをa.dns.jpに問い合わせる

$ dig +norecurse ns1.dns.ne.jp @203.119.1.1
;; AUTHORITY SECTION:
dns.ne.jp.              86400   IN      NS      ns1.dns.ne.jp.
;; ADDITIONAL SECTION:
ns1.dns.ne.jp.          86400   IN      A       210.188.224.9

# ns1.dns.ne.jpのIPアドレスが返ってくる
# DNSキャッシュサーバーは、ns1.dns.ne.jpにqmail.tokumaru.orgを問い合わせる

$ dig +norecurse qmail.tokumaru.org @210.188.224.9
;; ANSWER SECTION:
qmail.tokumaru.org.     3600    IN      A       14.192.44.5

# ns1.dns.ne.jpは、(前野氏が設定した)qmail.tokumaru.orgのIPアドレスを返す
tokumaru.orgの権威サーバーをさくらDNS(ns1.dns.ne.jp)に設定したのは徳丸ですが、その状態で前野氏が、さくらDNSにqmail.tokumaru.orgゾーンを勝手に(実際には徳丸の承認の元)設定したために、結果として qmail.tokumaru.orgを前野氏が有効に設定できたことになります。

影響

この問題の直接の影響は、サブドメインのゾーンを勝手に登録され、AレコードやMXレコードなどを自由に登録されてしまうことですが、その結果として、以下のような影響が考えられます。

自ドメインでのクッキーを勝手にセットさせられる
先ほどのqmail.tokumaru.org上のコンテンツで、やろうと思えば、domain=tokumaru.orgのクッキーをセットすることができます。通常、クッキーは第三者から勝手にセットされることはないので、アプリケーションのクッキー利用方法によっては影響を受ける場合があります。
具体的には、以下の場合に影響を受けます。
  • セッション・フィクセイション脆弱性がある場合
  • クッキーに意味のある文字列を入れている場合
いずれも好まし良くない実装ですが、クッキーを勝手に改変されることはないという想定に依存しているアプリケーションは、潜在的な問題が顕在化します。

フィッシングに悪用される
攻撃者が勝手にwww2.example.jpを設定して独自のコンテンツを作成した場合、フィッシングサイトに悪用することが考えられます。多くのフィッシングサイトは、あきらかに不自然なURL上にあるので、そこが見分けるポイントの1つになりますが、本物のドメイン名のサブドメイン上にフィッシングサイトがあると、だまされる人が増えると考えられます。

成りすましメールアドレスに悪用される
メールアドレスのドメイン名として、mx.example.jpやmail.example.jpなどのサブドメインを使っている企業は珍しくありません。このため、mx.example.jpを勝手に登録して、このドメインのメールアドレスから、偽のメールを出すという悪用が考えられます。やはり本物のドメイン名を使っていることから、「メールアドレスは今後 xxx@mx.exmaple.jpになります」と書いてあれば、だまされる人はかなり多いと予想されます。
通常、送信元のアドレスを偽装することは容易ですが、その場合返信を受け取ることはできません。しかし、サブドメインを悪用すると、返信メールを受け取ることができるので、秘密情報の聞き出しなどにも悪用可能です。

まとめ

さくらDNSの「サブドメインハイジャック」の脆弱性について報告しました。
ドメイン名はインターネットの信頼の基幹となるサービスですので、サブドメインといえども乗っ取られることは極めて危険と考えられます。私自身、さくらDNSの利用者でしたので、他人事ではありません。とりあえず、さくらDNSで運用していたhash-c.co.jpドメインは引っ越しました。tokumaru.orgも時期を見て引っ越そうと思っていますが、この記事のサンプルになっているのでとりあえずそのままにしています。
Webサイトを運営する個人や中小企業にとって、安全なDNSサーバーの確保は頭の痛い問題です。さくらDNSに引っ越す前は、お名前.comのレンタルDNSを使っていましたが、以前長時間サービス停止するというトラブルがあり、私も被害にあいました。
さくら以外のレンタルDNSサーバーを利用している方は、サービス提供元に対して、この種の問題がないか確認するとよいでしょう。

0 件のコメント:

コメントを投稿

フォロワー