syzbot


KASAN: use-after-free Read in ntfs_attr_find

Status: fixed on 2020/11/27 11:32
Reported-by: syzbot+3d4253be2382d1e54450@syzkaller.appspotmail.com
Fix commit: dff5d7741195 ntfs: add check for mft record size in superblock
First crash: 1307d, last: 1276d
Fix bisection: fixed by (bisect log) :
commit dff5d774119537355b01e5b503d9468228d65044
Author: Rustam Kovhaev <rkovhaev@gmail.com>
Date: Tue Oct 13 23:48:17 2020 +0000

  ntfs: add check for mft record size in superblock

  
Similar bugs (8)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-5.15 KASAN: use-after-free Read in ntfs_attr_find origin:upstream missing-backport C error 3 6d09h 96d 0/3 upstream: reported C repro on 2024/01/20 12:39
upstream KASAN: use-after-free Read in ntfs_attr_find ntfs3 C done 74 443d 609d 22/26 fixed on 2023/02/24 13:50
linux-6.1 KASAN: use-after-free Read in ntfs_attr_find 3 368d 379d 0/3 auto-obsoleted due to no activity on 2023/08/21 05:46
linux-4.14 KASAN: slab-out-of-bounds Read in ntfs_attr_find (2) C 31 424d 609d 0/1 upstream: reported C repro on 2022/08/25 11:21
upstream KASAN: use-after-free Read in ntfs_attr_find (2) ntfs3 C error done 22 67d 421d 0/26 upstream: reported C repro on 2023/03/01 23:29
linux-4.19 KASAN: use-after-free Read in ntfs_attr_find (2) C 1 425d 425d 0/1 upstream: reported C repro on 2023/02/26 02:15
linux-4.14 KASAN: use-after-free Read in ntfs_attr_find C done 4 1291d 1310d 1/1 fixed on 2020/11/12 10:36
linux-6.1 KASAN: use-after-free Read in ntfs_attr_find (2) origin:upstream missing-backport C inconclusive 1 35d 125d 0/3 upstream: reported C repro on 2023/12/22 04:54

Sample crash report:
IPVS: ftp: loaded support on port[0] = 21
ntfs: (device loop0): is_boot_sector_ntfs(): Invalid end of sector marker.
==================================================================
BUG: KASAN: use-after-free in ntfs_attr_find+0x9db/0xb10 fs/ntfs/attrib.c:613
Read of size 4 at addr ffff88809ea34c13 by task syz-executor686/8083

CPU: 0 PID: 8083 Comm: syz-executor686 Not tainted 4.19.152-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x1fc/0x2fe lib/dump_stack.c:118
 print_address_description.cold+0x54/0x219 mm/kasan/report.c:256
 kasan_report_error.cold+0x8a/0x1c7 mm/kasan/report.c:354
 kasan_report mm/kasan/report.c:412 [inline]
 __asan_report_load_n_noabort+0x8b/0xa0 mm/kasan/report.c:443
 ntfs_attr_find+0x9db/0xb10 fs/ntfs/attrib.c:613
 ntfs_attr_lookup+0x1020/0x1f90 fs/ntfs/attrib.c:1203
 ntfs_read_inode_mount+0x6fa/0x2200 fs/ntfs/inode.c:1858
 ntfs_fill_super+0xa16/0x7e10 fs/ntfs/super.c:2871
 mount_bdev+0x2fc/0x3b0 fs/super.c:1158
 mount_fs+0xa3/0x30c fs/super.c:1261
 vfs_kern_mount.part.0+0x68/0x470 fs/namespace.c:961
 vfs_kern_mount fs/namespace.c:951 [inline]
 do_new_mount fs/namespace.c:2469 [inline]
 do_mount+0x113c/0x2f10 fs/namespace.c:2799
 ksys_mount+0xcf/0x130 fs/namespace.c:3015
 __do_sys_mount fs/namespace.c:3029 [inline]
 __se_sys_mount fs/namespace.c:3026 [inline]
 __x64_sys_mount+0xba/0x150 fs/namespace.c:3026
 do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x4474fa
