CVE-2023-54165
Use-After-Free in Linux Kernel zsmalloc Causes Memory Corruption Crash
Publication date: 2025-12-30
Last updated on: 2025-12-30
Assigner: kernel.org
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| linux | linux_kernel | 5.19.0 |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-UNKNOWN |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
This vulnerability is a bug in the Linux kernel's zsmalloc memory allocator. Specifically, it involves the timing of updating the Least Recently Used (LRU) list during memory allocation. Unlike other zswap backends, zsmalloc updates the LRU list when the object is mapped rather than when the slot is allocated. This causes a subtle bug under memory pressure when concurrent memory store and reclaim operations interleave, leading to a crash due to list corruption.
How can this vulnerability impact me? :
This vulnerability can cause the Linux kernel to crash under memory pressure conditions due to list corruption in the memory allocator. Such crashes can lead to system instability, potential data loss, and downtime.
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability can be detected by monitoring the system logs for specific kernel crash messages related to list corruption and zsmalloc. Look for messages similar to: 'list_del corruption, ... is LIST_POISON1 (dead000000000100)' and warnings from __list_del_entry_valid in the kernel logs (e.g., using dmesg or journalctl). Commands to check include: 'dmesg | grep -i list_del', 'journalctl -k | grep -i list_del', or searching for kernel crash traces related to zsmalloc or zswap.
What immediate steps should I take to mitigate this vulnerability?
Immediate mitigation steps include updating the Linux kernel to a version where this vulnerability has been resolved, as the issue is fixed by moving the LRU update from zs_map_object() to zs_malloc(). Until an update is applied, monitoring for crashes and avoiding heavy memory pressure scenarios that trigger the bug may reduce the risk.