CVE-2026-63349: AnyIO run_process/open_process privilege dropping bug with extra_groups

CVE-2026-63349 · Severity: high · CVSS 4 · Published 2026-09-18

AnyIO is a Python library for asynchronous I/O that provides subprocess management helpers. A bug in versions 4.14.0–4.14.1 prevents the extra_groups parameter from working correctly when launching child processes, potentially leaving privileged supplementary group memberships intact that should have been dropped. Applications relying on AnyIO to launch less-privileged child processes may fail to properly restrict those processes' capabilities.

Technologies: anyio (PyPI). Vendors: PyPI.

Quick answers

Is CVE-2026-63349 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-63349 being exploited in the wild.
How severe is CVE-2026-63349?
High severity, with a CVSS score of 4, published 18 September 2026.
Which products and versions are affected?
anyio (PyPI) >= 4.14.0, < 4.14.2, ECOSYSTEM:introduced=4.14.0,fixed=4.14.2.
Is there a fix for CVE-2026-63349?
Yes. anyio (PyPI): upgrade to 4.14.2 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-63349 attacked?
It is attacked with local access, in a software library.
Am I affected by CVE-2026-63349?
Check whether you run anyio (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • anyio (PyPI): upgrade to 4.14.2 or later
    pip install "anyio>=4.14.2"

Technical details

The vulnerability is a privilege management bug in AnyIO's open_process() function. When the extra_groups parameter is provided to set or clear supplementary groups, the function incorrectly assigns kwargs["extra_groups"] = group instead of kwargs["extra_groups"] = extra_groups, passing the wrong variable to the backend. This causes child processes to retain the parent's supplementary group memberships instead of having them modified as requested. If both group and extra_groups are supplied, an integer is passed where a list is expected, resulting in TypeError. This is a POSIX-specific correctness issue affecting privilege-dropping scenarios. The bug affects versions 4.14.0 through 4.14.1 and is patched in version 4.14.2.

Affected products

  • Alex Gronholm AnyIO 4.14.0 to 4.14.1

Identifiers

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

Timeline

  • 2026-07-07: disclosed
  • 2026-09-18: patched: Version 4.14.2 released

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.