Linux: Use After Free
CVE-2022-49763 is a high-severity use after free vulnerability in Linux, with a CVSS 3.1 base score of 7.8 out of 10. It can be exploited with local access to the system by an attacker with a low-privileged account, without any action from a user. The record lists versions 79f3ac7dcd12c05b7539239a4c6fa229a50d786c, fb2004bafd1932e08d21ca604ee5844f2b7f212d, d0006d739738a658a9c29b438444259d9f71dfa0 as the first without the flaw, so updating Linux to one of those releases or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.22% chance of exploitation within 30 days, which is low compared with other CVEs.
High severity with no evidence of exploitation so far.
What to do
- Update Linux to 79f3ac7dcd12c05b7539239a4c6fa229a50d786c or fb2004bafd1932e08d21ca604ee5844f2b7f212d or d0006d739738a658a9c29b438444259d9f71dfa0 or 266bd5306286316758e6246ea0345133427b0f62, whichever matches your release line, or a later version.
- Update Linux Kernel to 4.9.334 or 4.14.300 or 4.19.267 or 5.4.225, whichever matches your release line, or a later version.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| Linux | Linux | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 up to, but not including, 79f3ac7dcd12c05b7539239a4c6fa229a50d786c; 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 up to, but not including, fb2004bafd1932e08d21ca604ee5844f2b7f212d; 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 up to, but not including, d0006d739738a658a9c29b438444259d9f71dfa0; 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 up to, but not including, 266bd5306286316758e6246ea0345133427b0f62; 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 up to, but not including, b825bfbbaafbe8da2037e3a778ad660c59f9e054; 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 up to, but not including, 5330c423b86263ac7883fef0260b9e2229cb531e; 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 up to, but not including, 4863f815463034f588a035cfd99cdca97a4f1069; 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 up to, but not including, d85a1bec8e8d552ab13163ca1874dcd82f3d1550; and 1 more ranges | 79f3ac7dcd12c05b7539239a4c6fa229a50d786c, fb2004bafd1932e08d21ca604ee5844f2b7f212d, d0006d739738a658a9c29b438444259d9f71dfa0, 266bd5306286316758e6246ea0345133427b0f62, b825bfbbaafbe8da2037e3a778ad660c59f9e054, 5330c423b86263ac7883fef0260b9e2229cb531e |
| Linux | Linux Kernel | before 4.9.334; 4.10 up to, but not including, 4.14.300; 4.15 up to, but not including, 4.19.267; 4.20 up to, but not including, 5.4.225; 5.5 up to, but not including, 5.10.156; 5.11 up to, but not including, 5.15.80; 5.16 up to, but not including, 6.0.10 | 4.9.334, 4.14.300, 4.19.267, 5.4.225, 5.10.156, 5.15.80 |
Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.
How the severity score breaks down
- Attack vector
- LocalThe attacker needs local access or must trick a user into running something.
- Attack complexity
- LowNo special conditions are needed; the attack works reliably.
- Privileges required
- LowA basic user account is enough.
- User interaction
- NoneNo action by a victim is required.
- Scope
- UnchangedImpact stays within the vulnerable component.
- Confidentiality
- HighAll data handled by the component can be read.
- Integrity
- HighData or code can be modified at will.
- Availability
- HighThe component can be taken down completely.
Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. Scored by NVD.
| Scoring system | Score | Severity | Scored by |
|---|---|---|---|
| CVSS 3.1 | 7.8 | High | CNA |
| CVSS 3.1 | 7.8 | High | NVD |
Official description
In the Linux kernel, the following vulnerability has been resolved: ntfs: fix use-after-free in ntfs_attr_find() Patch series "ntfs: fix bugs about Attribute", v2. This patchset fixes three bugs relative to Attribute in record: Patch 1 adds a sanity check to ensure that, attrs_offset field in first mft record loading from disk is within bounds. Patch 2 moves the ATTR_RECORD's bounds checking earlier, to avoid dereferencing ATTR_RECORD before checking this ATTR_RECORD is within bounds. Patch 3 adds an overflow checking to avoid possible forever loop in ntfs_attr_find(). Without patch 1 and patch 2, the kernel triggersa KASAN use-after-free detection as reported by Syzkaller. Although one of patch 1 or patch 2 can fix this, we still need both of them. Because patch 1 fixes the root cause, and patch 2 not only fixes the direct cause, but also fixes the potential out-of-bounds bug. This patch (of 3): Syzkaller reported use-after-free read as follows: ================================================================== BUG: KASAN: use-after-free in ntfs_attr_find+0xc02/0xce0 fs/ntfs/attrib.c:597 Read of size 2 at addr ffff88807e352009 by task syz-executor153/3607 [...] Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description mm/kasan/report.c:317 [inline] print_report.cold+0x2ba/0x719 mm/kasan/report.c:433 kasan_report+0xb1/0x1e0 mm/kasan/report.c:495 ntfs_attr_find+0xc02/0xce0 fs/ntfs/attrib.c:597 ntfs_attr_lookup+0x1056/0x2070 fs/ntfs/attrib.c:1193 ntfs_read_inode_mount+0x89a/0x2580 fs/ntfs/inode.c:1845 ntfs_fill_super+0x1799/0x9320 fs/ntfs/super.c:2854 mount_bdev+0x34d/0x410 fs/super.c:1400 legacy_get_tree+0x105/0x220 fs/fs_context.c:610 vfs_get_tree+0x89/0x2f0 fs/super.c:1530 do_new_mount fs/namespace.c:3040 [inline] path_mount+0x1326/0x1e20 fs/namespace.c:3370 do_mount fs/namespace.c:3383 [inline] __do_sys_mount fs/namespace.c:3591 [inline] __se_sys_mount fs/namespace.c:3568 [inline] __x64_sys_mount+0x27f/0x300 fs/namespace.c:3568 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd [...] </TASK> The buggy address belongs to the physical page: page:ffffea0001f8d400 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x7e350 head:ffffea0001f8d400 order:3 compound_mapcount:0 compound_pincount:0 flags: 0xfff00000010200(slab|head|node=0|zone=1|lastcpupid=0x7ff) raw: 00fff00000010200 0000000000000000 dead000000000122 ffff888011842140 raw: 0000000000000000 0000000000040004 00000001ffffffff 0000000000000000 page dumped because: kasan: bad access detected Memory state around the buggy address: ffff88807e351f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff88807e351f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >ffff88807e352000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff88807e352080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff88807e352100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ================================================================== Kernel will loads $MFT/$DATA's first mft record in ntfs_read_inode_mount(). Yet the problem is that after loading, kernel doesn't check whether attrs_offset field is a valid value. To be more specific, if attrs_offset field is larger than bytes_allocated field, then it may trigger the out-of-bounds read bug(reported as use-after-free bug) in ntfs_attr_find(), when kernel tries to access the corresponding mft record's attribute. This patch solves it by adding the sanity check between attrs_offset field and bytes_allocated field, after loading the first mft record.
Source: the CVE record as published by its numbering authority, via NVD and CVE.org.
The underlying weakness: Use After Free
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory belongs to the code that operates on the new pointer.
How developers prevent this class of flaw
- Choose a language that provides automatic memory management.
- When freeing pointers, be sure to set them to NULL once they are freed. However, the utilization of multiple or complex data structures may lower the usefulness of this strategy.
Timeline
- CVE record published.
- Record last changed materially (score, affected products, status or references).
References
Patches and release notes
- git.kernel.org/stable/c/266bd5306286316758e6246ea0345133427b0f62
- git.kernel.org/stable/c/4863f815463034f588a035cfd99cdca97a4f1069
- git.kernel.org/stable/c/5330c423b86263ac7883fef0260b9e2229cb531e
- git.kernel.org/stable/c/79f3ac7dcd12c05b7539239a4c6fa229a50d786c
- git.kernel.org/stable/c/b825bfbbaafbe8da2037e3a778ad660c59f9e054
- git.kernel.org/stable/c/d0006d739738a658a9c29b438444259d9f71dfa0
- git.kernel.org/stable/c/d85a1bec8e8d552ab13163ca1874dcd82f3d1550
- git.kernel.org/stable/c/fb2004bafd1932e08d21ca604ee5844f2b7f212d
Recent Use After Free vulnerabilities
- 7.8 High severity
- 7.8 High severity
- 7.8 High severity
- 7.8 High severity
- 7.8 High severity
- 7.8 High severity
Spotted an error? Tell us.