Ubuntu Weekly Topics

2015年1月30日号 vividの開発・bqのUbuntu Phoneのスペック・“GHOST”脆弱性・UWN#401

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

vividの開発

vividの開発がAlpha 2フェーズを迎えています。

Ubuntu本体には『今のところまだ』新機能の大規模投入は行われておらず,大幅なジャンプは発生していません。フレーバーの中ではKubuntuがPlasma 5へ移行し,壁紙も変更したことで見た目上の大きな変化をしている状態です。

現状ではまだ大きな変化はありませんが,既報の『コンバージド』アプリケーションや,Unity 8のウインドウモードのテスト環境に使うことは可能なので,「新しいUbuntu」に触ってみたい場合はそろそろ手を出してみても良いでしょう。

bqのUbuntu Phoneのスペック

bqからリリースされる予定のUbuntu Phone,「Aquarius E4.5 Ubuntu edition」のスペックが公開されました。日本からの注文はできない見込みですが,ヨーロッパでは間もなくbqからの直販の受付が開始される予定です。

なお,デモ用ビルドも準備されそろそろ「動いている量産版Ubuntu Phone」を確認できるようになりそうです。

“GHOST”脆弱性

Linuxの根幹を成すライブラリのひとつ,glibcにGHOSTというキーワードで呼ばれる脆弱性が発見されていますCVE-2015-0235)。gethostbyname()関数に問題があったので,g-hostでGHOSTです。

Ubuntuもこの問題の影響を受けるため,アップデータがリリースされています。

usn-2485-1:GNU C Libraryのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-January/002813.html
  • Ubuntu 12.04 LTS・10.04 LTS用のアップデータがリリースされています。CVE-2015-0235("GHOST"脆弱性)を修正します。
  • 対処方法:アップデータを適用の上,システムを再起動してください。
  • 備考:以下の説明をよく読み,ただちに対応すべきかどうかを確認してください。Eximが動作していないホストでは,少なくとも現時点では「できるとしてもプロセスを落とされるだけ」です。
  • 備考2:14.04 LTS,14.10,そしてまだリリースされていない15.04は影響を受けません

一部の報道で知られている通り,GHOST脆弱性を悪用することで,「Eximメールサーバーが実行されている環境において,任意のコマンドの実行が可能」です。

しかしこれはEximが動いているホストに限られた話で,一般的な環境でGHOST脆弱性を利用したシステム乗っ取り攻撃が成立するためには,次のような,かなり特殊な条件を満たす必要があります。

  • gethostbyname()を用いているプログラムである。これは「そのプログラムがまだIPv6に対応していない」か,「よほど特殊な振る舞いをする」ということを意味します。
  • gethostbyname()に,「DNSによって解決されたものではない」任意の文字列を処理させることができる注1
  • 数バイトのヒープメモリの書き換えが致命的になるプログラムである。たとえば,独自にメモリ管理を実装している等の理由により,「関数ポインタを改竄できるため,プログラムの特定の飛び先を変更できる」「設定を書き換えることで,特定の状況で実行されるべきシェルコマンドを変更できる」といった条件を満たしている。
  • ※重要:この情報は2015年1月29日時点のものです。今後,応用的な攻撃方法が発見されるにつれて,条件が少なくなる可能性があります。
注1
この種の攻撃では,SSHやSMTP等,ホスト名とIPアドレスのマッチを確認するために「DNSの正引きを確認する」「接続元を逆引きする」プログラムの振る舞いを利用して,DNSのエントリとして悪意ある加工を施した文字列を受け取らせるというアプローチを利用します。しかし,GHOSTの場合,攻撃を構成する文字列が一般的なDNS実装によってフィルタされてしまうため,DNSを迂回路に使う攻撃は成立しないと考えられています。

Eximは,「SMTPセッションにおいて,HELOコマンドの引数としてホスト名を受け取り,それをそのままgethostbyname()に引き渡している」「メモリ管理を自前で実装している」「関数ポインタの改竄やら設定ファイルの変更やらで任意のコマンドが実行できる」と,すべての条件を満たしています。

逆に,これらの条件を満たしたプログラムでなければ,基本的に影響は大きくありません。ヒープメモリを数バイトだけ書き換えることができる,ということそのものは,通常はセキュリティ上あまり大きな脅威にはならないからです。通常はプロセスが停止するか,予測できないちょっとした異常動作をする程度で終わるからです。上記の条件を満たさずに攻撃が成立するケースは(今後新しいアイデアの飛躍がなければ)考えにくいので,「攻撃者の先読みがサスペンスドラマの探偵に匹敵する」「敵が大国の諜報組織」「というかそんな攻撃者なら,もうすこし使いやすい他の脆弱性を見つけてくるため,そもそも問題にならない」という理解をしておくと良いでしょう。

GHOST脆弱性のポイントは「glibcのgethostbyname()にヒープメモリ書き換えの脆弱性があった」ではなく「本来なら大したことのないはずの,ヒープメモリ数バイトの書き換えで,特定のソフトウェアであれば任意のコードを実行できる攻撃パターンが新たに見つかった」という点です。

「glibcにある,これまで悪用できると思われていなかった脆弱性を使うことで,Eximなら攻略できるシナリオを発見しました。今のところ,他のソフトウェアで致命的になるケースは見つけられていません。よって挑戦者求む」というようなステータスです。

