Skip to main content

Linux Kernel CVE-2024-26924

HIGH
NULL Pointer Dereference (CWE-476)
2024-04-25 416baaa9-dc9f-4396-8d5f-8c081fb06d67
7.8
CVSS 3.1 · Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.0 HIGH

AC upgraded to H versus NVD's AC:L because triggering the bug requires a non-default nftables PIPAPO set with timeouts and a precisely patterned same-key add/remove sequence; PR:L retained for CAP_NET_ADMIN requirement.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

7
Analysis Updated
Aug 04, 2026 - 13:15 vuln.today
v3 (cvss_changed)
Analysis Updated
Aug 04, 2026 - 13:14 vuln.today
v2 (cvss_changed)
Analysis Updated
Aug 04, 2026 - 13:13 vuln.today
v1 (cvss_changed)
Re-analysis Queued
Aug 04, 2026 - 11:23 vuln.today
cvss_changed
Severity Changed
Aug 04, 2026 - 11:23 NVD
MEDIUM HIGH
CVSS changed
Aug 04, 2026 - 11:23 NVD
5.9 (MEDIUM) 7.8 (HIGH)
CVE Published
Apr 25, 2024 - 06:15 cve.org
MEDIUM 5.9

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

netfilter: nft_set_pipapo: do not free live element

Pablo reports a crash with large batches of elements with a back-to-back add/remove pattern. Quoting Pablo:

add_elem("00000000") timeout 100 ms ... add_elem("0000000X") timeout 100 ms del_elem("0000000X") <---------------- delete one that was just added ... add_elem("00005000") timeout 100 ms

  1. nft_pipapo_remove() removes element 0000000X

Then, KASAN shows a splat.

Looking at the remove function there is a chance that we will drop a rule that maps to a non-deactivated element.

Removal happens in two steps, first we do a lookup for key k and return the to-be-removed element and mark it as inactive in the next generation. Then, in a second step, the element gets removed from the set/map.

The _remove function does not work correctly if we have more than one element that share the same key.

This can happen if we insert an element into a set when the set already holds an element with same key, but the element mapping to the existing key has timed out or is not active in the next generation.

In such case its possible that removal will unmap the wrong element. If this happens, we will leak the non-deactivated element, it becomes unreachable.

The element that got deactivated (and will be freed later) will remain reachable in the set data structure, this can result in a crash when such an element is retrieved during lookup (stale pointer).

Add a check that the fully matching key does in fact map to the element that we have marked as inactive in the deactivation step. If not, we need to continue searching.

Add a bug/warn trap at the end of the function as well, the remove function must not ever be called with an invisible/unreachable/non-existent element.

v2: avoid uneeded temporary variable (Stefano)

AnalysisAI

Stale pointer dereference in the Linux kernel's netfilter nft_set_pipapo subsystem allows a local attacker with low privileges to crash the kernel or potentially achieve arbitrary kernel code execution. The nft_pipapo_remove() function's two-phase element removal logic incorrectly unmaps a live set element when multiple elements share the same key - a scenario triggered by rapid back-to-back add/remove operations on timed-out or next-generation-inactive elements. The freed element's pointer remains reachable in the PIPAPO lookup table; a subsequent packet lookup against that stale pointer produces a KASAN-detected kernel splat. No public exploit identified at time of analysis; EPSS of 1.29% at the 67th percentile reflects elevated community interest relative to most CVEs, consistent with the Linux kernel's ubiquity.

Technical ContextAI

The vulnerability is in nft_set_pipapo, the PIPAPO (Packed Integer Pair Packing Operations) set backend within the Linux kernel's nftables netfilter subsystem, used for high-performance multi-dimensional packet classification. Element removal is a two-phase commit: phase one marks the element inactive in the 'next generation' data plane; phase two physically removes it from the PIPAPO data structure. The defect (CWE-476, manifesting as a dangling/stale pointer rather than a classic NULL dereference) occurs when the PIPAPO structure holds two elements with the same key - possible when a new element is inserted while an existing same-key element is timed out or generation-inactive. In this state, nft_pipapo_remove() may unmap the wrong (live) element: the live element is leaked and becomes unreachable, while the deactivated-but-freed element retains a live pointer inside the set structure. A subsequent lookup traversal hits the freed memory, producing a crash. CPE data confirms the affected product is cpe:2.3:o:linux:linux_kernel across multiple stable branches through 6.9-rc4, with Debian Linux 10.0 (Buster) also confirmed downstream.

RemediationAI

Apply the upstream kernel patches published to the Linux stable tree across six commits: https://git.kernel.org/stable/c/14b001ba221136c15f894577253e8db535b99487, https://git.kernel.org/stable/c/3cfc9ec039af60dbd8965ae085b2c2ccdcfbe1cc, https://git.kernel.org/stable/c/41d8fdf3afaff312e17466e4ab732937738d5644, https://git.kernel.org/stable/c/7a1679e2d9bfa3b5f8755c2c7113e54b7d42bd46, https://git.kernel.org/stable/c/e3b887a9c11caf8357a821260e095f2a694a34f2, and https://git.kernel.org/stable/c/ebf7c9746f073035ee26209e38c3a1170f7b349a. A specific patched release version number is not independently confirmed in available data - consult your distribution's security tracker for the exact package version. Debian LTS users should follow https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html; Fedora users should apply updates via the announcements linked above. Where patching is not immediately possible, restrict CAP_NET_ADMIN access via removal of user namespace support (sysctl kernel.unprivileged_userns_clone=0 on supported distros) to prevent unprivileged users from obtaining the capability - note this disables rootless containers and other user-namespace-dependent features. Additionally, avoid deploying nftables PIPAPO sets with element timeouts until patched, as that specific configuration is required to trigger the defect.

CVE-2021-44228 CRITICAL POC
10.0 Dec 10

Apache Log4j2 contains a critical JNDI injection vulnerability known as 'Log4Shell' that allows unauthenticated remote c

CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2014-6271 CRITICAL POC
9.8 Sep 24

GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which

CVE-2017-7494 CRITICAL POC
9.8 May 30

Samba since version 3.5.0 and before 4.6.4, 4.5.10 and 4.4.14 is vulnerable to remote code execution vulnerability, allo

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2022-30333 HIGH POC
7.5 May 09

RARLAB UnRAR before 6.12 on Linux and UNIX allows directory traversal to write to files during an extract (aka unpack) o

CVE-2016-3714 HIGH POC
8.4 May 05

The (1) EPHEMERAL, (2) HTTPS, (3) MVG, (4) MSL, (5) TEXT, (6) SHOW, (7) WIN, and (8) PLT coders in ImageMagick before 6.

CVE-2017-12617 HIGH POC
8.1 Oct 04

When running Apache Tomcat versions 9.0.0.M1 to 9.0.0, 8.5.0 to 8.5.22, 8.0.0.RC1 to 8.0.46 and 7.0.0 to 7.0.81 with HTT

CVE-2020-1938 CRITICAL POC
9.8 Feb 24

When using the Apache JServ Protocol (AJP), care must be taken when trusting incoming connections to Apache Tomcat. Rate

CVE-2018-7602 CRITICAL POC
9.8 Jul 19

A remote code execution vulnerability exists within multiple subsystems of Drupal 7.x and 8.x. Rated critical severity (

Share

CVE-2024-26924 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy