high CVSS 7 EPSS <0.1%

CVE-2022-48988·Kernel vulnerability

In the Linux kernel, the following vulnerability has been resolved: memcg: fix possible use-after-free in memcg_write_event_control() memcg_write_event_control() accesses the dentry->d_name of the specified control fd to route the write call. As a cgroup interface file can't be renamed, it's safe to access d_name as long as the specified file is a regular cgroup file. Also, as these cgroup interface files can't be removed before the directory, it's safe to access the parent too. Prior to 347c4a874710 ("memcg: remove cgroup_event->cft"), there was a call to __file_cft() which verified that the specified file is a regular cgroupfs file before further accesses. The cftype pointer returned from __file_cft() was no longer necessary and the commit inadvertently dropped the file type check with it allowing any file to slip through. With the invarients broken, the d_name and parent accesses can now race against renames and removals of arbitrary files and cause use-after-free's. Fix the bug by resurrecting the file type check in __file_cft(). Now that cgroupfs is implemented through kernfs, checking the file operations needs to go through a layer of indirection. Instead, let's check the superblock and dentry type.

Severity
high
Software
Kernel
Fixed in
6.0.13
Published

How likely is exploitation

FIRST's Exploit Prediction Scoring System puts the probability of this CVE being exploited in the next 30 days at <0.1% — higher than 2% of all published CVEs. EPSS is an independent forecast of exploitation, not a severity rating: it says nothing about how much damage a successful attack does, which is what a CVSS score measures.

Read the two together. CVE-2022-48988 scores 7 on CVSS, so a successful attack would be serious — but at <0.1%, almost nobody is currently attempting it. That is a different situation from a flaw under mass exploitation, and it is usually the difference between patching on your next maintenance window and patching tonight.

Affected versions

From: 5.16

Until: 6.0.13

Fixed in: 6.0.13

How to fix this CVE

Update your Linux kernel to version 6.0.13 or later to patch the use-after-free vulnerability in the memory cgroup event control handler. This vulnerability affects kernels from 5.16 through 6.0.12 and can be exploited by local users with write access to cgroup control files. Apply the kernel update and reboot your system to fully remediate the issue.

sudo dnf update kernel kernel-devel && sudo reboot

Defensia detects this vulnerability

How to check if you are affected

  1. Check installed kernel version: uname -r | grep -E '^(5\.(16|17|18|19)|6\.(0\.[0-9]|[0-9]\.[0-9]|0\.(1[0-2])))' && echo 'VULNERABLE' || echo 'NOT VULNERABLE'
  2. Verify cgroup v2 is in use: mount | grep cgroup2 && echo 'cgroup2 detected' || echo 'cgroup1 or none'
  3. Search kernel logs for memcg-related panics or memory corruption: sudo journalctl -k | grep -i 'memcg\|use-after-free\|memory corruption'
  4. Confirm patch applied: grep -i 'memcg.*event.*control' /boot/config-$(uname -r) && uname -r | grep -E '^6\.(0\.(13|[1-9][4-9])|[1-9]\.)' && echo 'PATCHED' || echo 'VERIFICATION NEEDED'

FAQ

What is CVE-2022-48988?

This is a use-after-free vulnerability in the Linux kernel's memory cgroup event control interface that occurs when file type validation is missing. An attacker with local access can craft malicious cgroup control file operations to trigger memory corruption.

Is CVE-2022-48988 being actively exploited?

No, this vulnerability is not listed in CISA's Known Exploited Vulnerabilities catalog and no public exploits have been released. However, it remains a high-severity local privilege escalation risk.

What versions of Kernel are affected by CVE-2022-48988?

Linux kernel versions 5.16 through 6.0.12 are affected. Versions 6.0.13 and later, as well as all 6.1+ releases, include the fix.

How do I check if my server is vulnerable to CVE-2022-48988?

Run: uname -r && if echo $(uname -r) | grep -E '^(5\.(16|17|18|19)|6\.(0\.[0-9]|0\.[1-2]))' > /dev/null; then echo 'VULNERABLE'; else echo 'NOT VULNERABLE'; fi

