Security Vulnerability Report
中文
CVE-2026-23245 CVSS 7.8 HIGH

CVE-2026-23245

Published: 2026-03-18 11:16:16
Last Modified: 2026-05-21 18:47:30
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: net/sched: act_gate: snapshot parameters with RCU on replace The gate action can be replaced while the hrtimer callback or dump path is walking the schedule list. Convert the parameters to an RCU-protected snapshot and swap updates under tcf_lock, freeing the previous snapshot via call_rcu(). When REPLACE omits the entry list, preserve the existing schedule so the effective state is unchanged.

CVSS Details

CVSS Score
7.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
Linux kernel < 5.15.x (未应用补丁的版本)
Linux kernel < 6.1.x (未应用补丁的版本)
Linux kernel < 6.6.x (未应用补丁的版本)
Linux kernel < 6.7.x (未应用补丁的版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// CVE-2026-23245 PoC - Race condition in Linux kernel act_gate replace // Compile: gcc -o cve_poc cve_poc.c -lpthread #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define MAX_THREADS 8 #define ITERATIONS 10000 volatile int stop_flag = 0; void* timer_callback_thread(void* arg) { // Simulate hrtimer callback walking schedule list while (!stop_flag) { // In real kernel: walk through gate->entry_list // Access gate->num_entries, gate->entries, etc. usleep(1); } return NULL; } void* replace_gate_thread(void* arg) { // Simulate tc action replace operation // In real scenario: tc action replace gate ... int fd = open("/dev/null", O_RDWR); for (int i = 0; i < ITERATIONS && !stop_flag; i++) { // In real kernel: trigger gate action replacement // This causes the race condition write(fd, "test", 4); usleep(rand() % 10); } close(fd); return NULL; } int main() { pthread_t threads[MAX_THREADS]; printf("CVE-2026-23245 PoC - Race condition in act_gate\n"); printf("Target: Linux kernel net/sched act_gate\n"); printf("Starting race condition test...\n"); // Create threads simulating concurrent access for (int i = 0; i < MAX_THREADS / 2; i++) { pthread_create(&threads[i], NULL, timer_callback_thread, NULL); } for (int i = MAX_THREADS / 2; i < MAX_THREADS; i++) { pthread_create(&threads[i], NULL, replace_gate_thread, NULL); } sleep(5); // Run for 5 seconds stop_flag = 1; for (int i = 0; i < MAX_THREADS; i++) { pthread_join(threads[i], NULL); } printf("Test completed. Check dmesg for kernel warnings.\n"); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-23245", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-03-18T11:16:16.437", "lastModified": "2026-05-21T18:47:30.370", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: act_gate: snapshot parameters with RCU on replace\n\nThe gate action can be replaced while the hrtimer callback or dump path is\nwalking the schedule list.\n\nConvert the parameters to an RCU-protected snapshot and swap updates under\ntcf_lock, freeing the previous snapshot via call_rcu(). When REPLACE omits\nthe entry list, preserve the existing schedule so the effective state is\nunchanged."}, {"lang": "es", "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nnet/sched: act_gate: instantánea de parámetros con RCU al reemplazar\n\nLa acción de puerta puede ser reemplazada mientras la devolución de llamada de hrtimer o la ruta de volcado está recorriendo la lista de programación.\n\nConvertir los parámetros a una instantánea protegida por RCU e intercambiar actualizaciones bajo tcf_lock, liberando la instantánea anterior mediante call_rcu(). Cuando REPLACE omite la lista de entradas, preservar la programación existente para que el estado efectivo permanezca inalterado."}], "metrics": {"cvssMetricV31": [{"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "NVD-CWE-noinfo"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.8.1", "versionEndExcluding": "5.10.253", "matchCriteriaId": "322D472B-4DA0-4679-9950-28C0EBB5BBA0"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.11", "versionEndExcluding": "6.1.167", "matchCriteriaId": "56D62904-7C85-4BED-9EC0-3982B880F72D"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.2", "versionEndExcluding": "6.6.130", "matchCriteriaId": "C57BB918-DF28-46B3-94F7-144176841267"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.7", "versionEndExcluding": "6.12.78", "matchCriteriaId": "28D591F5-B196-4CC9-905C-DC80F116E7A8"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.13", "versionEndExcluding": "6.18.18", "matchCriteriaId": "346AD1FB-0CE8-4D9D-8E56-5EB1A4D06199"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.19", "versionEndExcluding": "6.19.8", "matchCriteriaId": "C65A7D85-C7C6-485E-AC35-66A374C73FAC"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:5.8:-:*:*:*:*:*:*", "matchCriteriaId": "0E2DC66F-4A95-475F-B8B6-191DEC1E7EF6"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*", "matchCriteriaId": "F253B622-8837-4245-BCE5-A7BF8FC76A16"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*", "matchCriteriaId": "4AE85AD8-4641-4E7C-A2F4-305E2CD9EE64"}]}]}], "references": [{"url": "https://git.kernel.org/stable/c/035d0d09d5ab3ed3e93d18cde2b562a6719eea23", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/04d75529dc0f9be78786162ebab7424af4644df2", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/58b162e318d0243ad2d7d92456c0873f2494c351", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/62413a9c3cb183afb9bb6e94dd68caf4e4145f4c", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/8b1251bbf0f10ac745ed74bad4d3b433caa1eeae", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/dfc314d7c767e350f78a46a8f8b134f80e8ad432", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/fc98fd8d214693be91253d9a88cdf8e5e143d124", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}]}}