CVE-2024-26924
Last modified
CVE-2024-26924 is a high-severity vulnerability rated 7.8/10 on the CVSS scale. 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). EPSS estimates a 1.29% chance of exploitation in the next 30 days.
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)
Metrics
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness Enumeration
Affected Software
| Vendor | Product | Versions | Update |
|---|---|---|---|
| Linux | Linux Kernel | >= 5.6, < 5.10.216 | — |
| Linux | Linux Kernel | >= 5.11, < 5.15.157 | — |
| Linux | Linux Kernel | >= 5.16, < 6.1.88 | — |
| Linux | Linux Kernel | >= 6.2, < 6.6.29 | — |
| Linux | Linux Kernel | >= 6.7, < 6.8.8 | — |
| Linux | Linux Kernel | 6.9 | Rc1 |
| Debian | Debian Linux | 10.0 | — |
References
- https://lists.debian.org/debian-lts-announce/2024/06/msg00017.htmlMailing List, Third Party Advisory
Timeline
- Published
- Last Modified
- Status
- Modified
Frequently Asked Questions
What is CVE-2024-26924?
How severe is CVE-2024-26924?
How do I fix CVE-2024-26924?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2024
- CVE-2024-26919In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2024-2692SiYuan version 3.0.3 allows executing arbitrary commands on …9
- CVE-2024-26920In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2024-26921In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2024-26922In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2024-26923In the Linux kernel, the following vulnerability has been re…4.7
- CVE-2024-26925In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2024-26926In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2024-26927In the Linux kernel, the following vulnerability has been re…8.4
- CVE-2024-26928In the Linux kernel, the following vulnerability has been re…7.8
- CVE-2024-26929Rejected reason: This CVE ID has been rejected or withdrawn …
- CVE-2024-2693The Link Whisper Free plugin for WordPress is vulnerable to …8.8
Are you affected by CVE-2024-26924?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
