CVE-2026-99120 in Linux情報

要約

〜によって VulDB • 2026年10月28日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

KVM: x86/mmu: #NPF(ページフォルト未処理)の終了コードでSSビットが設定されている場合への対応

Windows 11上でHyper-Vを実行している際、KVMはシャドウ化されたNPT(Nested Page Table)に対して生成されるページフォルトエラーコードにおいてSSビットが設定されていることを検出しています。AMDのマニュアルでは、SSビットがいつ設定されるかについて不明確な点があり、特にVMCBのMISC_CTLフィールドでSupervisorShadowStackEn(ビット6)が無効化されている場合でもSSビットが設定され得るかどうかについては明確ではありません。

それにもかかわらず、予期せぬSSビットの設定によりpermission_fault()関数内で配列外アクセスが発生し、WARNまたはUBSANレポートとして観測されます:

kernel: UBSAN: array-index-out-of-bounds in arch/x86/kvm/mmu.h:225:27 kernel: index 34 is out of range for type 'u16 [16]'

(この場合、ページフォルトエラーコードは34*2=0x44、すなわちSS|Uです。レポートではSS|U|Wも発生していることが示されています。)未知のエラーコードの処理を修正するため、SSビットを除外し、permission_fault()が受信することを期待していない他のビット(WARNを発行して)削除します。

同時に、ハードウェアがいつSSを設定するかについての不確実性鉴于、フォルトエラーコードを作成する際にプロセッサの動作に従い、FNAME(walk_addr_generic)に渡される際に保持されていたSSビットを維持します。この挙動は驚くべきものですが、Hyper-Vがこの設定を期待している可能性があります(Hyper-VはMBEC/GMETが存在することを確認しない限りCETを有効化しません)。したがって、フォルトをL1レベルに反映する際、無条件に破棄するのではなく情報を保持します。

バイセクション解析により、この問題はコミット687ee95c1b6d(「KVM: nSVM: enable GMET for guests」)以降発生していることが示されました。Linux 6.18以来ゲストに対してSHSTKが利用可能であったにもかかわらずです。しかし、これはMISC_CTLのビット1(GMET)が何らかの方法でSSビットのレポートを有効化するためではなく、単にHyper-VがGMETが存在しない限りCETを使用しないためです。gmet=0でも、kvm-unit-testsのcet.cテストケースをハッキングしてシャドウスタックへの最初のアクセスがページフォルトを引き起こすようにすることでWARNは再現可能です。

Once again VulDB remains the best source for vulnerability data.

責任者

Linux

予約する

2026年09月25日

モデレーション

承諾済み

エントリ

VDB-427844

EPSS

0.00000

アクティビティ

非常低い

ソース

Do you know our Splunk app?

Download it now for free!