libvirt-0.10.2-29.5.0.1.AXS4
エラータID: AXSA:2014-076:01
以下項目について対処しました。
[Security Fix]
- libvirt の (1) virDomainBlockStats, (2) virDomainGetBlockInf, (3) qemuDomainBlockJobImpl, (4) virDomainGetBlockIoTune 関数には複数の競合条件が存在し,ディスクがアタッチされているかどうかを適切に検証しておらず,virDomainDetachDeviceFlags コマンドによって,リモートの読み込み可の攻撃者がサービス拒否 (libvirtd のクラッシュ) を引き起こす脆弱性があります。(CVE-2013-6458)
- libvirt の virNetServerClientStartKeepAlive 関数には競合条件が存在し,keepalive レスポンスが送信される前にコネクションを切断することによって,リモートの攻撃者がサービス拒否 (libvirtd のクラッシュ) を引き起こす脆弱性があります。 (CVE-2014-1447)
[Bug Fix]
- libvirt で sanlock ロックドライバが有効な場合,ロックオーナーの名前に sanlock デーモンの 48文字制限があるため,ドメインが制限より長い名前を持つと開始できない問題を修正しました。
- いくつかの問題で移行時に IPv6 が適切に処理されない問題を修正しました。
- 手動設定なしでリモートドライバは libvirtd デーモンのセッションインスタンスへの接続をサポートせず、このような設定を使おうとするユーザを混乱させる問題を修正しました。
- libvirt ライブラリに ESX 環境用のドライバの実装がなく、ユーザが ESX ゲスト用のネットワークを設定できない問題を修正しました。
- スナップショットの作成が失敗したときに libvirt が QEMU エラーをそのまま報告し、提供されたエラーメッセージが混乱を引き起こす問題を修正しました。
- AMD ファミリー 15h プロセッサ CPU アーキテクチャは独立したコアと独立したスレッドとして表される "module" で構成されています。管理アプリケーションはアプローチのうちの一つを選択することを必要とし、libvirt はこれをするのに十分な情報を提供しませんでした。加えて管理アプリケーションはニーズに応じて AMD ファミリー 15h プロセッサコアでモジュールを表現することができない問題を修正しました。
- libvirt デーモンはゲストエージェントサービスを実行する Microsoft Windows のゲスト用の s3 や s4 の操作を実行できず、ドメインが破壊される結果 "domain s4 fail" というエラーメッセージが出力される問題を修正しました。
- libvirt が仮想マシン (VM) を再開しようとしてファイルの解凍に失敗したとき、libvirt が実行している仮想マシンのリストからその仮想マシンを削除したにも関わらず対応する QEMU プロセスを削除しない問題を修正しました。
- libvirt ライブラリはドメインの Network Interface Controller (NIC) でユーザが Quality of Service (QoS) を設定できますが、実装のバグにより特定の値が正しく設定されず、実際のスループットがドメイン XML に設定されるスループットと対応しない問題を修正しました。
- QEMU で vCPU のホットアンプラグをサポートしておらず、この機能を使用するすると失敗していました。それにも関わらず、libvirt ライブラリによって記憶されているプロセッサの数がアップデートされる問題を修正しました。
- マイグレーションが失敗したとき、それらを使用しなくなったために接続先ホストがファイルのリラベルを開始しました。しかしこの動作によってまだ実行中のソースホストが影響を受け、ゲストがディスクへの書き込み機能を失う可能性のある問題を修正しました。
- libvirt ライブラリ用の Python 対応は virDomainSnapshot クラスに getDomain() と getConnect() メソッドの誤った実装を含んでおり、Python クライアントがセグメンテーションフォルトで予期せず終了してしまう問題を修正しました。
- カーネル機能のコントロールグループ (cgroups) を使用していないとキャッシュを作成することができないため、sVirt が適切にバッキングチェインファイルをラベリングできず、ゲストが実行できない問題を修正しました。
- ユーザが複数の virsh の create/destroy を実行したとき、競合状態が発生し、libvirtd デーモンがセグメンテーションフォルトで予期せず終了し、既に破壊されたドメインに関する誤ったエラーメッセージが呼び出し元に表示される問題を修正しました。
- libvirt ライブラリが QEMU とは異なる相対的なバッキングチェーンに従ったため sVirt 権限がなくなる問題を修正しました。
- ユーザが Coverity や Valgrind といったリーク検出ツールを実行すると libvirtd デーモンに様々なメモリリークが生じる問題を修正しました。
- ユーザが共有可能なブロックデバイスの CD-ROM でゲストを起動すると、既に解放済みのメモリにアクセスすることで libvirtd デーモンが予期せず失敗する問題を修正しました。
- 一つのスレッドが接続をクローズするコールバックを実行したとき、同時に他のスレッドが接続オブジェクトや接続コールバックスレッドを解放し、既に解放済みのメモリにアクセスすることによって発生する libvirt クライアントライブラリの競合状態のせいで、libvirt を使ういくつかのアプリケーションがセグメンテーションフォルトで予期せず終了する可能性のある問題を修正しました。
- サイズ 0 の割り当てで論理ボリュームを作成するよう要求すると、libvirt ライブラリが拡張なしでボリュームを作成するために lvcreate コマンドを実行しますが、許可されず、libvirt が正しいエラーに言及しないエラーメッセージを返す問題を修正しました。
- auto-port と port が指定されないとき、tlsPort 属性に "-1" が設定されているのに、QEMU コマンドラインで指定された tlsPort 要素に有効なポートの代わりに "1" が設定されると、ポートにソケットをバインドすることができずに QEMU が失敗する問題を修正しました。
- キャッシュが共有ストレージ上に保存されておらず、libvirt が明示的にすべてのストレージをコピーするように要求していても、ドメインのディスクが安全ではないキャッシュの設定を使ったときに、libvirt ライブラリが移行を中止できたことで VIR_MIGRATE_UNSAFE フラグが有効な場合にしか、共有ストレージなしで移行ができなかった問題を修正しました。
- libvirt ライブラリは kernel の実行に unpriv_sgio サポートが不要な場合でも起動している kernel でサポートしていないと耐性がなく,ホストシステムをアップグレードした後でホストを再起動しないとユーザが共有可能なブロックディスクデバイスを用いてドメインを起動できない問題を修正しました。
- libvirt のコードにバグがあり、vidDomainBlockStatsFlags() と vidDomainDetachDeviceFlags() の二つの API が並行して実行され、libvirtd デーモンが予期せず終了する問題を修正しました。
- 管理された保存イメージを持つ仮想マシン (VM) が管理された保存イメージを削除する "--force-boot" パラメータで起動されると、管理された保存状態を保持するフラグが消去されないせいで、誤った情報が表示され、保存状態に依存するいくつかの操作が失敗する問題を修正しました。
- マイグレーションの終了時、マイグレーション先のホスト上でドメインを再開する前に、libvirt が Simple Protocol For Computing Environments (SPICE) のデータが QEMU へ移行されるのを待つせいで、ドメインがどのホストでも実行されていないという待ち時間が大幅に増加する問題を修正しました。
- ロジカルストレージのバックエンドストレージの解放済みメモリ使用のバグにより、ロジカルなストレージ・プールが削除されると libvirtd デーモンが予期せず終了する問題を修正しました。
- libvirt の RPC の実装のクライアント側における競合状態のせいで、この接続を介して送られた API の終了を他のスレッドが待っているにも関わらず、サーバによって閉じられたクライアントの接続が解放され、他のスレッドが既に解放済みのメモリにアクセスすることで、クライアントがセグメンテーションフォルトで予期せず終了する可能性のある問題を修正しました。
- 一過性のネットワークの処理を誤ったときにロックが使われ、定義された API が一過性のネットワーク上で使われたときに、ネットワークのオブジェクトのロックが正しく解除されない問題を修正しました。
- virsh(1) の man ページで vol-download コマンドの説明に誤りがあったため修正しました。
- virsh ユーティリティの vol-name コマンドが必要のない場合でもプールを指定するためのオプションを付けないとヌル文字を表示し、エラーメッセージが返されることでユーザが混乱する可能性のある問題を修正しました。
- virsh(1) の man ページに QEMU ドライバが現在サポートしていない最大メモリサイズの増加機能についての記載があったため修正しました。
- 他のバグを修正するためにリファクタリングしたコードの一部にロックが誤って取り除かれるケースがあり、ドメインをファイルに保存するとき libvirtd デーモンが予期せず終了する可能性のある問題を修正しました。
- libvirt ライブラリは libvirt サービスの再起動時に状態を再読み込みするために管理対象ドメインの内部状態を保存するようサイドファイルを使用しますが、ドメインの状態が矛盾した状態で保存された場合は、状態が再度読み込まれず、対応するドメインが失われて消える可能性がある問題を修正しました。
- RAW フォーマットでないストレージボリュームをディレクトリプール、ファイルシステムプール、NFS プールのストレージから LVM プールへ複製しようと "virsh vol-create-from" コマンドを使用すると "unknown file format" というエラーメッセージで失敗する問題を修正しました。
- 特定の状況で接続を閉じると、ゲストが自動的に destroy されるよう設定していても destroy に失敗し、libvirtd デーモンが予期せず終了する問題を修正しました。
- 高負荷時にマシン上で libvirt のテストスイートを実行すると、テストでデッドロックが発生する可能性のある問題を修正しました。テストスイートを RPM のビルド中に実行するとデッドロックが発生したときにビルドが完了しません。
- 対応する ESX のバージョン 5.1 が既にサポートされているにも関わらず、VirtualHW アプリケーションのバージョン 9 がサポートするバージョンとして設定されていないことで、virtualHW を使うゲストで ESX 5.1 サーバへ接続すると、以下のエラーが表示される問題を修正しました。
- libvirt の内部データ構造はデーモンにサービス運用妨害 (DoS) の可能性を回避するためにサイズが厳しく制限されており、4096 の CPU を持つホストが使われる可能性が考慮されていない問題を修正しました。
- fork() と exec() 関数の間で getpwuid_r() 関数の呼び出しを行うことで libvirtd デーモンが 子プロセスの従属グループを設定していましたが、相互排除 (ミューテックス) を引き起こす可能性があり、他のスレッドが getpwuid_r のミューテックスを既に保持していると、フォークされた子プロセスがデッドロックを引き起こし、次々に libvirtd が無反応になる問題を修正しました。
- libvirt ライブラリがボリュームの追加、削除、サイズ変更した後でプールの情報をアップデートしないせいで、ユーザが "virsh pool-refresh" コマンドを使ってプールを再読み込みしなくてはならない問題を修正しました。
- virsh ユーティリティが "vol-create" と "vol-create-as" コマンドの "--pool" オプションの引数をプール名とみなし、引数に Universally Unique Identifier (UUID) が指定された場合、動作しない問題を修正しました。
- ユーザがドメイン XML で Virtual Network Computing (VNC) アドレスを指定しない場合、qemu.conf ファイルにあるアドレスが使われましたが、マイグレーションの際に、ユーザが XML ディレクトリに設定したリスンアドレスと qemu.conf ファイルからコピーしたアドレスが同一で、ドメインが移行できない問題を修正しました。
- libudev に渡された libvirt ライブラリのロギング機能が、複数のパラメータを持つ文字列を正しく処理せず、libudev がメッセージを記録すると libvirtd デーモンが予期せず終了する可能性のある問題を修正しました。
- libvirt ライブラリはいくつかのチェーン CA 証明書を含んだファイルであるにも関わらず cacert.pem ファイルから 一つの認証局 (CA) の証明書しかロードせず、クライアントとサーバの両方が共通の祖先 CA を共有する中間 CA 証明書に署名されたとき、libvirt がクライアントとサーバの証明書の検証に失敗する問題を修正しました。
- Hypervisor バージョンのローダのせいで、ゲストは一つのディスプレイでしか多くの機能を利用できず、二つのディスプレイを持つゲストが QEMU ハイパーバイザー上で適切に定義されずに、いくつかの他の機能で適切に二番目のディスプレイが考慮されない問題を修正しました。
- libvirt ライブラリはデバイスにバインドされたデバイスドライバの名前を変更する必要があることを示すために kernel からの "change" 通知に依存していましたが、この通知が送信されず、"virsh nodedev-dumpxml" コマンドからの出力が現在バインドされているドライバではなく、libvirt を起動した当初バインドされていたデバイスドライバを示す問題を修正しました。
- libvirt のネットワーク定義の <pf> エレメントに誤ったデバイス名が与えられると、ゲストがそのネットワークを使用したインターフェースを作成しようとしたとき libvirt が予期せず終了する問題を修正しました。
- mount コマンドが失敗しても virStorageBackendFileSystemMount() 関数が成功の値を返すことで、使用不能なのにも関わらず libvirt が実行中としてプールを表示する問題を修正しました。
- libvirt コード内の欠落により、hostdev-based ネットワーク (PCI デバイス割り当てを経由してゲストに割り当てるための SRIOV 仮想機能のプール) 用の VLAN タグがハードウェアデバイスに適切に設定されない問題を修正しました。
- libvirt ライブラリが誤って複数の hostdev ネットワークデバイスに同じ alias 名を使用しようとしたことで、構成内に複数の hostdev ネットワークデバイスがあるゲストを起動できない問題を修正しました。
- <numatune> タグ内の placement に "auto" を設定したドメイン XML をパースしたり、"nodeset" オプションが指定されたりすると、ノードセットのビットマップが二度解放され、その二重解放によって libvirtd デーモンが予期せず終了する問題を修正しました。
- コードの動作によって Simple Protocol for Independent Computing Environments (SPICE) のマイグレーション状況を照会するために使用される無効なジョブがあり、SPICE のシームレスなマイグレーションでドメインを移行し、同時に同じドメインの情報を要求するために domjobinfo コマンドを使用すると、libvirtd デーモンが予期せず終了する問題を修正しました。
- libvirt-guests サービスが停止したいるときに libvirt-guests init スクリプトの status コマンドが "0" を返すのに対して、Linux Standard Base (LSB) は同様の場合に異なる値 ("3") を必要とするために、返り値に依存する他のスクリプトはサービスが実行されているのかどうか区別することができない問題を修正しました。
- libvirt ライブラリに QEMU プロセスによる最大メモリ使用量の制限値を決定するためのヒューリスティックが含まれていたため、制限に達すると kernel が QEMU プロセスを kill し、同様にドメインも kill され、誤った予測によってランダムにドメインが kill される問題を修正しました。
- 2 つのクライアントが同じ一時的なドメインを起動しようとすると libvirt が適切に検出できず、複数の QEMU プロセスが同じドメインで実行する可能性のある問題を修正しました。
[Enhancement]
- ドメインの Virtual Network Computing (VNC) コンソールのための共有ポリシーを指定する機能を追加しました。新しい "sharePolicy" 属性によってユーザは排他的接続から共有接続にポリシーを変更でき、デプロイメントが正しく動作します。
- QEMU のネイティブ GlusterFS サポートを導入しました。ユーザはネットワークディスクとして QEMU ドメインに GlusterFS 上に保存されたディスクイメージを追加することができます。
- ネットワークトラフィックの Network Address Translation (NAT) 用のポートやアドレス範囲を指定することができる、新しい "<nat>" エレメントを提供します。
- "migrate" コマンドの "migrateuri" パラメータについての説明が欠けていたため virsh(1) の man ページに追加しました。
- libvirt ライブラリは ram_size パラメータをサポートするようになりました。一つの Peripheral Component Interconnect (PCI) デバイスでマルチヘッドを使用するときユーザが RAM メモリを設定できるようになりました。
- QEMU ゲストエージェントがゲスト CPU の有効化・無効化をサポートするようになり、libvirt ライブラリにこの機能のサポートを追加しました。性能とスケーラビリティを理由にゲストで CPU を無効化するためにユーザが libvirt API を使うことができるようになりました。
- libvirt ライブラリはネットワーク構成で不完全ホスト名を持つ DNS リクエストをクライアントからサ
ーバへフォワーディングさせるオプションを提供します。"forwardPlainNames='yes'" オプションをネ
ットワークの <dns> エレメントに属性として追加することでフォワーディングが許可されます。
- libvirt ライブラリにホストのメモリでドメインのメモリをロックするためのサポートを追加しました。
ユーザがドメインのメモリページのスワッピングを避けることを可能にし、スワッピングによって引き起こされるドメイン実行におけるレイテンシを回避します。ユーザはホストメモリに常に存在するドメインを設定することができます。
- QEMU I/O スロットリングが仮想マシンでのきめ細やかな I/O 制御を提供し、また基盤となるストレージデバイスの上に抽象化レイヤを提供します。
- 新しい pvpanic 仮想デバイスは仮想スタックに接続され、ゲストのパニックによって libvirt がvirt-manager のような管理用アプリケーションへ通知イベントを送ります。このデバイスの使用を有効にすると、追加の QEMU のコマンドラインオプションが必要となります。今回のリリースでは libvirt 用にこれらオプションを設定するためのサポートを含んでいません。
- libvirt ライブラリの virDomainDeviceUpdateFlags() 関数によりドメインが実行している間ドメインのデバイス上のいくつかの設定をユーザがアップデートできず、Network Interface Controller (NIC) をアップデートしても、実装が不十分だったため QoS が変更されない問題を修正しました。
一部CVEの翻訳文はJVNからの引用になります。
http://jvndb.jvn.jp/
パッケージをアップデートしてください。
Multiple race conditions in the (1) virDomainBlockStats, (2) virDomainGetBlockInf, (3) qemuDomainBlockJobImpl, and (4) virDomainGetBlockIoTune functions in libvirt before 1.2.1 do not properly verify that the disk is attached, which allows remote read-only attackers to cause a denial of service (libvirtd crash) via the virDomainDetachDeviceFlags command.
Race condition in the virNetServerClientStartKeepAlive function in libvirt before 1.2.1 allows remote attackers to cause a denial of service (libvirtd crash) by closing a connection before a keepalive response is sent.
N/A
SRPMS
- libvirt-0.10.2-29.5.0.1.AXS4.src.rpm
MD5: 3c7fecd081e68937a046c3977118e813
SHA-256: 99dca58f01d2e341dc6b386b0aa7e7bb0b470d5ec271dd479fd997509f4db222
Size: 21.87 MB
Asianux Server 4 for x86
- libvirt-0.10.2-29.5.0.1.AXS4.i686.rpm
MD5: 7f61b694fbcb486bf707d697e4434f08
SHA-256: 3340811a2faee5d9ec6d3896242201ef0fbd4698b36a024e4a1b23785e0d4fe3
Size: 2.11 MB - libvirt-client-0.10.2-29.5.0.1.AXS4.i686.rpm
MD5: 78e0cfe9716aa8bcd763908097466acf
SHA-256: 655e1f711c4dee56a192b15bfe9463bbc85ce1de3d69cdab283b1c93e18b48f5
Size: 4.02 MB - libvirt-devel-0.10.2-29.5.0.1.AXS4.i686.rpm
MD5: 1442934d8a63082e5af923a247c3e59b
SHA-256: 0513bc5accd63569d013367766ecca3c8a757403d1fd7041275097137d029a23
Size: 410.18 kB - libvirt-python-0.10.2-29.5.0.1.AXS4.i686.rpm
MD5: 3b690768793f1d7b287db03738a8137a
SHA-256: dd5e40da470bb48dd8da77d2d2f038e20a8d7bcfbcc006b91446beda08589f17
Size: 475.57 kB
Asianux Server 4 for x86_64
- libvirt-0.10.2-29.5.0.1.AXS4.x86_64.rpm
MD5: 59ea3f16b3396930a88559c5445e66c1
SHA-256: e36835d97c549ae1c52ff296d5ea9c028390a7bcdae0dd41939c3814e967545c
Size: 2.36 MB - libvirt-client-0.10.2-29.5.0.1.AXS4.x86_64.rpm
MD5: 23b526685fdd6749c1ee70345e751236
SHA-256: 90e0f2a5d0cb4ae925c6c8542ac8f43c9e2b42ba7d3ca14bffac52153d877a3e
Size: 4.03 MB - libvirt-devel-0.10.2-29.5.0.1.AXS4.x86_64.rpm
MD5: 7d812b8c34fd8ebf0107d87bbce10178
SHA-256: f4ccb96de08c0bbcf0bc043e7828fb0682fe948dc48a7ade87d6898a15d153a0
Size: 409.80 kB - libvirt-python-0.10.2-29.5.0.1.AXS4.x86_64.rpm
MD5: 94777be7eb04f9846776ef8c51ea4ce6
SHA-256: b827ac832d4ac24547f4ec4a22250aaa1850aadc5cf9135bdf5230181bd89f17
Size: 475.63 kB - libvirt-client-0.10.2-29.5.0.1.AXS4.i686.rpm
MD5: 78e0cfe9716aa8bcd763908097466acf
SHA-256: 655e1f711c4dee56a192b15bfe9463bbc85ce1de3d69cdab283b1c93e18b48f5
Size: 4.02 MB - libvirt-devel-0.10.2-29.5.0.1.AXS4.i686.rpm
MD5: 1442934d8a63082e5af923a247c3e59b
SHA-256: 0513bc5accd63569d013367766ecca3c8a757403d1fd7041275097137d029a23
Size: 410.18 kB