Does Defensia detect CVE-2022-48988?

Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If Kernel is installed on a monitored server, CVE-2022-48988 will appear in your dashboard with remediation steps.

Related Kernel CVEs

CVE-2026-63795CVSS 10In the Linux kernel, the following vulnerability has been resolved: 9p: avoid putting oldfid in p9_client_walk() error path When p9_client_walk() is called with clone set to false, fid aliases oldfid. If the walk subsequently fails after the request has been sent, the error path jumps to clunk_fid, which currently calls p9_fid_put(fid) unconditionally. This drops a reference to oldfid even though ownership of oldfid remains with the caller. If this is the last reference, oldfid can be clunked and destroyed while the caller still expects it to be valid. A later use or put of oldfid can then trigger a use-after-free or refcount underflow. Fix this by only putting fid in the clunk_fid error path when it does not alias oldfid, matching the existing guard in the error path below. This can be triggered when a multi-component walk is split into multiple p9_client_walk() calls and a later non-cloning walk fails. A reproducer and refcount warning logs are available on request.
CVE-2026-53221CVSS 9.8In the Linux kernel, the following vulnerability has been resolved: ip6_vti: fix incorrect tunnel matching in vti6_tnl_lookup() In vti6_tnl_lookup(), when an exact match for a tunnel fails, the code falls back to searching for wildcard tunnels: - Tunnels matching the packet's local address, with any remote address wildcard remote). - Tunnels matching the packet's remote address, with any local address (wildcard local). However, vti6 stores all these different types of tunnels in the same hash table (ip6n->tnls_r_l) prone to hash collisions. The bug is that the fallback search loops in vti6_tnl_lookup() were missing checks to ensure that the candidate tunnel actually has a wildcard address.
CVE-2026-53151CVSS 9.8In the Linux kernel, the following vulnerability has been resolved: rxrpc: Fix the ACK parser to extract the SACK table for parsing Fix modification of the received skbuff in rxrpc_input_soft_acks() and a potential incorrect access of the buffer in a fragmented UDP packet (the packet would probably have to be deliberately pre-generated as fragmented) when AF_RXRPC tries to extract the contents of the SACK table by copying out the contents of the SACK table into a buffer before attempting to parse AF_RXRPC assumes that it can just call skb_condense() and then validly access the SACK table from skb->data and that it will be a flat buffer - but skb_condense() can silently fail to do anything under some circumstances. Note that whilst rxrpc_input_soft_acks() should be able to parse extended ACKs, the rest of AF_RXRPC doesn't currently support that. Further, there's then no need to call skb_condense() in rxrpc_input_ack(), so don't.
CVE-2026-53088CVSS 9.8In the Linux kernel, the following vulnerability has been resolved: net: bcmgenet: fix off-by-one in bcmgenet_put_txcb The write_ptr points to the next open tx_cb. We want to return the tx_cb that gets rewinded, so we must rewind the pointer first then return the tx_cb that it points to. That way the txcb can be correctly cleaned up.
CVE-2026-53228CVSS 9.8In the Linux kernel, the following vulnerability has been resolved: ipv6: sit: reload inner IPv6 header after GSO offloads ipip6_tunnel_xmit() caches the inner IPv6 header pointer at function entry and continues using it after iptunnel_handle_offloads(). For GSO skbs, iptunnel_handle_offloads() calls skb_header_unclone(). When the skb header is cloned, skb_header_unclone() can call pskb_expand_head(), which may move the skb head. The pskb_expand_head() contract requires pointers into the skb header to be reloaded after the call. If the later skb_realloc_headroom() branch is not taken, SIT uses the stale iph6 pointer to read the inner hop limit and DS field. That can read from a freed skb head after the old head's remaining clone is released. Reload iph6 after the offload helper succeeds and before subsequent reads from the inner IPv6 header. Keep the existing reload after skb_realloc_headroom(), since that branch can also replace the skb.

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-48988. Free for 1 server.

Get started free