CVE-2026-54552
What it is
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.
At a glance
- Exploitability
- Can be exploited locally on the machine with an admin-level account. High risk of data exposure, data tampering.
- Exploit odds
- 0.2% chance of exploitation in the next 30 days (EPSS).
- Fix
- A patch, advisory or fixed version is referenced. Upgrade or apply it.
Timeline
- PublishedDisclosed publicly on CVE.org and NVD
- Last updatedMost recent change to the record
Details
- Published
- Last modified
- Exploit probability
- 0.2% · EPSS, next 30 days
- Weakness
- CWE-273
- Record status
- Deferred
Attack profile CVSS 3.1 · 7.9
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- High
- User interaction
- None
- Scope
- Changed
- Confidentiality
- High
- Integrity
- High
- Availability
- None
Raw vector
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
Fix and advisories
- https://github.com/amoffat/sh/commit/3d855daba91f87a089b490c0d1cf1df3faace2f1
- https://github.com/amoffat/sh/pull/776
- https://github.com/amoffat/sh/releases/tag/2.2.4
- https://github.com/amoffat/sh/security/advisories/GHSA-q38v-wp89-2w55