Description
AnyIO is a high level asynchronous concurrency and networking framework that works on top of either Trio or asyncio. In 4.14.0, AnyIO accepts the POSIX extra_groups argument in anyio.run_process() and anyio.open_process(), but open_process() forwards the group argument to the backend instead of extra_groups. A caller that supplies extra_groups=[] to clear inherited supplementary groups can therefore launch a child that retains the parent process groups, undermining a privilege-dropping boundary. If group is also supplied, the integer group value is passed where an iterable of supplementary groups is expected and the launch can fail with TypeError. This issue affects POSIX applications that rely on AnyIO subprocess helpers to launch less-privileged child processes. This issue is fixed in version 4.14.2.
Published: 2026-09-18
Score: 7 High
EPSS: < 1% Very Low
KEV: No
Impact: Privilege Escalation via Retained Supplementary Groups
Action: Immediate Patch
AI Analysis

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 of < 1% indicates a very low but non‑zero likelihood of exploitation. 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.

Generated by OpenCVE AI on September 23, 2026 at 01:53 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the anyio library to version 4.14.2 or later to apply the official fix.
  • If an upgrade is not immediately possible, avoid using anyio.run_process() or open_process() with the extra_groups argument; instead, use the standard subprocess module and explicitly clear supplementary groups with os.initgroups or setgroups in a pre‑exec function.
  • Verify that any call to open_process() does not supply an integer in the group parameter; if only a single group ID is needed, pass it as a single‑item iterable or use the older subprocess API to set the group correctly.

Generated by OpenCVE AI on September 23, 2026 at 01:53 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-3w57-8xmc-8v26 AnyIO run_process/open_process ignores extra_groups and can retain parent supplementary groups
History

Sat, 26 Sep 2026 07:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Wed, 23 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-648
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.4, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N'}

threat_severity

Moderate


Mon, 21 Sep 2026 10:45:00 +0000

Type Values Removed Values Added
First Time appeared Agronholm
Agronholm anyio
Vendors & Products Agronholm
Agronholm anyio

Fri, 18 Sep 2026 21:30:00 +0000

Type Values Removed Values Added
Description AnyIO is a high level asynchronous concurrency and networking framework that works on top of either Trio or asyncio. In 4.14.0, AnyIO accepts the POSIX extra_groups argument in anyio.run_process() and anyio.open_process(), but open_process() forwards the group argument to the backend instead of extra_groups. A caller that supplies extra_groups=[] to clear inherited supplementary groups can therefore launch a child that retains the parent process groups, undermining a privilege-dropping boundary. If group is also supplied, the integer group value is passed where an iterable of supplementary groups is expected and the launch can fail with TypeError. This issue affects POSIX applications that rely on AnyIO subprocess helpers to launch less-privileged child processes. This issue is fixed in version 4.14.2.
Title AnyIO run_process/open_process ignores extra_groups and can retain parent supplementary groups
Weaknesses CWE-266
CWE-269
References
Metrics cvssV4_0

{'score': 7, 'vector': 'CVSS:4.0/AV:L/AC:H/AT:P/PR:H/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-24T21:05:25.977Z

Reserved: 2026-07-16T14:14:24.386Z

Link: CVE-2026-63349

cve-icon Vulnrichment

Updated: 2026-09-24T21:03:48.920Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-18T17:16:59.317

Modified: 2026-09-25T14:10:13.927

Link: CVE-2026-63349

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-18T17:02:30Z

Links: CVE-2026-63349 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-23T02:00:10Z

Weaknesses
  • CWE-266

    Incorrect Privilege Assignment

  • CWE-269

    Improper Privilege Management

  • CWE-648

    Incorrect Use of Privileged APIs