POP SS デバッグ例外 - CVE-2018-8897 [中程度] & CVE-2018-1087 [重要]
Red Hat では、POP SS と MOV SS 命令の後でトリガーされる例外を Linux カーネルが処理する方法において不具合があることを認識しています。これらの問題は、パッチ未適用のシステムでサービス拒否につながる可能性があります。
これらの命令は、次の命令の後の命令の境界まで、割り込み、データブレークポイント、シングルステップトラップの例外の配信を保留します。Linux カーネーションと KVM テクノロジーでは、個別の問題が特定されています。
背景情報
最近のプロセッサーではデバッグインフラストラクチャーが提供されており、システム設計者やアプリケーション開発者がソフトウェアのデバッグにこれを使用しています。これにはデバッグレジスターのセット (DR0...DR7) や他のマシン固有レジスター (MSR) などがあります。ユーザーはこれらのレジスターが、メモリーアクセス (読み取りまたは書き込み)、命令実行および I/O ポートアクセスなどのイベントをモニターするように設定できます。プログラムの実行中にこのようなイベントが発生すると、プロセッサーはデバッグ例外 (#DB) を発生させて、実行制御をデバッグソフトウェア (例: gdb) に移します。これによりデバッグ例外がキャッシュされ、開発者はプログラムの実行状態を調べることができるようになります。たとえば、アドレス「0x4007c7」における読み取り/書き込みメモリーのアクセスをモニターするには、ユーザーはアドレス「0x4007c7」をデバッグレジスター DR0...DR3 のいずれかに保存し、プログラム実行中にメモリー「0x4007c7」の場所にアクセスがあった場合は、プロセッサーが #DB を発生させます。このようなデバッグレジスターのアドレス指定は、ブレークポイントと呼ばれます。
Mov %DR0, 0x4007c7
通常、例外は命令の境界で発生します。例外を発生させる命令の前のすべての命令は完了することができ、例外を発生させている命令が保留されるので、例外が処理されれば、その命令は実行が再開されます。命令がタスクスイッチやスタックスイッチを発生させるというインスタンスでは、このような例外は命令の後で発生します。特に MOV SS や POP SS の場合、例外を引き起こしている命令は完了することができます。
謝辞
Red Hat は Everdox Tech LLC の Nick Peterson 氏が CVE-2018-8897を報告してくださったことに感謝いたします。また、
Andy Lutomirski 氏が CVE-2018-1087 を報告してくださったことに感謝いたします。
影響を受ける製品
Red Hat Product セキュリティーチームは、カーネルの問題 (CVE-2018-8897) の影響度を中程度と評価しています
Red Hat Product セキュリティーチームは、KVM の問題 (CVE-2018-1087) の影響度を重要と評価しています
以下の Red Hat 製品のバージョンが影響を受けます。
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
- Red Hat Enterprise Linux Atomic Host
- Red Hat Enterprise MRG 2
- Red Hat Virtualization Hypervisor 4
- Red Hat Enterprise Virtualization Hypervisor 3
攻撃の詳細
よくあるスタックスイッチでは、2 つの操作があります。1 つ目は、スタックセグメントセレクター (SS) レジスターの読み込みで、もう 1 つはスタックポインターレジスター (RSP) を以下のように設定することです。
Mov SS, [RAX]
Mov RSP, RBP
上記のように MOV SS (または POP SS) 命令を介してスタックをスイッチした場合には、プロセッサーはすべての割り込みとデバッグ例外 (#DB) の配信を保留します。これは、セグメントセレクター (SS) レジスターが読み込まれた後 (ただし、スタックポインター (RSP) レジスターが適切に配置される前) に例外が発生すると、割り込みハンドラーは無効なスタック状態を発見するためです。つまり、スタックスイッチが実行された後の最初の命令の後に、プロセッサーは保留となっていた割り込みやデバッグ例外を配信します。
ここで、ブレークポイントが (上記の [RAX]) メモリーの場所に設定されており、スタックスイッチ中に Mov SS 命令によってアクセスされたとします。このブレークポイントは、スタックスイッチの後にブレークポイント例外 (#BP) を生成します。スタックスイッチ後の最初の命令が、SYSCALL、SYSENTER、INT3 などの現在の権限レベル (CPL 3) を変更するものであった場合、上記の遅延されたブレークポイント例外 (#BP) はカーネルスペースに配信され、権限のエスカレートが可能になります。
Linux カーネルの KVM ハイパーバイザーでは、プロセッサーはスタックスイッチの操作中ではなく、スタックスイッチの実行後の最初の命令後に割り込みや例外を配信します。権限のない KVM ゲストユーザーは、この不具合を利用してゲストをクラッシュさせたり、ゲスト内で権限をエスカレートすることが可能になります。対処方法
影響のあるバージョンの Red Hat 製品をご使用のお客様は、エラータが入手可能になり次第、該当製品を更新することが強く推奨されます。早急に適切な更新を適用してください。
影響を受ける製品の更新
製品名 | パッケージ | アドバイザリー/更新 |
Red Hat Enterprise Linux 7 (z-stream) | kernel | RHSA-2018: 1318 |
Red Hat Enterprise Linux 7 | kernel-rt | RHSA-2018: 1355 |
Red Hat Enterprise Linux 7.4 Extended Update Support** | kernel | RHSA-2018: 1345 |
Red Hat Enterprise Linux 7.3 Extended Update Support** | kernel | RHSA-2018: 1348 |
Red Hat Enterprise Linux 7.2 Update Services for SAP Solutions, & Advanced Update Support***,**** | kernel | RHSA-2018: 1347 |
Red Hat Enterprise Linux 6 (z-stream) | kernel | RHSA-2018: 1319 |
Red Hat Enterprise Linux 6.7 Extended Update Support** | kernel | RHSA-2018: 1346 |
Red Hat Enterprise Linux 6.6 Advanced Update Support***,**** | kernel | RHSA-2018: 1351 |
Red Hat Enterprise Linux 6.5 Advanced Update Support*** | kernel | RHSA-2018: 1350 |
Red Hat Enterprise Linux 6.4 Advanced Update Support*** | kernel | RHSA-2018: 1349 |
Red Hat Enterprise Linux 5 Extended Lifecycle Support* | kernel | RHSA-2018: 1353 |
Red Hat Enterprise Linux 5.9 Advanced Update Support*** | kernel | RHSA-2018: 1352 |
RHEL Atomic Host | kernel | 保留中 |
Red Hat Enterprise MRG 2 | kernel-rt | RHSA-2018: 1354 |
Red Hat Virtualization 4 | redhat-virtualization-host | RHSA-2018: 1710 |
Red Hat Enterprise Virtualization 3 Extended Lifecycle Support* | rhev-hypervisor7 | RHSA-2018: 1711 |
*このパッチにアクセスするには、アクティブな ELS サブスクリプションが必要です。ご使用のアカウントにアクティブな ELS サブスクリプションがない場合は、Red Hat 営業部門または営業の担当者にお問い合わせください。
**このパッチにアクセスするには、アクティブな EUS サブスクリプションが必要です。お持ちのアカウントに有効な EUS サブスクリプションがない場合は、Red Hat 営業部門または営業の担当者にお問い合わせください。
Red Hat Enterprise Linux Extended Update Support サブスクリプションとは何ですか?
***RHEL AUS のパッチを入手するには、有効な AUS サブスクリプションが必要です。
What is Advanced mission critical Update Support (AUS)?
**RHEL TUS のパッチを入手するには、アクティブな TUS サブスクリプションが必要です。
Red Hat の Linux コンテナーは、カーネル問題による直接の影響は受けませんが、Red Hat では最新版のコンテナーイメージを使用することを推奨しています。Red Hat Container Catalogue に含まれる Container Health Index を使用すると、お使いのコンテナーのセキュリティー状況を確認できます。使用中のコンテナーを保護するには、これらの攻撃に対してコンテナーホストが更新されていることを確認してください。Red Hat では、このユースケース用の更新済み Atomic Host をリリースしています。
軽減策
ベンダーのソフトウェア更新の適用以外には、既知の軽減策はありません。
Comments