CVE-2023-6507: Groups not dropped before running subprocess when using empty 'extra_groups' parameter
An issue was found in CPython 3.12.0 `subprocess` module on POSIX platforms. The issue was fixed in CPython 3.12.1 and does not affect other stable releases.
When using the `extra_groups=` parameter with an empty list as a value (ie `extra_groups=[]`) the logic regressed to not call `setgroups(0, NULL)` before calling `exec()`, thus not dropping the original processes' groups before starting the new process. There is no issue when the parameter isn't used or when any value is used besides an empty list.
This issue only impacts CPython processes run with sufficient privilege to make the `setgroups` system call (typically `root`).
Security readout for executives and security teams
Plain-English summary
A privileged CPython 3.12.0 application on a POSIX system may start a child process with supplementary group permissions it intended to remove. This could let the child access or modify protected resources beyond its intended role. Ordinary unprivileged Python processes and other stable CPython releases are not affected according to the supplied description.
Executive priority
Schedule prompt remediation for privileged automation, service managers, or security boundaries using CPython 3.12.0. Broader emergency action is not indicated by the supplied evidence because the vulnerable configuration is specific, exploitation requires substantial privilege, and no active exploitation is documented.
Technical view
A regression in CPython 3.12.0 subprocess handling skips setgroups(0, NULL) when extra_groups=[] is supplied. The executed child consequently retains the parent process's supplementary groups. Exploitation requires a POSIX process privileged enough to change group membership, typically root. CPython 3.12.1 fixed the issue.
Likely exposure
Exposure is narrow: POSIX systems running CPython 3.12.0, where privileged code launches subprocesses using exactly extra_groups=[]. Omitting the parameter or supplying a non-empty value is not affected. Applications that never run Python with relevant privileges are unlikely to be exposed.
Exploitation context
The supplied sources do not establish active exploitation, and the CVE is not listed as KEV in the bundle. Abuse would require access to a vulnerable privileged execution path and influence over what the improperly privileged child process does. The CVSS 6.1 assessment reflects adjacent access and high privileges required.
Researcher notes
This is CWE-269 improper privilege management with confidentiality and integrity impact but no scored availability impact. The decisive trigger is an empty extra_groups value, not general subprocess use. The supplied narrative explicitly limits affected stable releases to CPython 3.12.0; avoid interpreting the broader structured version field without vendor clarification.
Mitigation direction
Upgrade affected CPython 3.12.0 installations to CPython 3.12.1 or a later supported stable release.
Prioritize privileged POSIX services and administrative automation using the subprocess module.
Until upgraded, avoid passing an empty extra_groups list where operationally safe.
Consult the Python security advisory and applicable platform package guidance.
Validation and detection
Inventory POSIX systems and containers running CPython 3.12.0.
Identify privileged Python processes, especially those running as root.
Review subprocess calls for the exact extra_groups=[] configuration.
After remediation, confirm child processes do not retain unintended supplementary groups.
Verify the deployed Python runtime reports a fixed, supported version.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · medium confidence lookup
CWE-269: Authorization and privilege behavior lookup
Authorization weaknesses can support privilege escalation and valid-account review, depending on exploit path. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
2ADP providers
6Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: noneAutomatable: noTechnical Impact: total
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-269 · source CWE mapping
Improper Privilege Management
Improper Privilege Management represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.