CVE-2022-49401·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: mm/page_owner: use strscpy() instead of strlcpy() current->comm[] is not a string (no guarantee for a zero byte in it). strlcpy(s1, s2, l) is calling strlen(s2), potentially causing out-of-bound access, as reported by syzbot: detected buffer overflow in __fortify_strlen ------------[ cut here ]------------ kernel BUG at lib/string_helpers.c:980! invalid opcode: 0000 [#1] PREEMPT SMP KASAN CPU: 0 PID: 4087 Comm: dhcpcd-run-hooks Not tainted 5.18.0-rc3-syzkaller-01537-g20b87e7c29df #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 RIP: 0010:fortify_panic+0x18/0x1a lib/string_helpers.c:980 Code: 8c e8 c5 ba e1 fa e9 23 0f bf fa e8 0b 5d 8c f8 eb db 55 48 89 fd e8 e0 49 40 f8 48 89 ee 48 c7 c7 80 f5 26 8a e8 99 09 f1 ff <0f> 0b e8 ca 49 40 f8 48 8b 54 24 18 4c 89 f1 48 c7 c7 00 00 27 8a RSP: 0018:ffffc900000074a8 EFLAGS: 00010286 RAX: 000000000000002c RBX: ffff88801226b728 RCX: 0000000000000000 RDX: ffff8880198e0000 RSI: ffffffff81600458 RDI: fffff52000000e87 RBP: ffffffff89da2aa0 R08: 000000000000002c R09: 0000000000000000 R10: ffffffff815fae2e R11: 0000000000000000 R12: ffff88801226b700 R13: ffff8880198e0830 R14: 0000000000000000 R15: 0000000000000000 FS: 0000000000000000(0000) GS:ffff8880b9c00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f5876ad6ff8 CR3: 000000001a48c000 CR4: 00000000003506f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000600 Call Trace: <IRQ> __fortify_strlen include/linux/fortify-string.h:128 [inline] strlcpy include/linux/fortify-string.h:143 [inline] __set_page_owner_handle+0x2b1/0x3e0 mm/page_owner.c:171 __set_page_owner+0x3e/0x50 mm/page_owner.c:190 prep_new_page mm/page_alloc.c:2441 [inline] get_page_from_freelist+0xba2/0x3e00 mm/page_alloc.c:4182 __alloc_pages+0x1b2/0x500 mm/page_alloc.c:5408 alloc_pages+0x1aa/0x310 mm/mempolicy.c:2272 alloc_slab_page mm/slub.c:1799 [inline] allocate_slab+0x26c/0x3c0 mm/slub.c:1944 new_slab mm/slub.c:2004 [inline] ___slab_alloc+0x8df/0xf20 mm/slub.c:3005 __slab_alloc.constprop.0+0x4d/0xa0 mm/slub.c:3092 slab_alloc_node mm/slub.c:3183 [inline] slab_alloc mm/slub.c:3225 [inline] __kmem_cache_alloc_lru mm/slub.c:3232 [inline] kmem_cache_alloc+0x360/0x3b0 mm/slub.c:3242 dst_alloc+0x146/0x1f0 net/core/dst.c:92
- Severity
- high
- Software
- Kernel
- Fixed in
- 5.18.3
- Published
- 2025-02-26
Affected versions
From: 5.18
Until: 5.18.3
Fixed in: 5.18.3
How to fix this CVE
Update your Linux kernel to version 5.18.3 or later to resolve this memory safety issue in the page_owner subsystem. The vulnerability stems from unsafe string handling that can trigger buffer overflow detection when copying uninitialized process names. Applying this patch prevents kernel crashes and potential privilege escalation from unprivileged local users.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Step 1: Check your kernel version with `uname -r` and verify if it falls within 5.18.0 to 5.18.2
- Step 2: Confirm page_owner debugging feature is enabled by checking `cat /proc/cmdline | grep page_owner` or `grep CONFIG_PAGE_OWNER /boot/config-$(uname -r)`
- Step 3: Search kernel logs for fortify_strlen or buffer overflow panics using `dmesg | grep -i 'fortify\|buffer overflow\|__set_page_owner'`
- Step 4: After patching, verify the new kernel version with `uname -r` and confirm it shows 5.18.3 or later
FAQ
What is CVE-2022-49401?
This vulnerability exists in the Linux kernel's page_owner memory tracking feature where an unsafe string copy function could read past buffer boundaries when processing process task names that lack null terminators, causing kernel panics via fortify string checking.
Is CVE-2022-49401 being actively exploited?
No, this vulnerability is not listed on the CISA KEV catalog and no public exploits are available. However, it can be triggered locally by unprivileged users to cause denial of service.
What versions of Kernel are affected by CVE-2022-49401?
Linux kernel versions 5.18.0 through 5.18.2 are affected. The fix was merged in version 5.18.3.
How do I check if my server is vulnerable to CVE-2022-49401?
Run `uname -r` to check your kernel version. If it shows 5.18.0, 5.18.1, or 5.18.2, your system is vulnerable. Also verify page_owner is enabled with `grep CONFIG_PAGE_OWNER /boot/config-$(uname -r)` — it must be set to 'y'.
Does Defensia detect CVE-2022-49401?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If the Linux kernel is installed on a monitored server, CVE-2022-49401 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2022-49401. Free for 1 server.
Get started free