Skip to content

GHSA-3w57-8xmc-8v26 CVE-2026-63349 PYSEC-2026-4023

AnyIO run_process/open_process ignores extra_groups and can retain parent supplementary groups

High PyPI
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
Weakness
CWE-266 Incorrect Privilege Assignment
CWE-269 Improper Privilege Management
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

PackageVulnerableFixed in
anyio
>= 4.14.0, < 4.14.2
4.14.2
anyio
>= 4.14.0, < 4.14.2
4.14.2

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

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy 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

Is this in your code?

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