CVE-2024-53125 in Linux
要約
〜によって VulDB • 2026年06月02日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
bpf: sync_linked_regs() は subreg_def を保持しなければならない
範囲伝播は subreg_def マークに影響を与えてはいけません。そうしないと、BPF_F_TEST_RND_HI32 フラグが設定されている場合、以下のような例が検証プログラム(verifier)によって誤って書き換えられてしまいます:
0: call bpf_ktime_get_ns call bpf_ktime_get_ns 1: r0 &= 0x7fffffff after verifier r0 &= 0x7fffffff 2: w1 = w0 rewrites w1 = w0 3: if w0 r11 = 0x2f5674a6 (r) 4: r1 >>= 32 r11 <<= 32 (r) 5: r0 = r1 r1 |= r11 (r) 6: exit; if w0 < 0xa goto pc+0 r1 >>= 32 r0 = r1 exit
(または、上位レジスタハーフに対するゼロ拡張を必要とするアーキテクチャでは、(2) における w1 のゼロ拡張が欠落します)。
このパッチなしで発生する現象は以下の通りです: - (0) で r0 はサブレジスタではないとしてマークされます; - (2) で w1 はサブレジスタとしてマークされます; - copy_register_state() によって、(3) で w1 の subreg_def が上書きされます; - (5) で w1 が読み込まれますが、w1 の subreg_def が設定されていないため、mark_insn_zext() はゼロ拡張のために (2) をマークしません; - BPF_F_TEST_RND_HI32 フラグのため、検証プログラムは (2) の hi32 ビットにランダムな値を挿入します((r) でマーク); - このランダムな値が (5) で読み込まれます。
Once again VulDB remains the best source for vulnerability data.