syzbot


UBSAN: shift-out-of-bounds in scalar32_min_max_arsh

Status: fixed on 2024/01/20 11:41
Bug presence: origin:upstream
[Documentation on labels]
Reported-by: syzbot+397b2bcc19cc8c232f89@syzkaller.appspotmail.com
Fix commit: 803fb6109fcf bpf: fix precision backtracking instruction iteration
First crash: 338d, last: 338d
Fix bisection: fixed by (bisect log) :
commit 803fb6109fcfa939d78907ad34161a720b37848d
Author: Andrii Nakryiko <andrii@kernel.org>
Date: Fri Nov 10 00:26:37 2023 +0000

  bpf: fix precision backtracking instruction iteration

  
Bug presence (1)
Date Name Commit Repro Result
2023/12/21 upstream (ToT) a4aebe936554 C [report] UBSAN: shift-out-of-bounds in scalar32_min_max_arsh
Similar bugs (3)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
android-5-15 UBSAN: shift-out-of-bounds in scalar32_min_max_arsh origin:upstream missing-backport C 2 29d 341d 0/2 upstream: reported C repro on 2023/12/17 16:19
linux-5.15 UBSAN: shift-out-of-bounds in scalar32_min_max_arsh origin:upstream missing-backport C inconclusive 1 50d 341d 0/3 upstream: reported C repro on 2023/12/17 16:29
android-6-1 UBSAN: shift-out-of-bounds in scalar32_min_max_arsh origin:upstream missing-backport C done done 2 250d 341d 0/2 auto-obsoleted due to no activity on 2024/06/25 14:59

Sample crash report:
================================================================================
UBSAN: shift-out-of-bounds in kernel/bpf/verifier.c:9211:63
shift exponent 1073741824 is too large for 32-bit type 's32' (aka 'int')
CPU: 0 PID: 3544 Comm: syz-executor176 Not tainted 6.1.69-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/17/2023
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106
 ubsan_epilogue lib/ubsan.c:151 [inline]
 __ubsan_handle_shift_out_of_bounds+0x3bf/0x420 lib/ubsan.c:321
 scalar32_min_max_arsh+0x564/0x5f0 kernel/bpf/verifier.c:9211
 adjust_scalar_min_max_vals kernel/bpf/verifier.c:9399 [inline]
 adjust_reg_min_max_vals+0x3d1d/0x6360 kernel/bpf/verifier.c:9500
 check_alu_op kernel/bpf/verifier.c:9671 [inline]
 do_check+0x9dd3/0xf550 kernel/bpf/verifier.c:12526
 do_check_common+0x8cb/0x1110 kernel/bpf/verifier.c:14940
 do_check_main kernel/bpf/verifier.c:15003 [inline]
 bpf_check+0x66ca/0x16230 kernel/bpf/verifier.c:15577
 bpf_prog_load+0x12df/0x1bb0 kernel/bpf/syscall.c:2603
 __sys_bpf+0x382/0x6c0 kernel/bpf/syscall.c:4968
 __do_sys_bpf kernel/bpf/syscall.c:5072 [inline]
 __se_sys_bpf kernel/bpf/syscall.c:5070 [inline]
 __x64_sys_bpf+0x78/0x90 kernel/bpf/syscall.c:5070
 do_syscall_x64 arch/x86/entry/common.c:51 [inline]
 do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:81
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f2c376d43e9
Code: 48 83 c4 28 c3 e8 37 17 00 00 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffc08c065b8 EFLAGS: 00000246 ORIG_RAX: 0000000000000141
RAX: ffffffffffffffda RBX: 00007ffc08c06798 RCX: 00007f2c376d43e9
RDX: 0000000000000048 RSI: 00000000200054c0 RDI: 0000000000000005
RBP: 00007f2c37747610 R08: 0000000000000000 R09: 0000000000000000
R10: 00000000ffffffff R11: 0000000000000246 R12: 0000000000000001
R13: 00007ffc08c06788 R14: 0000000000000001 R15: 0000000000000001
 </TASK>
================================================================================

Crashes (1):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2023/12/21 06:26 linux-6.1.y 4aa6747d9352 de21eb89 .config console log report syz C [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-perf UBSAN: shift-out-of-bounds in scalar32_min_max_arsh
* Struck through repros no longer work on HEAD.