Impact
The flaw in AnyIO version 4.14.0 to 4.14.1 causes the subprocess helpers anyio.run_process() and anyio.open_process() to ignore the POSIX extra_groups argument that is intended to drop inherited supplementary group memberships. When a caller supplies extra_groups=[] to clear all groups, the child process unexpectedly inherits all of the parent’s supplementary groups, thereby preserving privileged group memberships that should have been removed. This breaks the expected privilege‑dropping boundary and can allow a less‑privileged or untrusted application to retain higher privilege levels. The error can also surface a TypeError if an integer group is passed where an iterable of supplementary groups is expected, potentially halting process creation.
Affected Systems
Any Python application that imports the agronholm anyio package and uses anyio.run_process() or anyio.open_process() on POSIX platforms is impacted when the library version is between 4.14.0 and 4.14.1 inclusive. The issue is resolved in anyio release 4.14.2 and later.
Risk and Exploitability
The CVSS score of 7 reflects a moderate severity. The vulnerability is not listed in the CISA KEV catalog and the EPSS score is not available. Because the flaw demands that the attacker be able to invoke anyio.run_process() or open_process() with a custom extra_groups argument, the most realistic attack surface is a local user or a process with control over the application code. Remote exploitation would require compromising the host or injecting malicious code into the application that uses the AnyIO helpers.
OpenCVE Enrichment
Github GHSA