# CVE-2026-63349: 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.

Canonical page: https://cveminer.com/vulnerabilities/CVE-2026-63349

| Field | Value |
| --- | --- |
| CVE | CVE-2026-63349 |
| GHSA | GHSA-3w57-8xmc-8v26 |
| Severity | High |
| 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` (GitHub Advisory Database) |
| CWE | CWE-266 Incorrect Privilege Assignment; CWE-269 Improper Privilege Management |
| EPSS | 0.1% (higher than 1% of CVEs) |
| CISA KEV | Not listed |
| Published | 18 Sept 2026 |
| Modified | 18 Sept 2026 |

## 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 packages

| Package | Ecosystem | PURL | Vulnerable versions | Fixed in |
| --- | --- | --- | --- | --- |
| anyio | PyPI | `pkg:pypi/anyio` | >= 4.14.0, < 4.14.2 | 4.14.2 |

## Fix commits

- Patch: https://github.com/agronholm/anyio/commit/eb562e6462ee46b1904e50b02ce00a858cdeb200
- Pull request: https://github.com/agronholm/anyio/pull/1209
- Release: https://github.com/agronholm/anyio/commit/c384f99687c64c59ed8a11c3a0f11a2d57daff71 (4.14.2)

## Questions

**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.

## References

- https://github.com/agronholm/anyio/pull/1209 (fix)
- https://github.com/agronholm/anyio/commit/eb562e6462ee46b1904e50b02ce00a858cdeb200 (fix)
- https://github.com/agronholm/anyio/security/advisories/GHSA-3w57-8xmc-8v26 (advisory)
- https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/63xxx/CVE-2026-63349.json (advisory)
- https://nvd.nist.gov/vuln/detail/CVE-2026-63349 (advisory)
- https://github.com/advisories/GHSA-3w57-8xmc-8v26 (advisory)
- https://github.com/agronholm/anyio (package)
- https://github.com/agronholm/anyio/releases/tag/4.14.2

---

Source: CVEminer (https://cveminer.com/vulnerabilities/CVE-2026-63349), compiled from OSV (GitHub advisory), GitHub Advisory Database, OSV (CVE record), CVE.org, CISA KEV catalog. OSV and GitHub Advisory Database content is licensed CC BY 4.0.
