VHOST-NET におけるゲストからホストへのエスケープ - カーネルの脆弱性 - CVE-2019-14835

Public Date: September 18, 2019, 14:38
更新 October 2, 2019, 10:13 - Chinese, Simplified 英語 French Korean
Resolved 状態
Important Impact

Insights vulnerability analysis

View exposed systems

概要 

Linux カーネルのネットワーク仮想化機能で、仮想マシンゲストのライブマイグレーション中に悪用される可能性のあるバッファーオーバーフローの脆弱性が発見されました。権限のあるゲストユーザーは、ライブマイグレーション中に無効な長さの記述子をホストに渡し、ホストで権限を昇格する可能性があります。

技術的な詳細と背景 

この問題には、セキュリティー上の影響度が「重要な影響 」の CVE-2019-14835 が割り当てられました。

この不具合は、ゲストのライブマイグレーション中にのみ悪用される可能性があります。パッチおよび軽減策の説明は次のとおりです。


CVE-2019-14835 - カーネル: vhost-net: マイグレーション中のゲストからホストへのカーネルエスケープ

Linux カーネルのネットワーク仮想化機能で、仮想マシンゲストのライブマイグレーション中に悪用される可能性のあるバッファーオーバーフローの脆弱性が発見されました。権限を持つゲストユーザーは、ライブマイグレーション中に無効な長さの記述子をホストに渡し、ホストで権限を昇格する可能性があります。この不具合は、ゲストのライブマイグレーションが設定されていない単一ホストのシステムには影響しないと考えられます。

謝辞

Red Hat は Tencent Blade Team の Peter Pi 氏に感謝いたします。

参考情報 

https://www.openwall.com/lists/oss-security/2019/09/17/1

https://www.redhat.com/en/blog/introduction-virtio-networking-and-vhost-net

https://www.redhat.com/en/blog/deep-dive-virtio-networking-and-vhost-net 

https://bugzilla.redhat.com/show_bug.cgi?id=1750727

影響を受ける製品

Red Hat Product Security チームは、本件のセキュリティー上の影響度を重要な影響 と評価しています。

以下の Red Hat 製品のバージョンが影響を受けます。

  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 8
  • Red Hat Virtualization 
  • Red Hat OpenStack Platform (イメージ同梱カーネル) 
  • Container-Native Virtualization (CNV)

Red Hat の Linux コンテナーは、仮想化の不具合の影響を直接受けませんが、そのセキュリティーはホストカーネル環境の整合性に依存します。Red Hat は、最新バージョンのコンテナーイメージを使用することを推奨します。Red Hat Container Catalog の一部である Container Health Index を使用すると、常に Red Hat コンテナーのセキュリティー状態を確認できます。使用中のコンテナーのプライバシーを保護するには、これらの攻撃に対してコンテナーホスト (Red Hat Enterprise Linux、Red Hat CoreOS、Atomic Host など) を更新する必要があります。Red Hat は、このユースケース向けに更新された Atomic Host をリリースしています。

脆弱性の診断

以下の診断スクリプトを使用して、現在ご使用のシステムにこの不具合による脆弱性が存在するかどうかを判断します。正規のスクリプトであることを確認する場合は GPG 分離署名 もダウンロードします。

システムの脆弱性の判断

現在のバージョン: 1.0


対処方法

影響のあるバージョンの Red Hat 製品をご使用のお客様は、エラータが入手可能になり次第、該当製品を更新することが強く推奨されます。適切な更新を早急に適用することが求められます。

注記

低レベルで悪用が行われるため、現時点ではシステム上で悪用が行われたことを検出する、信頼できる方法はありません。

Red Hat Product Security は、マルチテナントワークロードを中心に、お客様のシステムの脅威プロファイルを確認することを強く推奨します。ゲストのマイグレーション機能が必要な優先度の高いシステムに対し、パッチの適用を検討してください。

Red Hat Enterprise Linux 7 以上のサポートされるバージョンを実行しているお客様は、kptach を利用できます。kpatch を取得するには、サポートケースを作成してください。

kpatch に関する詳細は、「Is live kernel patching (kpatch) supported in RHEL 7 and beyond?」を参照してください。

影響を受ける製品の更新

