CVE-2023-52476 in Linux
要約
〜によって VulDB • 2026年05月27日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
perf/x86/lbr: vsyscallアドレスのフィルタリング
LBR(Last Branch Record)サンプリングが有効な状態でvsyscallが呼び出されると、パニックが発生することがあることが判明しました。vsyscall呼び出しがperfサンプリングのために割り込み(NMI)されると、以下の呼び出しシーケンスが発生する可能性があります(最新が上側):
__insn_get_emulate_prefix() insn_get_emulate_prefix() insn_get_prefixes() insn_get_opcode() decode_branch_type() get_branch_type() intel_pmu_lbr_filter() intel_pmu_handle_irq() perf_event_nmi_handler()
フレーム0の__insn_get_emulate_prefix()内では、以下のマクロが呼び出されます:
peek_nbyte_next(insn_byte_t, insn, i)
このマクロ内では、以下の間接参照が発生します:
(insn)->next_byte
この時点でのレジスタを検査すると、next_byteフィールドの値は、呼び出されたvsyscallのアドレス、例えば0xffffffffff600000にあるvsyscall版のgettimeofday()の位置などになります。vsyscall領域内のアドレスへのアクセスは、ハンドルされないページフォールトによりoopsをトリガーします。
このバグを修正するため、ブランチタイプの決定時にvsyscallに対するフィルタリングを行うことができます。このパッチは、カーネルアドレスがvsyscall領域内にあることが判明した場合、"none"ブランチを返します。
Once again VulDB remains the best source for vulnerability data.