クラウド時代はDNS Pinningが落とし穴になる
2011年8月29日(月曜日)
クラウド時代はDNS Pinningが落とし穴になる
公開: 2011年9月3日19時50分頃
モバツイ (www.movatwi.jp)の作者えふしんさんと、Twitterでこんなやりとりをしました。
OperaってDNSのTTL考慮してない?!
多くのブラウザは安全性のために短すぎるTTLを無視したりしますが (DNS Pinning)、それとはまた違う話でしょうか?
AWSのElastic Load Balancingで、動的にロードバランサーのサーバが増えたり減ったりするようで、夜明けのOperaがよく全然違うサービスに繋がってしまうことがあるんですよね。少なくともクッキーは送っちゃってますよね...
あー、なるほど。それはまずいですね。
これは盲点でした……。
OperaやIEなどは、DNSのTTLが短く設定されていても無視してキャッシュし続ける事があります。これはDNSの負荷を減らすというだけはでなく、セキュリティ上の意味もあり、「DNS Pinning」と呼ばれています。その必要性については、金床さんの以下の解説が分かりやすくまとまっていると思います。
- Wizard Bible vol.33 (2007,5,8) (wizardbible.org)
要するに、DNS Rebindingの攻撃を防ぐために必要だということです。DNS Rebindingでは、攻撃者が自分のドメインを自分のサーバに向けた後、DNSのレコードを変更して自分のドメインを攻撃対象のサーバに向けます。すると同一ドメインと見なされ、攻撃者のドメインに置かれていたスクリプトから内容を読み取るようなことが可能になります。DNS Pinningが行われていると、攻撃者がDNSを変更してもその変更がスルーされてしまうため、攻撃が成立しなくなります。
というわけなのですが、攻撃者ではない人が、実際に自分のサーバのIPアドレスが変更になるのでDNSのレコードを変更する、ということはあり得ます。その場合にDNS Pinningが働くと、変更先のサーバに正しくアクセスできないということになります。さらに、変更元のIPアドレスが別のサーバに割り当てられてしまうと、その別のサーバにアクセスしてしまい、しかもCookieなども送出してしまうことになります。これは非常にまずいわけで、DNS Pinningが裏目に出る例だと言えるでしょう。
昔は、サーバのIPアドレスが頻繁に変わるということはあまり考えられませんでした。個人のサーバがDynamic DNSで運用されているということはありましたが、商用サービスのIPアドレスが全く別のサーバに割り当てられるなどということは、ほとんどなかったと言って良いでしょう。
ところが最近では、商用サービスがクラウド上で運用されるケースが増えてきました。クラウドの大きな特長のひとつは、サーバを簡単に追加したり減らしたりできるということです。これが、IPアドレスが別の人に使われるというリスクに繋がってくるわけですね。
DNS Pinningをやめるというわけにもいきませんし、どちらかというと、IPアドレスが別の人に使われる可能性があるということ自体が問題であるように思います。そのような環境で、認証を伴うような重要なサービスを運用するのはリスクがあると言わざるを得ないでしょう。
これは、「クラウドを使うな」というわけではありません。クラウドサービスの全てでIPアドレスがころころ変わるわけでもありませんし、IPアドレスが変わるにしても、放棄されたIPアドレスをしばらくの間 (たとえば24時間) 他人に使わせないようにする、という対応も理論上は可能なはずです。
クラウド上で重要なサービスを運用する場合には、IPアドレスがどのように扱われるのか、事前に確認しておいた方が良いと思います。
※IPv6になると、こういう悩みもなくなってくるのでしょうかね……?
- 「クラウド時代はDNS Pinningが落とし穴になる」にコメントを書く
- 前(古い): なぜ人はTwitterに顧客の悪口を書いてしまうのか
- 次(新しい): 東海テレビ、不適切テロップ問題検証番組