Description
sh provides Python process launching. Prior to 2.2.4, the _uid option in sh.py performs an incomplete privilege drop on Linux and Unix-like systems. When sh runs from an elevated process and launches a command with _uid set to an unprivileged user, the child changes its UID but can retain the parent process's supplementary groups because the privilege-drop sequence does not fully establish the target user's UID, primary GID, and supplementary groups. The child can therefore retain access to files or resources granted to privileged groups such as root, docker, disk, shadow, or sudo, violating the expected _uid privilege boundary. This issue is fixed in version 2.2.4.
Published: 2026-08-18
Score: 7.9 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

sh uses Python to launch subprocesses, and the _uid parameter is intended to drop privileges when invoking a command. Prior to release 2.2.4, the privilege‑drop routine does not fully reset the child process’s supplementary groups, leaving it with the parent’s group membership. When a high‑privilege process calls sh with _uid set to an unprivileged user, the resulting child can maintain membership in privileged groups such as root, docker, disk, shadow, or sudo, thereby bypassing the expected permission boundary and enabling access to files or services granted only to those groups. This failure constitutes a vulnerability described by CWE‑273, Elevation of Privilege.

Affected Systems

The affected product is sh by amoffat. Versions older than 2.2.4 contain the incomplete privilege drop logic; version 2.2.4 and later include the fix.

Risk and Exploitability

The CVSS score of 7.9 marks this flaw as high severity. EPSS information is not available, and it is not listed in CISA’s KEV catalog. The most likely attack vector is a local or container‑based attacker who can run sh from an already‑elevated process. Once sh is invoked with the _uid option, the child process inherits the parent’s supplementary groups, allowing the attacker to access resources and files that should be protected by group permissions, effectively escalating privileges within the host. The impact is therefore a potential unauthorized access to privileged resources, while the exploitation requires the attacker to control the launching process.

Generated by OpenCVE AI on August 18, 2026 at 19:54 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade sh to version 2.2.4 or later, which fully drops UID, GID, and supplementary groups.
  • Ensure that any use of the _uid option is performed only from non‑elevated processes or that the launcher’s group membership is properly constrained.
  • If upgrading is not immediately possible, avoid executing sh from privileged contexts and limit file or service permissions to the minimum required groups.

Generated by OpenCVE AI on August 18, 2026 at 19:54 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-q38v-wp89-2w55 sh _uid does not drop supplementary groups (incomplete privilege drop)
History

Tue, 18 Aug 2026 19:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Tue, 18 Aug 2026 18:00:00 +0000

Type Values Removed Values Added
Description sh provides Python process launching. Prior to 2.2.4, the _uid option in sh.py performs an incomplete privilege drop on Linux and Unix-like systems. When sh runs from an elevated process and launches a command with _uid set to an unprivileged user, the child changes its UID but can retain the parent process's supplementary groups because the privilege-drop sequence does not fully establish the target user's UID, primary GID, and supplementary groups. The child can therefore retain access to files or resources granted to privileged groups such as root, docker, disk, shadow, or sudo, violating the expected _uid privilege boundary. This issue is fixed in version 2.2.4.
Title sh _uid does not drop supplementary groups (incomplete privilege drop)
Weaknesses CWE-273
References
Metrics cvssV3_1

{'score': 7.9, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-18T18:44:38.505Z

Reserved: 2026-06-15T19:04:14.456Z

Link: CVE-2026-54552

cve-icon Vulnrichment

Updated: 2026-08-18T18:44:28.018Z

cve-icon NVD

Status : Received

Published: 2026-08-18T18:18:23.147

Modified: 2026-08-18T19:16:57.803

Link: CVE-2026-54552

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-18T20:00:04Z

Weaknesses
  • CWE-273

    Improper Check for Dropped Privileges