syzbot


KASAN: use-after-free Write in ntfs_perform_write

Status: upstream: reported C repro on 2024/01/01 16:19
Bug presence: origin:upstream
Labels: missing-backport
[Documentation on labels]
Reported-by: syzbot+1e713edef6050354c72f@syzkaller.appspotmail.com
First crash: 123d, last: 2d11h
Fix bisection: the issue occurs on the latest tested release (bisect log)
Crash: KASAN: use-after-free Write in ntfs_perform_write (log)
Repro: C syz .config
  
Bug presence (3)
Date Name Commit Repro Result
2024/04/01 linux-6.1.y (ToT) e5cd595e23c1 C [report] KASAN: use-after-free Write in ntfs_perform_write
2024/01/02 upstream (ToT) 610a9b8f49fb C [report] KASAN: use-after-free Write in ntfs_perform_write
2024/04/01 upstream (ToT) 39cd87c4eb2b C Didn't crash
Similar bugs (2)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream KASAN: use-after-free Write in ntfs_perform_write ntfs3 C 2 106d 115d 0/26 auto-obsoleted due to no activity on 2024/04/27 16:18
linux-5.15 KASAN: use-after-free Write in ntfs_perform_write origin:upstream missing-backport C error 44 30d 126d 0/3 upstream: reported C repro on 2023/12/29 14:37
Fix bisection attempts (3)
Created Duration User Patch Repo Result
2024/04/01 14:28 2h13m fix candidate upstream job log (0)
2024/03/17 05:08 1h35m bisect fix linux-6.1.y job log (0) log
2024/02/12 02:15 2h09m bisect fix linux-6.1.y job log (0) log

Sample crash report:
ntfs: (device loop0): parse_options(): Option utf8 is no longer supported, using option nls=utf8. Please use option nls=utf8 in the future and make sure utf8 is compiled either as a module or into the kernel.
ntfs: volume version 3.1.
==================================================================
BUG: KASAN: use-after-free in ntfs_commit_pages_after_write fs/ntfs/file.c:1604 [inline]
BUG: KASAN: use-after-free in ntfs_perform_write+0x4288/0x6ef4 fs/ntfs/file.c:1860
Write of size 1 at addr ffff0000e12fe170 by task syz-executor432/4222

CPU: 0 PID: 4222 Comm: syz-executor432 Not tainted 6.1.89-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024
Call trace:
 dump_backtrace+0x1c8/0x1f4 arch/arm64/kernel/stacktrace.c:158
 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:165
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x108/0x170 lib/dump_stack.c:106
 print_address_description mm/kasan/report.c:284 [inline]
 print_report+0x174/0x4c0 mm/kasan/report.c:395
 kasan_report+0xd4/0x130 mm/kasan/report.c:495
 kasan_check_range+0x264/0x2a4 mm/kasan/generic.c:189
 memcpy+0x60/0x90 mm/kasan/shadow.c:66
 ntfs_commit_pages_after_write fs/ntfs/file.c:1604 [inline]
 ntfs_perform_write+0x4288/0x6ef4 fs/ntfs/file.c:1860
 ntfs_file_write_iter+0xf78/0x17b0 fs/ntfs/file.c:1917
 call_write_iter include/linux/fs.h:2265 [inline]
 new_sync_write fs/read_write.c:491 [inline]
 vfs_write+0x610/0x914 fs/read_write.c:584
 ksys_write+0x15c/0x26c fs/read_write.c:637
 __do_sys_write fs/read_write.c:649 [inline]
 __se_sys_write fs/read_write.c:646 [inline]
 __arm64_sys_write+0x7c/0x90 fs/read_write.c:646
 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline]
 invoke_syscall+0x98/0x2c0 arch/arm64/kernel/syscall.c:52
 el0_svc_common+0x138/0x258 arch/arm64/kernel/syscall.c:142
 do_el0_svc+0x64/0x218 arch/arm64/kernel/syscall.c:206
 el0_svc+0x58/0x168 arch/arm64/kernel/entry-common.c:637
 el0t_64_sync_handler+0x84/0xf0 arch/arm64/kernel/entry-common.c:655
 el0t_64_sync+0x18c/0x190 arch/arm64/kernel/entry.S:585

The buggy address belongs to the physical page:
page:00000000a3002a9a refcount:0 mapcount:0 mapping:0000000000000000 index:0x1 pfn:0x1212fe
flags: 0x5ffe00000000000(node=0|zone=2|lastcpupid=0xfff)
raw: 05ffe00000000000 fffffc0003836248 fffffc00038523c8 0000000000000000
raw: 0000000000000001 0000000000000000 00000000ffffffff 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
 ffff0000e12fe000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 ffff0000e12fe080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>ffff0000e12fe100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                                                             ^
 ffff0000e12fe180: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
 ffff0000e12fe200: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
==================================================================

Crashes (8):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/05/01 08:26 linux-6.1.y dcbc050cb0d3 3ba885bc .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in ntfs_perform_write
2024/04/28 12:26 linux-6.1.y f2295faba5e8 07b455f9 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in ntfs_perform_write
2024/01/02 01:23 linux-6.1.y a507f147e6f0 fb427a07 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in ntfs_perform_write
2024/01/05 19:52 linux-6.1.y 38fb82ecd144 28c42cff .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in ntfs_perform_write
2024/01/02 16:52 linux-6.1.y a507f147e6f0 fb427a07 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in ntfs_perform_write
2024/01/02 15:53 linux-6.1.y a507f147e6f0 fb427a07 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in ntfs_perform_write
2024/01/02 12:11 linux-6.1.y a507f147e6f0 fb427a07 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in ntfs_perform_write
2024/01/01 16:18 linux-6.1.y a507f147e6f0 fb427a07 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-6-1-kasan-arm64 KASAN: use-after-free Write in ntfs_perform_write
* Struck through repros no longer work on HEAD.