GitHub Advisoryadvisory · PyPI

GHSA-3w57-8xmc-8v26 AnyIO run_process/open_process ignores extra_groups and can retain parent supplementary groups

HIGH Published 2026-09-18 Modified 2026-09-18 Official page ↗
Aliases
CVE-2026-63349
Ecosystem
PyPI
Packages
anyio
Severity
High
CVSS 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
Weaknesses
CWE-266, CWE-269
Reviewed
2026-09-18

Affected packages

• PyPI anyio: >= 4.14.0, < 4.14.2 → fixed in 4.14.2

Description

AnyIO 4.14.0 accepts the POSIX extra_groups argument on anyio.run_process() and anyio.open_process(), but open_process() forwards the wrong variable to the backend: when extra_groups is not None, it assigns kwargs["extra_groups"] = group instead of extra_groups. As a result, callers cannot reliably clear or set supplementary groups for child processes. In a disposable Linux container, Python's subprocess.run(..., extra_groups=[]) clears a synthetic parent supplementary group list, while anyio.run_process(..., extra_groups=[]) preserves the parent groups. If group is also supplied, AnyIO passes an integer as extra_groups and the call fails with TypeError. This is a POSIX privilege-dropping correctness issue for applications that rely on AnyIO subprocess helpers to launch less-privileged child processes.

Related

Alias · CVE (1)

  • CVE-2026-63349 AnyIO is a high level asynchronous concurrency and networking framework that works on top of either Trio or asyncio. vulnerability

Weakness · CWE (2)

  • CWE-266 Incorrect Privilege Assignment weakness
  • CWE-269 Improper Privilege Management weakness

References