GHSA-3w57-8xmc-8v26

Suggest an improvement
Source
https://github.com/advisories/GHSA-3w57-8xmc-8v26
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-3w57-8xmc-8v26/GHSA-3w57-8xmc-8v26.json
JSON Data
https://api.test.osv.dev/v1/vulns/GHSA-3w57-8xmc-8v26
Aliases
Downstream
Published
2026-09-18T17:17:23Z
Modified
2026-09-18T17:30:08Z
Severity
  • 7.0 (High) CVSS_V4 - 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 CVSS Calculator
Summary
AnyIO run_process/open_process ignores extra_groups and can retain parent supplementary groups
Details

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.

Database specific
{
    "cwe_ids":  [
        "CWE-266",
        "CWE-269"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-09-18T17:17:23Z",
    "nvd_published_at":  null,
    "severity":  "HIGH"
}
References

Affected packages

PyPI / anyio

Package

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.14.0
Fixed
4.14.2

Affected versions

4.*
4.14.0
4.14.1

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-3w57-8xmc-8v26/GHSA-3w57-8xmc-8v26.json"