製品名パッケージアドバイザリー/更新
Red Hat Enterprise Linux 8 (z-stream)kernelRHSA-2019:2827
Red Hat Enterprise Linux 8kernel-rtRHSA-2019:2828
Red Hat Enterprise Linux 7 (z-stream)kernelRHSA-2019:2829
Red Hat Enterprise Linux 7kernel-rtRHSA-2019:2830
Red Hat Enterprise Linux 7kpatch-patchRHSA-2019:2854
Red Hat Enterprise Linux 6 (z-stream)kernelRHSA-2019:2863
Red Hat Virtualization 4.3redhat-virtualization-hostRHSA-2019:2889
Red Hat Virtualization 4.2 EUSredhat-virtualization-host

保留中

軽減策

オプション #1 vhost-net の無効化

Vhost-net 機能をゲストごとに無効にすることができます。「VHOST-NET の無効化」を参照してください。

この代わりに、通常のブラックリスト指定手順を使用して、影響を受けるコードが含まれる「vhost_net」というカーネルモジュールをブラックリストに指定することができます。手順の詳細は、「自動的にロードしないようにカーネルモジュールをブラックリストに登録する」を参照してください。 

変更を反映するには、vhost-net 機能を使用しているゲストを再起動する必要があります。

オプション #2 ゲストのライブマイグレーションの無効化

この問題は、ライブマイグレーションの実行中にゲストからのみ悪用が可能です。自動マイグレーションを完全に無効にしたり、ゲストから他のホストへ手動でマイグレーションを行わないようにすることが、悪用を防ぐ効果的な手段となります。

CNV - ライブマイグレーションサポートの無効化

kubevirt ネームスペースにある kubevirt-config 設定ファイルの data: feature-gates: から "LiveMigration" フィールドを削除して、ライブマイグレーション機能を無効にします。

手順
kubevirt-config 設定ファイルを編集し、`feature-gates` 行から LiveMigration を削除します。

$ oc edit configmap kubevirt-config -n kubevirt
...
data:
  feature-gates: "LiveMigration"
上記の行から “LiveMigration” を削除します。

変更を反映するには、virt-api および virt-controller Pod を再起動する必要があります。

$ oc delete pod virt-api -n kube-system
$ oc delete pod virt-controller -n kube-system

Red Hat Virtualization - 自動マイグレーションの無効化

マイグレーションは、クラスターレベルまたはゲスト単位のいずれかで無効にできます。 通常 Red Hat Virtualization は、負荷の測定値、互換性、耐障害性ポリシー、および可用性ポリシーに応じて、クラスター内で自動的にゲストを他のホストに移行します。 メンテナンス中にクラスター内のホストはメンテナンスモードになるため、ゲストがメンテナンス中に移行されることもあります。

自動マイグレーションポリシーは、クラスターレベルまたはホストごとの設定で制御することができます。

  • クラスターで Resilience Policy (耐障害性ポリシー) を「Do Not Migrate Virtual Machines」(仮想マシンを移行しない) に設定すると、そのクラスター内の仮想マシンは移行されません。 詳細は、「Administration Guide: Migration Policy Settings」を参照してください。
  • 個々のゲストを特定のホストに固定したり、Migration Options (マイグレーションオプション) を「Do not allow migration」(マイグレーションを許可しない) に設定すると、個々のゲストのマイグレーションは行われません。 詳細は「Management Guide: Preventing Automatic Migration of a Virtual Machine」を参照してください。

ホストがメンテナンスモードであるときにゲストが移行されないようにするには、ゲストに「Do not allow migration」(マイグレーションを許可しない) を設定するか、ホストがメンテナンスモードになる前にそのホスト上のすべてのゲストをシャットダウンします。

この問題はリスクベースで軽減することが推奨されます。高レベルのセキュリティーと信頼が求められるシステムから優先に対処し、悪用のリスクを軽減する処置をこれらのシステムに適用するまで、信頼できないシステムから隔離します。

パフォーマンスへの影響

カーネルを修正が含まれるリリースに更新しても、顕著なパフォーマンスへの影響はありません。

vhost-net を無効にする軽減策を使用する場合は、パフォーマンスへの影響が予想されます。実際の影響は、システムのネットワーク負荷によって異なります。

Ansible Playbook

脆弱性のあるカーネルモジュールがロードされないようにする、軽減策 Playbook を使用できます。この Playbook は、システムを再起動してモジュールが確実にアンロードされるようにします。Playbook を使用するには、HOSTS 変数にターゲットシステムのインベントリー名を指定します。以下に例を示します。

ansible-playbook -e HOSTS=myhost1,myhost2 CVE-2019-14835_blacklist_mitigate.yml

分離された GPG 署名 を使用することもできます。


Anbile での軽減策

現在のバージョン: 1.0

Comments