🛡️ CVE-2025-40214 — kernel

🟠 CVSS 7.8 — High ✅ No Known Exploit NVD
7.8
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

af_unix: Initialise scc_index in unix_add_edge().

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

af_unix: Initialise scc_index in unix_add_edge().

Quang Le reported that the AF_UNIX GC could garbage-collect a

receive queue of an alive in-flight socket, with a nice repro.

The repro consists of three stages.

1)

1-a. Create a single cyclic reference with many sockets

1-b. close() all sockets

1-c. Trigger GC

2)

2-a. Pass sk-A to an embryo sk-B

2-b. Pass sk-X to sk-X

2-c. Trigger GC

3)

3-a. accept() the embryo sk-B

3-b. Pass sk-B to sk-C

3-c. close() the in-flight sk-A

3-d. Trigger GC

As of 2-c, sk-A and sk-X are linked to unix_unvisited_vertices,

and unix_walk_scc() groups them into two different SCCs:

unix_sk(sk-A)->vertex->scc_index = 2 (UNIX_VERTEX_INDEX_START)

unix_sk(sk-X)->vertex->scc_index = 3

Once GC completes, unix_graph_grouped is set to true.

Also, unix_graph_maybe_cyclic is set to true due to sk-X's

cyclic self-reference, which makes close() trigger GC.

At 3-b, unix_add_edge() allocates unix_sk(sk-B)->vertex and

links it to unix_unvisited_vertices.

unix_update_graph() is called at 3-a. and 3-b., but neither

unix_graph_grouped nor unix_graph_maybe_cyclic is changed

because both sk-B's listener and sk-C are not in-flight.

3-c decrements sk-A's file refcnt to 1.

Since unix_graph_grouped is true at 3-d, unix_walk_scc_fast()

is finally called and iterates 3 sockets sk-A, sk-B, and sk-X:

sk-A -> sk-B (-> sk-C)

sk-X -> sk-X

This is totally fine. All of them are not yet close()d and

should be grouped into different SCCs.

However, unix_vertex_dead() misjudges that sk-A and sk-B are

in the same SCC and sk-A is dead.

unix_sk(sk-A)->scc_index == unix_sk(sk-B)->scc_index <-- Wrong!

&&

sk-A's file refcnt == unix_sk(sk-A)->vertex->out_degree

^-- 1 in-flight count for sk-B

-> sk-A is dead !?

The problem is that unix_add_edge() does not initialise scc_index.

Stage 1) is used for heap spraying, making a newly allocated

vertex have vertex->scc_index == 2 (UNIX_VERTEX_INDEX_START)

set by unix_walk_scc() at 1-c.

Let's track the max SCC index from the previous unix_walk_scc()

call and assign the max + 1 to a new vertex's scc_index.

This way, we can continue to avoid Tarjan's algorithm while

preventing misjudgments.

How this vulnerability can be exploited

This issue can be reached with local access to the system, attack complexity is low, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality high, integrity high, availability high.

Affected software

CVE-2025-40214 is recorded against 2 packages.

  • kernel (from 6.10.0 up to 6.17.9)
  • unknown

Timeline and source

Published on 4 December 2025 and last revised on 6 August 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

cert-portal.siemens.com (Web)
git.kernel.org (Web)
git.kernel.org (Web)
git.kernel.org (Web)
git.kernel.org (Web)
git.kernel.org (Web)
mohandacherir.github.io (Web)
github.com (Advisory)
nvd.nist.gov (Advisory)
git.kernel.org (Package)

CVE-2025-40214 on other distributions

Each distribution ships its own build and its own fixed version. Pick the one you run:

Details

Severity High
CVSS Score 7.8
CVSS Vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE N/A
Public Exploit ✅ No
Source NVD
Published 2025-12-04
Updated 2026-08-12
Modified 2026-08-06
Fix URL N/A

Affected Packages

Software From version Fixed in
kernel 6.10.0 6.17.9
unknown

Similar Threats

Site Security Check

Is kernel part of your stack?

CVE-2025-40214 is rated CVSS 7.8 High. BotEraser scans your installation against known CVE records and tells you whether this vulnerability applies to the versions you actually run.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2025