CVE-2026-54552

sh _uid does not drop supplementary groups (incomplete privilege drop)

Published Aug 18, 2026 CVSS 3.1 · 7.9 High EPSS < 1% KEV · Not listed
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.

Remediation

No solution or workaround provided in the CVE record

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
Type Values Removed Values Added
First Time appeared Amoffat
Amoffat sh
Vendors & Products Amoffat
Amoffat sh
Type Values Removed Values Added
Metrics ssvc

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

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'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Aug 18, 2026, 6:44 PM
Reserved
Jun 15, 2026, 7:04 PM
Status
Deferred
Published
Aug 18, 2026, 6:18 PM
Modified
Oct 22, 2026, 10:10 PM
Severity
Important
Public date
Aug 18, 2026, 5:37 PM