AnyIO run_process/open_process ignores extra_groups and can retain parent supplementary groups
CVE-2026-63349 (GitHub advisory GHSA-3w57-8xmc-8v26) is a high-severity vulnerability with a CVSS 4.0 base score of 7.0, classed as Incorrect Privilege Assignment (CWE-266), in anyio (PyPI). Affected versions: >= 4.14.0, < 4.14.2. It is fixed in 4.14.2.
Published 18 Sept 2026Updated 18 Sept 2026
- CVE ID
- CVE-2026-63349
- GHSA ID
- GHSA-3w57-8xmc-8v26
- EPSS
- 0.1%higher than 1% of CVEs
- KEV status
- Not in KEV
- Published
- 18 Sept 2026
- Updated
- 18 Sept 2026
- Ecosystem
- PyPI
- Assigned by (CNA)
- GitHub_M
Summary
Source: OSV (GitHub advisory)
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.
Technical details
Source: GitHub Advisory Database
CVSS:4.0/AV:L/AC:H/AT:P/PR:H/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:NHigh7.0Base score from GitHub Advisory Database
- Attack Vector AV
- Local
- Attack Complexity AC
- High
- Attack Requirements AT
- Present
- Privileges Required PR
- High
- User Interaction UI
- None
- Confidentiality (Vulnerable System) VC
- High
- Integrity (Vulnerable System) VI
- High
- Availability (Vulnerable System) VA
- None
- Confidentiality (Subsequent Systems) SC
- None
- Integrity (Subsequent Systems) SI
- None
- Availability (Subsequent Systems) SA
- None
Affected packages
Source: OSV (GitHub advisory)
- anyioPyPI
pkg:pypi/anyio- Affected versions
- >= 4.14.0, < 4.14.2
- Fixed in
- 4.14.2
Show 2 listed versions
- 4.14.0
- 4.14.1
| Package | Affected versions | Fixed in |
|---|---|---|
anyio PyPI pkg:pypi/anyio |
Show 2 listed versions
|
|
Fix
Source: OSV (GitHub advisory)
Fix available
Upgrade to 4.14.2 or later.
Patch commits
Fixed `extra_groups` not being passed to backend `open_process()` (#1209)
+35 −4 across 3 files
- docs/versionhistory.rst+3 −0
- src/anyio/_core/_subprocesses.py+1 −1
- tests/test_subprocesses.py+31 −3
Release commits
The commits each fixed release tag points at. They usually bump the version rather than contain the fix itself.
Vulnerability intelligence
Root cause analysis
Vulnerable functions
References
Fixes 2
Advisories 4
Package 1
Other links 1
Credits
- Faze-upreporter
Questions about CVE-2026-63349
- What is the GHSA ID for CVE-2026-63349?
- GitHub tracks CVE-2026-63349 as GHSA-3w57-8xmc-8v26.
- What is the CVSS score of CVE-2026-63349?
- CVE-2026-63349 has a CVSS 4.0 base score of 7.0 (High), 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.
- Which versions are affected by CVE-2026-63349?
- anyio (PyPI): >= 4.14.0, < 4.14.2.
- How do I fix CVE-2026-63349?
- Upgrade to 4.14.2 or later. The fix is in commit eb562e6 and pull request #1209.
- What is the Package URL (PURL) for CVE-2026-63349?
- The affected package's PURL is pkg:pypi/anyio.
- Is CVE-2026-63349 exploited in the wild?
- CISA's Known Exploited Vulnerabilities catalog doesn't list CVE-2026-63349. That means no confirmed exploitation has been catalogued, not that it is safe to leave unpatched. EPSS estimates a 0.1% chance of exploitation in the next 30 days, higher than 1% of CVEs.
Data sources
Upstream records
- OSV (GitHub advisory)LoadedRaw JSON
- GitHub Advisory DatabaseLoadedRaw JSON
- OSV (CVE record)LoadedRaw JSON
- CVE.orgLoaded
- CISA KEV catalogLoaded
Fetched 6 days ago (7 Oct 2026, 12:27 UTC). Records refresh automatically after 24 hours.
Where each part of this page came from
- Title and description
- OSV (GitHub advisory)
- Severity score
- GitHub Advisory Database
- Weakness (CWE)
- GitHub Advisory Database
- Affected packages
- OSV (GitHub advisory)
- Fix
- OSV (GitHub advisory)
- References
- Computed by CVEminer
- KEV status
- CISA KEV catalog
- EPSS
- GitHub Advisory Database
OSV and GitHub Advisory Database content is licensed CC BY 4.0. Values marked as computed or derived were calculated by CVEminer from the upstream data.