Linux: NULL Pointer Dereference
CVE-2024-26924 is a high-severity NULL pointer dereference 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 e3b887a9c11caf8357a821260e095f2a694a34f2, 7a1679e2d9bfa3b5f8755c2c7113e54b7d42bd46, 41d8fdf3afaff312e17466e4ab732937738d5644 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.85% chance of exploitation within 30 days, higher than 59% of scored CVEs.
High severity with no evidence of exploitation so far.
What to do
- Update Linux to e3b887a9c11caf8357a821260e095f2a694a34f2 or 7a1679e2d9bfa3b5f8755c2c7113e54b7d42bd46 or 41d8fdf3afaff312e17466e4ab732937738d5644 or ebf7c9746f073035ee26209e38c3a1170f7b349a, whichever matches your release line, or a later version.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| Linux | Linux | 3c4287f62044a90e73a561aa05fc46e62da173da up to, but not including, e3b887a9c11caf8357a821260e095f2a694a34f2; 3c4287f62044a90e73a561aa05fc46e62da173da up to, but not including, 7a1679e2d9bfa3b5f8755c2c7113e54b7d42bd46; 3c4287f62044a90e73a561aa05fc46e62da173da up to, but not including, 41d8fdf3afaff312e17466e4ab732937738d5644; 3c4287f62044a90e73a561aa05fc46e62da173da up to, but not including, ebf7c9746f073035ee26209e38c3a1170f7b349a; 3c4287f62044a90e73a561aa05fc46e62da173da up to, but not including, 14b001ba221136c15f894577253e8db535b99487; 3c4287f62044a90e73a561aa05fc46e62da173da up to, but not including, 3cfc9ec039af60dbd8965ae085b2c2ccdcfbe1cc; 5.6 | e3b887a9c11caf8357a821260e095f2a694a34f2, 7a1679e2d9bfa3b5f8755c2c7113e54b7d42bd46, 41d8fdf3afaff312e17466e4ab732937738d5644, ebf7c9746f073035ee26209e38c3a1170f7b349a, 14b001ba221136c15f894577253e8db535b99487, 3cfc9ec039af60dbd8965ae085b2c2ccdcfbe1cc |
| Linux | linux_kernel | 5.6; 3c4287f62044 | Not stated |
| Debian | Debian Linux | 10.0 | Not stated |
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 CNA.
| Scoring system | Score | Severity | Scored by |
|---|---|---|---|
| CVSS 3.1 | 7.8 | High | CNA |
| CVSS 3.1 | 5.9 | Medium | CISA (ADP) |
Official description
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)
Source: the CVE record as published by its numbering authority, via NVD and CVE.org.
The underlying weakness: NULL Pointer Dereference
The product dereferences a pointer that it expects to be valid but is NULL.
How developers prevent this class of flaw
- For any pointers that could have been modified or provided from a function that can return NULL, check the pointer for NULL before use. When working with a multithreaded or otherwise asynchronous environment, ensure that proper locking APIs are used to lock before the check, and unlock when it has finished.
- Select a programming language that is not susceptible to these issues.
- Check the results of all functions that return a value and verify that the value is non-null before acting upon it.
Timeline
- CVE record published.
- CISA published its SSVC assessment (exploitation: none, automatable: no, technical impact: partial).
- Record last changed materially (score, affected products, status or references).
References
Patches and release notes
- git.kernel.org/stable/c/14b001ba221136c15f894577253e8db535b99487
- git.kernel.org/stable/c/3cfc9ec039af60dbd8965ae085b2c2ccdcfbe1cc
- git.kernel.org/stable/c/41d8fdf3afaff312e17466e4ab732937738d5644
- git.kernel.org/stable/c/7a1679e2d9bfa3b5f8755c2c7113e54b7d42bd46
- git.kernel.org/stable/c/e3b887a9c11caf8357a821260e095f2a694a34f2
- git.kernel.org/stable/c/ebf7c9746f073035ee26209e38c3a1170f7b349a
Third-party and government advisories
- lists.debian.org/debian-lts-announce/2024/06/msg00017.htmlMailing List, Third Party Advisory
Other references
Recent NULL Pointer Dereference vulnerabilities
- 7.5 High severity
- 7.5 High severity
- 8.8 High severity
- 7.5 High severity
- 7.5 High severity
- 9.1 Critical severity
Spotted an error? Tell us.