つまり,「これまでこういう常識があって,レアケースならシステムを乗っ取れるであろうことは知られていたけれど,実際にこうやったら迂回できたよ」という報告です注2)。

注2
ただし,Eximを実行している環境では直接的に外部からコードを実行されてしまいます。「Eximを動かしている場合は致命的,そうでなければ今のところ現実的な脅威はない」です。

……ということで,Ubuntu Serverの管理者が行うべき対応は次の通りです。

  • Eximを実行している場合,今すぐにglibc(libc6パッケージ)を更新し,Eximを再起動する(service exim restart)。
  • Eximを実行していない場合,glibcのアップデートを適用できるように準備を行い,次の定期メンテナンス,もしくはGHOST脆弱性の悪用シナリオが追加されたタイミングで更新できるように準備を行いつつ,今後の動向についての情報収集を継続して行う。
  • Eximを実行していないが,なんらかの政治的な理由がある場合は(例:偉い人が新聞でGHOST脆弱性を目にしてしまい,説得に失敗してしまった等),それなりに検証をした上で更新を行う。
  • なんらかの政治的な理由で更新が望ましくない場合,稼働しているサービスそれぞれについて,この問題の影響を受けないかを確認する。

更新後に「確実に」反映を行うためにはシステムの再起動が確実ですが,外部から入力を受け付けるサービスをすべて再起動する対応でも問題ありません。

ただし,メモリ破壊は奥が深い上に,一部に「それに魅せられた人がいる」世界なので,天才(もしくは深刻な変態)が本気になることで,これまでの常識を打ち破る,新しい攻撃手法を見つけ出してしまう可能性があります。よって,まったく対応しない,という選択肢もあまりお勧めできません。glibcの更新のような「重い」作業を行っておくことは(将来,より致命的な何かが見つかった場合に役に立つので)ムダにはなりません。

なお,追加調査を行う場合,情報が錯綜してしまっているため,GHOST騒ぎの発端であるQualysのアドバイザリ以外の情報源の利用はお勧めできません。

一部報道等において,本脆弱性を「現時点において,Eximを実行している場合に限って致命的」と明示せずに「ただちにアップデートが必要」と語るニュースソースが存在しますが,これらは一次情報にあたる習慣がないか,もしくは英語情報だと無視してしまう病気にかかっていると考えられます。こうしたニュースソースの「推奨対応」を無条件に実施したばかりに,かえってシステム内にトロイの木馬が埋め込まれる,といったことも考えられますので,「なんらかの害意のあるデマに汚染される可能性がある情報源」として要注意リストに含めることをお勧めします。

UWN#401

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

その他のニュース

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

usn-2481-1:Sambaのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-January/002805.html
  • Ubuntu 14.10・14.04 LTS用のアップデータがリリースされています。CVE-2014-8143を修正します。
  • SambaをADのドメインコントローラとして動作させている場合,ユーザー作成時の権限チェックが正しく行われていないため,任意の権限でユーザーを作成することが可能でした。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-2480-1:MySQLのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-January/002806.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。
  • CPUJan2015でリリースされた5.5.41のUbuntuパッケージ版です。CVE-2014-6568, CVE-2015-0374, CVE-2015-0381, CVE-2015-0382, CVE-2015-0411, CVE-2015-0432を修正します。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
  • 備考:MySQLはMREの対象になっているためupstreamのリリースがそのまま投入されています。セキュリティ修正以外のバグ修正も含まれているため,以前の動作と非互換になっていることもありえるものです。適用時には注意してください。
usn-2482-1:elfutilsのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-January/002807.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS・10.04 LTS用のアップデータがリリースされています。CVE-2014-9447を修正します。
  • libelf1を用いたアーカイブ処理において,アーカイブに含まれる加工された文字列を適切に解釈できず,本来意図しないパスにファイルを展開してしまうことがありました。
  • 対処方法:アップデータを適用の上,libelf1を利用しているアプリケーションを再起動してください。
usn-2484-1:Unboundのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-January/002808.html
  • Ubuntu 14.10・14.04 LTS用のアップデータがリリースされています。CVE-2014-8602を修正します。
  • DNSによる名前解決を行う際,移譲先への問い合わせ回数を制限していなかったため,悪意あるDNSサーバとドメインを準備することで,リソース過大消費を発生させることが可能でした。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-2483-1:JasPerのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-January/002809.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。CVE-2014-8137, CVE-2014-8138, CVE-2014-8157, CVE-2014-8158を修正します。
  • 悪意ある加工を施したJPEG-2000ファイルを処理させることで,メモリ破壊を伴うクラッシュを発生させることができました。理論上は任意のコードの実行が可能です。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-2483-2:Ghostscriptのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-January/002810.html
  • Ubuntu 10.04 LTS用のアップデータがリリースされています。usn-2483-1のghostscriptパッケージへの適用です。
  • 対処方法:通常の場合,アップデータを適用することで問題を解決できます。
usn-2476-1:Oxideのセキュリティアップデート
usn-2458-3:Firefoxの再アップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2015-January/002812.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。Firefox 35.0.1のUbuntuパッケージ版です。
  • 対処方法:アップデータを適用の上,Firefoxを再起動してください。
usn-2486-1:OpenJDK 6のセキュリティアップデート
usn-2487-1:OpenJDK 7のセキュリティアップデート

著者プロフィール

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

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

コメント

コメントの記入