CVE-2024-42240

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
07/08/2024
Last modified:
03/11/2025

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> x86/bhi: Avoid warning in #DB handler due to BHI mitigation<br /> <br /> When BHI mitigation is enabled, if SYSENTER is invoked with the TF flag set<br /> then entry_SYSENTER_compat() uses CLEAR_BRANCH_HISTORY and calls the<br /> clear_bhb_loop() before the TF flag is cleared. This causes the #DB handler<br /> (exc_debug_kernel()) to issue a warning because single-step is used outside the<br /> entry_SYSENTER_compat() function.<br /> <br /> To address this issue, entry_SYSENTER_compat() should use CLEAR_BRANCH_HISTORY<br /> after making sure the TF flag is cleared.<br /> <br /> The problem can be reproduced with the following sequence:<br /> <br /> $ cat sysenter_step.c<br /> int main()<br /> { asm("pushf; pop %ax; bts $8,%ax; push %ax; popf; sysenter"); }<br /> <br /> $ gcc -o sysenter_step sysenter_step.c<br /> <br /> $ ./sysenter_step<br /> Segmentation fault (core dumped)<br /> <br /> The program is expected to crash, and the #DB handler will issue a warning.<br /> <br /> Kernel log:<br /> <br /> WARNING: CPU: 27 PID: 7000 at arch/x86/kernel/traps.c:1009 exc_debug_kernel+0xd2/0x160<br /> ...<br /> RIP: 0010:exc_debug_kernel+0xd2/0x160<br /> ...<br /> Call Trace:<br /> <br /> ? show_regs+0x68/0x80<br /> ? __warn+0x8c/0x140<br /> ? exc_debug_kernel+0xd2/0x160<br /> ? report_bug+0x175/0x1a0<br /> ? handle_bug+0x44/0x90<br /> ? exc_invalid_op+0x1c/0x70<br /> ? asm_exc_invalid_op+0x1f/0x30<br /> ? exc_debug_kernel+0xd2/0x160<br /> exc_debug+0x43/0x50<br /> asm_exc_debug+0x1e/0x40<br /> RIP: 0010:clear_bhb_loop+0x0/0xb0<br /> ...<br /> <br /> <br /> ? entry_SYSENTER_compat_after_hwframe+0x6e/0x8d<br /> <br /> <br /> [ bp: Massage commit message. ]

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.15.163 (including) 6.1.100 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.41 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.9.10 (excluding)