Ubuntu Weekly Topics

2016年6月3日号 DNSレゾルバに関する大きな変更ふたたび・UWN#467

この記事を読むのに必要な時間:およそ 3 分

DNSレゾルバに関する大きな変更ふたたび

Linuxの常識が少しだけ書き換わる時間が,またやってきました。

どういった変化が起きるのかを把握するため,まずは5年ほど前に行われた12.04での変更を思い出す必要があります。

12.04以前のUbuntuでは,古典的なLinux環境と同じように,⁠1)DNSサーバーの設定は/etc/resolv.confファイルを編集して行う」⁠2)名前解決の結果はキャッシュされず,毎回問い合わせる必要がある」という2つのルールに縛られていました。

12.04ではNetworkManager経由でdnsmasqを起動し,ローカルレゾルバとして動作させる修正が取り込まれています。この修正で,このうち1)のルールが破棄され,/etc/resolv.confはresolvconfパッケージによって自動的に設定されるものになりました。しかし,dnsmasqによるキャッシュ機能はさまざまな問題を含み,有効にはなっていません。名前解決の結果を単純にキャッシュさせると,複数ユーザーが利用している環境では悪意あるユーザーによって,他のユーザーの名前解決の結果が簡単に汚染されてしまいます。名前解決の結果を汚染できるということは,偽のサイトへ簡単に誘導できてしまうことを意味します注1)⁠

注1
もちろん,そのような悪意を持ったユーザーが同じシステムを利用している時点で他にもさまざまな危険があるのですが,それはまた別の話です。

また,DNSキャッシュを複数のユーザーで共有するという実装には,⁠あるFQDNがキャッシュされているかどうか」が他のユーザーから観測できることを意味します。特定のドメイン名を解決した際の速度から,他のユーザーがどのようなWebサイトを見ているかを推定することが可能になるおそれがあります注2)⁠

注2
「gihyo.jp」を例に考えてみましょう。2名のユーザーが存在するシステムにおいて,⁠ユーザーAがgihyo.jpを見ているかどうか」をユーザーBが推定したいとします。この場合,ユーザーBは一定時間ごとにgihyo.jpの名前解決を試み,解決にかかった時間を計測しているだけで,⁠gihyo.jpの名前解決結果がすでにキャッシュされているかどうか」を識別できます。システムの持つ名前解決結果のキャッシュ時間にも依存しますが,もしユーザーAがgihyo.jpを閲覧していた場合,⁠gihyo.jpの名前解決結果がなぜかキャッシュされている瞬間」を観測できる可能性があります。gihyo.jpであれば特に問題はありませんが,これが人に知られたくないような恥ずかしいWebサイトであった場合,ユーザーBはユーザーAの恥ずかしい秘密を知ることができたことになります。

こうした問題を回避するためにはUIDごとにキャッシュを分離するような実装が必要ですが,12.04時代から継続して問題が残っており,いまだに有効になっていません。

少なくとも12.04当時には十分な妥当性があったこの実装ですが,上述のような問題が残っている上,⁠DesktopやTouchとServerでは設定や挙動が異なる」という,ユーザー体験を大きく阻害する別の問題を発生させていました。また,Serverにローカルレゾルバが動作していないことで,⁠そのIPアドレスの逆引きを試みるとDNSサーバがタイムアウトするような回線」注3からSSH接続すると,接続のたびに毎回長時間待たされるという,不具合にも似た不可避の挙動をもたらしていました。

注3
そのアドレスの権威DNSサーバーが十分な速度でNXDOMAIN応答を返すのであれば問題ないものの,世の中には「応答を返してくれない権威DNSサーバー」というものが無数に存在しています。この問題は,特に逆引きの場合に顕著です。

これらの問題を現状よりは良い形に解決することを目的として,yakkety(16.10)では,もう少しマトモなローカルDNSレゾルバとして機能する実装を導入することが計画されていましたfoundations-y-local-resolver)⁠

計画時点では「dnsmasqかresolvedのどちらか」という判断が下されていましたが,5月末にresolvedの投入が行われることが宣言されています。

この変更によって,⁠1)/etc/resolv.confは手で編集してよいファイルに戻り」⁠⁠2)DNS応答は基本的にキャッシュされる」という挙動が実現されます。また,変更はDesktop・Touch・Serverのいずれにも適用され,環境による差が無くなります。現時点ではまだ荒削りで検討や議論が尽くされているとは言えず,今後キャッシュ機能の削除といった方向に話が進む可能性もありますが,12.04で行われたのと同じように,今後はふたたび名前解決に関する常識が変化していくことになりそうです。

UWN#467

Ubuntu Weekly Newsletter #467がリリースされています。

その他のニュース

  • 各種クラウド上で利用できる「Certified」イメージの解説ドキュメントが準備されています。
  • Meizu Pro 5のUbuntuバージョンの開封の様子

今週のセキュリティアップデート

usn-2984-1:PHPのセキュリティアップデート
usn-2950-5:Sambaの再アップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2016-May/003440.html
  • Ubuntu 16.04 LTS・15.10・14.04 LTS用のアップデータがリリースされています。
  • usn-2950-1の修正で発生していたntlm_authツールの非互換性を改善します。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-2985-1 / usn-2985-2:GNU C Libraryのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2016-May/003441.html
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2016-May/003442.html
  • Ubuntu 15.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。CVE-2013-2207, CVE-2014-8121, CVE-2014-9761, CVE-2015-1781, CVE-2015-5277, CVE-2015-8776, CVE-2015-8777, CVE-2015-8778, CVE-2015-8779, CVE-2016-2856, CVE-2016-3075を修正します。
  • ttyファイルにpt_chownsした際に適切に権限が確認されず,root権限の奪取が可能な問題・NSSの処理において無限ループを誘発させることが可能な問題等を修正します。
  • 対処方法:usn-2985-2へ更新の上,システムを再起動してください。
  • 備考:libmを利用しているアプリケーションを利用できなくなる問題があったため,CVE-2014-9761への修正は差し戻されています。
usn-2987-1:GD libraryのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2016-May/003443.html
  • Ubuntu 16.04 LTS・15.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。CVE-2014-2497, CVE-2014-9709, CVE-2015-8874, CVE-2015-8877, CVE-2016-3074を修正します。
  • XPM, GIF, GD形式の画像を読み込んだ際,メモリ破壊を伴うクラッシュが生じる問題がありました。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-2986-1:dosfstoolsのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2016-May/003444.html
  • Ubuntu 16.04 LTS・15.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。CVE-2015-8872, CVE-2016-4804を修正します。
  • 悪意ある加工の施されたファイルシステムを処理した場合,メモリ破壊を伴うクラッシュが生じる問題がありました。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-2988-1:LXDのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2016-May/003445.html
  • Ubuntu 16.04 LTS・15.10用のアップデータがリリースされています。CVE-2016-1581, CVE-2016-1582を修正します。
  • loopマウントしたZFSバックエンド環境の場合,本来制限されるべき読み込み処理が可能でした。また,非特権コンテナを特権コンテナに切り替える際,親マシンの全ファイルが読み取れる状態になっていました。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。

著者プロフィール

吉田史(よしだふみひと)

システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。

コメント

コメントの記入