Code: b8 08 00 00 00 0f 05 48 3d 01 f0 ff ff 0f 83 1d aa fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 0f 83 fa a9 fb ff c3 66 0f 1f 84 00 00 00 00 00
RSP: 002b:00007fff5c32e2d8 EFLAGS: 00000287 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 00007fff5c32e330 RCX: 00000000004474fa
RDX: 0000000020000000 RSI: 0000000020000100 RDI: 00007fff5c32e2f0
RBP: 0000000000000004 R08: 00007fff5c32e330 R09: 00007fff5c32e320
R10: 0000000000000000 R11: 0000000000000287 R12: 0000000000000003
R13: 00007fff5c32e2f0 R14: 0000000000000000 R15: 0000000020000240

Allocated by task 8056:
 kmem_cache_alloc+0x122/0x370 mm/slab.c:3559
 getname_flags+0xce/0x590 fs/namei.c:140
 user_path_at_empty+0x2a/0x50 fs/namei.c:2609
 user_path_at include/linux/namei.h:57 [inline]
 vfs_statx+0x113/0x210 fs/stat.c:185
 vfs_stat include/linux/fs.h:3133 [inline]
 __do_sys_newstat fs/stat.c:337 [inline]
 __se_sys_newstat+0x96/0x120 fs/stat.c:333
 do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
 entry_SYSCALL_64_after_hwframe+0x49/0xbe

Freed by task 8056:
 __cache_free mm/slab.c:3503 [inline]
 kmem_cache_free+0x7f/0x260 mm/slab.c:3765
 putname+0xe1/0x120 fs/namei.c:261
 filename_lookup+0x3d0/0x5a0 fs/namei.c:2358
 user_path_at include/linux/namei.h:57 [inline]
 vfs_statx+0x113/0x210 fs/stat.c:185
 vfs_stat include/linux/fs.h:3133 [inline]
 __do_sys_newstat fs/stat.c:337 [inline]
 __se_sys_newstat+0x96/0x120 fs/stat.c:333
 do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
 entry_SYSCALL_64_after_hwframe+0x49/0xbe

The buggy address belongs to the object at ffff88809ea34b80
 which belongs to the cache names_cache of size 4096
The buggy address is located 147 bytes inside of
 4096-byte region [ffff88809ea34b80, ffff88809ea35b80)
The buggy address belongs to the page:
page:ffffea00027a8d00 count:1 mapcount:0 mapping:ffff88813be83e40 index:0x0 compound_mapcount: 0
flags: 0xfff00000008100(slab|head)
raw: 00fff00000008100 ffffea00027a8d88 ffffea00027a8c08 ffff88813be83e40
raw: 0000000000000000 ffff88809ea34b80 0000000100000001 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff88809ea34b00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
 ffff88809ea34b80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff88809ea34c00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                         ^
 ffff88809ea34c80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
 ffff88809ea34d00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================

Crashes (13):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2020/10/24 05:04 linux-4.19.y ad326970d25c 2bb6666c .config console log report syz C ci2-linux-4-19
2020/10/20 19:06 linux-4.19.y ad326970d25c ff4a3345 .config console log report syz C ci2-linux-4-19
2020/09/27 13:59 linux-4.19.y 10ad6cfd5736 5dd8aee8 .config console log report syz C ci2-linux-4-19
2020/09/27 12:04 linux-4.19.y 10ad6cfd5736 5dd8aee8 .config console log report syz C ci2-linux-4-19
2020/10/27 23:36 linux-4.19.y ad326970d25c 96e03c1c .config console log report info ci2-linux-4-19
2020/10/27 11:01 linux-4.19.y ad326970d25c 94942294 .config console log report info ci2-linux-4-19
2020/10/24 13:02 linux-4.19.y ad326970d25c a1839e81 .config console log report info ci2-linux-4-19
2020/10/22 00:36 linux-4.19.y ad326970d25c be6b1582 .config console log report info ci2-linux-4-19
2020/10/19 10:37 linux-4.19.y ad326970d25c ff4a3345 .config console log report info ci2-linux-4-19
2020/10/05 15:11 linux-4.19.y b09c34517e1a 1880b4a9 .config console log report info ci2-linux-4-19
2020/10/04 10:06 linux-4.19.y b09c34517e1a 5ef9c291 .config console log report info ci2-linux-4-19
2020/10/01 10:09 linux-4.19.y 10ad6cfd5736 4103fce0 .config console log report info ci2-linux-4-19
2020/09/27 01:02 linux-4.19.y 10ad6cfd5736 5dd8aee8 .config console log report info ci2-linux-4-19
* Struck through repros no longer work on HEAD.