CVE Database›Document archive›CVE-2022-50497

CVE-2022-50497

kernel: binfmt_misc: fix shift-out-of-bounds in check_special_flags

Loading…

Severity

Low

Red Hat Product Security

2.3

CVSS 3.1

Review impact separately from score.

Published · October 4, 2025

Updated · June 30, 2026

Description

In the Linux kernel, the following vulnerability has been resolved:

binfmt_misc: fix shift-out-of-bounds in check_special_flags

UBSAN reported a shift-out-of-bounds warning:

left shift of 1 by 31 places cannot be represented in type 'int' Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x8d/0xcf lib/dump_stack.c:106 ubsan_epilogue+0xa/0x44 lib/ubsan.c:151 __ubsan_handle_shift_out_of_bounds+0x1e7/0x208 lib/ubsan.c:322 check_special_flags fs/binfmt_misc.c:241 [inline] create_entry fs/binfmt_misc.c:456 [inline] bm_register_write+0x9d3/0xa20 fs/binfmt_misc.c:654 vfs_write+0x11e/0x580 fs/read_write.c:582 ksys_write+0xcf/0x120 fs/read_write.c:637 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x34/0x80 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd RIP: 0033:0x4194e1

Since the type of Node's flags is unsigned long, we should define these macros with same type too.

Statement

The issue was a type mismatch in binfmt_misc flag macros (1 << 31 etc.) causing shift-out-of-bounds on 32-bit and potential misinterpretation of flags. The fix switches the macros to 1UL << …, matching the unsigned long flag field and eliminating UBSAN warnings. Exploitation requires the ability to register binfmt_misc entries (root/CAP_SYS_ADMIN), so there is no realistic unprivileged privilege-escalation path here.

CVSS score applicability

The CVSS score(s) listed for this vulnerability do not reflect the associated product's status, and are included for informational purposes to better understand the severity of this vulnerability.

Mitigation

No mitigation is specified in collected source.

CVSS / CWE

CVSS 3.1 · 2.3
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:L/A:N

CWE-681 · Incorrect Conversion between Numeric Types