GHSA-3w57-8xmc-8v26 CVE-2026-63349 PYSEC-2026-4023
AnyIO run_process/open_process ignores extra_groups and can retain parent supplementary groups
- Severity
- 7.0 / 10
- High · CVSS 4.0
- Exploit chance (EPSS)
- 0.11%
- Chance of exploitation in the next 30 days. Higher than 1.18% of scored vulnerabilities.
- Known exploited
- No
- Not in CISA's catalog
- Fix
4.14.2- Upgrade anyio to this version or later
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.
Affected versions
PyPI
How to fix
Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.
anyio PyPI → 4.14.2
- pip
pip install --upgrade "anyio>=4.14.2"- poetry
poetry add "anyio>=4.14.2"- uv
uv add "anyio>=4.14.2"
Severity breakdown
CVSS 4.0 7.0
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
- Attack vector
- Local
- Attack complexity
- High
- Attack requirements
- Present
- Privileges required
- High
- User interaction
- None
- Confidentiality (vulnerable system)
- High
- Integrity (vulnerable system)
- High
- Availability (vulnerable system)
- None
- Confidentiality (subsequent systems)
- None
- Integrity (subsequent systems)
- None
- Availability (subsequent systems)
- None
Weakness
CWE-266: Incorrect Privilege Assignment
A product incorrectly assigns a privilege to a particular actor, creating an unintended sphere of control for that actor.
How to prevent it
- Architecture and Design, Operation: Very carefully manage the setting, management, and handling of privileges. Explicitly manage trust zones in the software.
- Architecture and Design, Operation: Run your code using the lowest privileges that are required to accomplish the necessary tasks [REF-76]. If possible, create isolated accounts with limited privileges that are only used for a single task. That way, a successful attack will not immediately give the attacker access to the rest of the software or its environment. For example, database applications rarely need to run as the database administrator, especially in day-to-day operations.
CWE-269: Improper Privilege Management
The product does not properly assign, modify, track, or check privileges for an actor, creating an unintended sphere of control for that actor.
How to prevent it
- Architecture and Design, Operation: Very carefully manage the setting, management, and handling of privileges. Explicitly manage trust zones in the software.
- Architecture and Design: Follow the principle of least privilege when assigning access rights to entities in a software system.
- Architecture and Design: Consider following the principle of separation of privilege. Require multiple conditions to be met before permitting access to a system resource.
References
Advisories
Fixes and patches
Packages
Other links
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why it's related |
|---|---|---|
| GHSA-82r6-8w77-94w6 AnyIO: TLSStream IDNA 2003 host name encoding enables potential TLS certificate spoofing | Critical | Also affects anyio |
| GHSA-5p39-cfhj-2xmp AnyIO process-pool workers can block indefinitely on undrained stderr | Medium | Also affects anyio |
| GHSA-gr2m-v5gq-v685 Electron: Windows opened from a sandboxed top-level document do not inherit its sandbox restrictions | Medium | Same weakness, CWE-266 |
| GHSA-rh79-75qm-gwjr Gitea LFS Deploy-Key Privilege Escalation | Medium | Same weakness, CWE-266 |
| GHSA-rvmm-v933-jgxq Craft CMS: Missing authorization check allows non-admin control panel users access to user registration metrics | Medium | Same weakness, CWE-266 |
| GHSA-8qpj-27x8-pwpq Langflow: PythonREPLComponent executes unsandboxed Python code, enabling authenticated RCE and privilege escalation | Critical | Same weakness, CWE-266 |
| GHSA-m2v5-74w2-qhcj BerriAI litellm: UI User Enumeration leads to System-Wide Information Disclosure | Medium | Same weakness, CWE-266 |
| GHSA-qmf3-4767-5fg3 LiteLLM: M2M JWT Handler Has Improper Authorization | High | Same weakness, CWE-266 |
Credits: Faze-up
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor