インターネット崩壊!? 「心臓出血」(Heartbleed)より深刻なDNSキャッシュポイズニング攻撃の手法が公開される
先週、OpenSSLの脆弱性でパスワードが危ないという騒ぎが起きた。今週になって、今度は「DNSキャッシュポイズニングの手法が公開された」とのニュースが。いったい、何が起こっているのだろうか?
「脆弱性」(ぜいじゃくせい)とは、サーバやネットワークシステムにおいて、悪意を持った第三者が利用できる可能性があるシステム上の欠陥や、そもそも仕様からしてミスだったという部分など、機密情報の漏洩やシステムの乗っ取り、なりすましといった、セキュリティ上の脅威となる行為に利用できてしまうコトを指す。
◎「心臓出血」(Heartbleed)は出血?
OpenSSLは、セキュリティの確保が必要な場合に使われる、通信を暗号化してくれるモジュール。今回見つかったOpenSSLの脆弱性により、暗号通信に使う「鍵」が盗まれ、その結果、暗号通信が破られデータ類が漏洩する可能性があるのだ。「HeartBeat」が心臓鼓動、その漏洩であることから「心臓出血」(Heartbleed)と呼ばれている。
この件が注目度の高いニュースになっているのは、このOpenSSLがパスワードでログインするたいていのWebサービスに使われているためだ。
現在、OpenSSLを使ったWebサービスでは検証作業・対応が行われている。
◎「心臓出血」(Heartbleed)より深刻な「DNS汚染」とは
先のOpenSSLの場合、言ってしまえばソフトウェアの設計上の問題で、脆弱制が見つかった以上、開発側はすみやかな対処をとる。また、そもそもパスワードは1ヶ月に1度は変えるべき、何年も同じものを使うなんて論外という意見もある。パスワードを考えるのが面倒だという人には、乱数を使ってパスワードを生成してくれるアプリもある。こうしたアプリを使ってこまめにパスワードを変更するなど、こちらが気をつけることで、ある程度、被害を最小限に抑えることもできる。
しかし、DNSキャッシュポイズニング=DNS汚染の場合、インターネットの根幹のしくみ上の問題だ。DNSはIPアドレスとドメイン名を管理するサーバーだ。「AドメインのAAサーバーはIPアドレスxxx.xxx.xxx.xxx」というようなドメイン名とIPアドレスのひも付け情報は、インターネットの交通整理のために使われる。私たちがあるサイトにアクセスしてサイトの中身を見たいというとき、その通信を行うために必要な、URLとIPアドレスの変換を行う役割だ。
簡単に言うと、DNSサーバーは互いに情報を交換し、滞りなく通信ができるようにしている。自分がIPアドレスを知らないドメイン名のリクエストが来たら他のDNSに問い合わせる→問い合わせを受けたDNSは知っていれば教える(あるいは、知らなければ問い合わせを他のDNSに転送する)という仕組みだ。
この際、わざを誤った情報を相手に教え、誤情報を拡散するという手法が「DNSキャッシュポイズニング」だ。これにより、DNSの中にキャッシュとして保存されている情報を操作し、ユーザーを偽のサイトに誘導することが可能となる。
実は、これはもうだいぶ前から知られていた方法(=問題)。ただ、DNSにキャッシュされるデータには有効期限が設定できるし、DNSの委譲関係による問い合わせの順序、データの信頼度もあり、本当に毒を入れることはなかなかうまくいかなかっただけだ。
これまでは実現できなかったキャッシュポイズニングに成功した、実際に実行できる具体的な攻撃手法が公開されたというのが今回の騒動だ。
これを受け、JPRSでは、ソースポートランダマイゼーション(問い合わせ先をランダムにすること)を有効にすれば、攻撃成功の確率を6万5000分の1程度に引き下げられるとして、DNSサーバーの管理者に対策を促している。
とはいえ、公開されたこの手法を使って、どれくらいの人間がDNSキャッシュポイズニング攻撃をするのか、そしてソースポートランダマイゼーションが、本当にDNSキャッシュポイズニング攻撃に有効なのか、実際のところはまだわからない。しかし、早急の対応が必須だ。
DNSキャッシュポイズニング攻撃に対し、ユーザー側から何のアクションもできない、もしかしたらサービスの提供側の対処も完全にはできないのかもしれない。その分、深刻度が高いというのがわかっていただけるのではないだろう。
<<参照>>
・ IPA:更新:OpenSSL の脆弱性対策について(CVE-2014-0160)
・jprs:(緊急)キャッシュポイズニング攻撃の危険性増加に伴うDNSサーバーの設定再確認について(2014年4月15日公開)
・急増するネットバンク被害は14億円超 ついに登場したネットバンキング専用ウイルス対策ソフトの使い勝手
・Facebookアカウントはどうして乗っ取られる?被害者から加害者にならないためのセキュリティ対策
大内 孝子
「脆弱性」(ぜいじゃくせい)とは、サーバやネットワークシステムにおいて、悪意を持った第三者が利用できる可能性があるシステム上の欠陥や、そもそも仕様からしてミスだったという部分など、機密情報の漏洩やシステムの乗っ取り、なりすましといった、セキュリティ上の脅威となる行為に利用できてしまうコトを指す。
◎「心臓出血」(Heartbleed)は出血?
OpenSSLは、セキュリティの確保が必要な場合に使われる、通信を暗号化してくれるモジュール。今回見つかったOpenSSLの脆弱性により、暗号通信に使う「鍵」が盗まれ、その結果、暗号通信が破られデータ類が漏洩する可能性があるのだ。「HeartBeat」が心臓鼓動、その漏洩であることから「心臓出血」(Heartbleed)と呼ばれている。
この件が注目度の高いニュースになっているのは、このOpenSSLがパスワードでログインするたいていのWebサービスに使われているためだ。
現在、OpenSSLを使ったWebサービスでは検証作業・対応が行われている。
◎「心臓出血」(Heartbleed)より深刻な「DNS汚染」とは
先のOpenSSLの場合、言ってしまえばソフトウェアの設計上の問題で、脆弱制が見つかった以上、開発側はすみやかな対処をとる。また、そもそもパスワードは1ヶ月に1度は変えるべき、何年も同じものを使うなんて論外という意見もある。パスワードを考えるのが面倒だという人には、乱数を使ってパスワードを生成してくれるアプリもある。こうしたアプリを使ってこまめにパスワードを変更するなど、こちらが気をつけることで、ある程度、被害を最小限に抑えることもできる。
しかし、DNSキャッシュポイズニング=DNS汚染の場合、インターネットの根幹のしくみ上の問題だ。DNSはIPアドレスとドメイン名を管理するサーバーだ。「AドメインのAAサーバーはIPアドレスxxx.xxx.xxx.xxx」というようなドメイン名とIPアドレスのひも付け情報は、インターネットの交通整理のために使われる。私たちがあるサイトにアクセスしてサイトの中身を見たいというとき、その通信を行うために必要な、URLとIPアドレスの変換を行う役割だ。
簡単に言うと、DNSサーバーは互いに情報を交換し、滞りなく通信ができるようにしている。自分がIPアドレスを知らないドメイン名のリクエストが来たら他のDNSに問い合わせる→問い合わせを受けたDNSは知っていれば教える(あるいは、知らなければ問い合わせを他のDNSに転送する)という仕組みだ。
この際、わざを誤った情報を相手に教え、誤情報を拡散するという手法が「DNSキャッシュポイズニング」だ。これにより、DNSの中にキャッシュとして保存されている情報を操作し、ユーザーを偽のサイトに誘導することが可能となる。
実は、これはもうだいぶ前から知られていた方法(=問題)。ただ、DNSにキャッシュされるデータには有効期限が設定できるし、DNSの委譲関係による問い合わせの順序、データの信頼度もあり、本当に毒を入れることはなかなかうまくいかなかっただけだ。
これまでは実現できなかったキャッシュポイズニングに成功した、実際に実行できる具体的な攻撃手法が公開されたというのが今回の騒動だ。
これを受け、JPRSでは、ソースポートランダマイゼーション(問い合わせ先をランダムにすること)を有効にすれば、攻撃成功の確率を6万5000分の1程度に引き下げられるとして、DNSサーバーの管理者に対策を促している。
とはいえ、公開されたこの手法を使って、どれくらいの人間がDNSキャッシュポイズニング攻撃をするのか、そしてソースポートランダマイゼーションが、本当にDNSキャッシュポイズニング攻撃に有効なのか、実際のところはまだわからない。しかし、早急の対応が必須だ。
DNSキャッシュポイズニング攻撃に対し、ユーザー側から何のアクションもできない、もしかしたらサービスの提供側の対処も完全にはできないのかもしれない。その分、深刻度が高いというのがわかっていただけるのではないだろう。
<<参照>>
・ IPA:更新:OpenSSL の脆弱性対策について(CVE-2014-0160)
・jprs:(緊急)キャッシュポイズニング攻撃の危険性増加に伴うDNSサーバーの設定再確認について(2014年4月15日公開)
・急増するネットバンク被害は14億円超 ついに登場したネットバンキング専用ウイルス対策ソフトの使い勝手
・Facebookアカウントはどうして乗っ取られる?被害者から加害者にならないためのセキュリティ対策
大内 孝子

