UBUNTU-CVE-2023-52603
In the Linux kernel, the following vulnerability has been resolved: UBSAN: array-index-out-of-bounds in dtSplitRoot Syzkaller reported the following issue: oop0: detected capacity change from 0 to 32768 UBSAN: array-index-out-of-bounds in fs/jfs/jfs_dtree.c:1971:9 index -2 is out of range for type 'struct dtslot [128]' CPU: 0 PID: 3613 Comm: syz-executor270 Not tainted 6.0.0-syzkaller-09423-g493ffd6605b2 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022 Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1b1/0x28e lib/dump_stack.c:106 ubsan_epilogue lib/ubsan.c:151 [inline] __ubsan_handle_out_of_bounds+0xdb/0x130 lib/ubsan.c:283 dtSplitRoot+0x8d8/0x1900 fs/jfs/jfs_dtree.c:1971 dtSplitUp fs/jfs/jfs_dtree.c:985 [inline] dtInsert+0x1189/0x6b80 fs/jfs/jfs_dtree.c:863 jfs_mkdir+0x757/0xb00 fs/jfs/namei.c:270 vfs_mkdir+0x3b3/0x590 fs/namei.c:4013 do_mkdirat+0x279/0x550 fs/namei.c:4038 __do_sys_mkdirat fs/namei.c:4053 [inline] __se_sys_mkdirat fs/namei.c:4051 [inline] __x64_sys_mkdirat+0x85/0x90 fs/namei.c:4051 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd RIP: 0033:0x7fcdc0113fd9 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 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 c0 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffeb8bc67d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000102 RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fcdc0113fd9 RDX: 0000000000000000 RSI: 0000000020000340 RDI: 0000000000000003 RBP: 00007fcdc00d37a0 R08: 0000000000000000 R09: 00007fcdc00d37a0 R10: 00005555559a72c0 R11: 0000000000000246 R12: 00000000f8008000 R13: 0000000000000000 R14: 00083878000000f8 R15: 0000000000000000 </TASK> The issue is caused when the value of fsi becomes less than -1. The check to break the loop when fsi value becomes -1 is present but syzbot was able to produce value less than -1 which cause the error. This patch simply add the change for the values less than 0. The patch is tested via syzbot.
02 / AFFECTED SOFTWARE
Affected packages
50 explicit affected versions
6 explicit affected versions
12 explicit affected versions
13 explicit affected versions
6 explicit affected versions
49 explicit affected versions
35 explicit affected versions
56 explicit affected versions
46 explicit affected versions
35 explicit affected versions
5 explicit affected versions
42 explicit affected versions
191 explicit affected versions
7 explicit affected versions
43 explicit affected versions
83 explicit affected versions
7 explicit affected versions
59 explicit affected versions
35 explicit affected versions
2 explicit affected versions
13 explicit affected versions
18 explicit affected versions
4 explicit affected versions
90 explicit affected versions
29 explicit affected versions
85 explicit affected versions
13 explicit affected versions
4 explicit affected versions
23 explicit affected versions
95 explicit affected versions
1 explicit affected versions
21 explicit affected versions
9 explicit affected versions
16 explicit affected versions
10 explicit affected versions
40 explicit affected versions
7 explicit affected versions
12 explicit affected versions
33 explicit affected versions
12 explicit affected versions
8 explicit affected versions
7 explicit affected versions
73 explicit affected versions
12 explicit affected versions
88 explicit affected versions
96 explicit affected versions
12 explicit affected versions
84 explicit affected versions
8 explicit affected versions
10 explicit affected versions
161 explicit affected versions
37 explicit affected versions
94 explicit affected versions
7 explicit affected versions
10 explicit affected versions
22 explicit affected versions
1 explicit affected versions
26 explicit affected versions
26 explicit affected versions
13 explicit affected versions
4 explicit affected versions
1 explicit affected versions
29 explicit affected versions
77 explicit affected versions
13 explicit affected versions
46 explicit affected versions
1 explicit affected versions
72 explicit affected versions
44 explicit affected versions
88 explicit affected versions
6 explicit affected versions
33 explicit affected versions
23 explicit affected versions
10 explicit affected versions
88 explicit affected versions
11 explicit affected versions
12 explicit affected versions
111 explicit affected versions
7 explicit affected versions
12 explicit affected versions
87 explicit affected versions
2 explicit affected versions
35 explicit affected versions
27 explicit affected versions
104 explicit affected versions
43 explicit affected versions
124 explicit affected versions
10 explicit affected versions
26 explicit affected versions
22 explicit affected versions
1 explicit affected versions
13 explicit affected versions
111 explicit affected versions
46 explicit affected versions
16 explicit affected versions
46 explicit affected versions
36 explicit affected versions
3 explicit affected versions
65 explicit affected versions
1 explicit affected versions
2 explicit affected versions
53 explicit affected versions
51 explicit affected versions
64 explicit affected versions
1 explicit affected versions
12 explicit affected versions
33 explicit affected versions
25 explicit affected versions
19 explicit affected versions
1 explicit affected versions
1 explicit affected versions
68 explicit affected versions
8 explicit affected versions
7 explicit affected versions
5 explicit affected versions
8 explicit affected versions
1 explicit affected versions
10 explicit affected versions
7 explicit affected versions
76 explicit affected versions
13 explicit affected versions
40 explicit affected versions
7 explicit affected versions
66 explicit affected versions
38 explicit affected versions
10 explicit affected versions
11 explicit affected versions
12 explicit affected versions
75 explicit affected versions
44 explicit affected versions
16 explicit affected versions
3 explicit affected versions
13 explicit affected versions
26 explicit affected versions
32 explicit affected versions
37 explicit affected versions
8 explicit affected versions
38 explicit affected versions
36 explicit affected versions
9 explicit affected versions
35 explicit affected versions
11 explicit affected versions
138 explicit affected versions
43 explicit affected versions
8 explicit affected versions
7 explicit affected versions
17 explicit affected versions
71 explicit affected versions
47 explicit affected versions
115 explicit affected versions
94 explicit affected versions
4 explicit affected versions
1 explicit affected versions
1 explicit affected versions
41 explicit affected versions
87 explicit affected versions
8 explicit affected versions
43 explicit affected versions
41 explicit affected versions
118 explicit affected versions
138 explicit affected versions
10 explicit affected versions
8 explicit affected versions
14 explicit affected versions
76 explicit affected versions
4 explicit affected versions
65 explicit affected versions
4 explicit affected versions
1 explicit affected versions
41 explicit affected versions
5 explicit affected versions
28 explicit affected versions
40 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
In the Linux kernel, the following vulnerability has been resolved: UBSAN: array-index-out-of-bounds in dtSplitRoot Syzkaller reported the following issue: oop0: detected capacity change from 0 to 32768 UBSAN: array-index-out-of-bounds in fs/jfs/jfs_dtree.c:1971:9 index -2 is out of range for type 'struct dtslot [128]' CPU: 0 PID: 3613 Comm: syz-executor270 Not tainted 6.0.0-syzkaller-09423-g493ffd6605b2 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022 Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1b1/0x28e lib/dump_stack.c:106 ubsan_epilogue lib/ubsan.c:151 [inline] __ubsan_handle_out_of_bounds+0xdb/0x130 lib/ubsan.c:283 dtSplitRoot+0x8d8/0x1900 fs/jfs/jfs_dtree.c:1971 dtSplitUp fs/jfs/jfs_dtree.c:985 [inline] dtInsert+0x1189/0x6b80 fs/jfs/jfs_dtree.c:863 jfs_mkdir+0x757/0xb00 fs/jfs/namei.c:270 vfs_mkdir+0x3b3/0x590 fs/namei.c:4013 do_mkdirat+0x279/0x550 fs/namei.c:4038 __do_sys_mkdirat fs/namei.c:4053 [inline] __se_sys_mkdirat fs/namei.c:4051 [inline] __x64_sys_mkdirat+0x85/0x90 fs/namei.c:4051 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd RIP: 0033:0x7fcdc0113fd9 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 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 c0 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffeb8bc67d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000102 RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fcdc0113fd9 RDX: 0000000000000000 RSI: 0000000020000340 RDI: 0000000000000003 RBP: 00007fcdc00d37a0 R08: 0000000000000000 R09: 00007fcdc00d37a0 R10: 00005555559a72c0 R11: 0000000000000246 R12: 00000000f8008000 R13: 0000000000000000 R14: 00083878000000f8 R15: 0000000000000000 </TASK> The issue is caused when the value of fsi becomes less than -1. The check to break the loop when fsi value becomes -1 is present but syzbot was able to produce value less than -1 which cause the error. This patch simply add the change for the values less than 0. The patch is tested via syzbot.
05 / REFERENCES
Further evidence
- https://git.kernel.org/linus/27e56f59bab5ddafbcfe69ad7a4a6ea1279c1b16
- https://git.kernel.org/stable/c/27e56f59bab5ddafbcfe69ad7a4a6ea1279c1b16
- https://git.kernel.org/stable/c/6e2902ecc77e9760a9fc447f56d598383e2372d2
- https://git.kernel.org/stable/c/7aa33854477d9c346f5560a1a1fcb3fe7783e2a8
- https://git.kernel.org/stable/c/e30b52a2ea3d1e0aaee68096957cf90a2f4ec5af
- https://git.kernel.org/stable/c/e4cbc857d75d4e22a1f75446e7480b1f305d8d60
- https://git.kernel.org/stable/c/e4ce01c25ccbea02a09a5291c21749b1fc358e39
- https://git.kernel.org/stable/c/edff092a59260bf0b0a2eba219cb3da6372c2f9f
- https://git.kernel.org/stable/c/fd3486a893778770557649fe28afa5e463d4ed07
- https://ubuntu.com/security/CVE-2023-52603
- https://ubuntu.com/security/notices/USN-6688-1
- https://ubuntu.com/security/notices/USN-6739-1
- https://ubuntu.com/security/notices/USN-6740-1
- https://ubuntu.com/security/notices/USN-6741-1
- https://ubuntu.com/security/notices/USN-6742-1
- https://ubuntu.com/security/notices/USN-6742-2
- https://ubuntu.com/security/notices/USN-6743-1
- https://ubuntu.com/security/notices/USN-6743-2
- https://ubuntu.com/security/notices/USN-6743-3
- https://www.cve.org/CVERecord?id=CVE-2023-52603