CVE-2026-54552
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.
CVSS
- Version: 3.1
- Vector: CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N
- Base score: 7.9
Exploitation probability (EPSS)
- Probability of exploitation in the next 30 days: 0.17%
- Percentile among all scored CVEs: 6
- Score date: 10/3/2026
EPSS (Exploit Prediction Scoring System, FIRST) estimates how likely a vulnerability is to be exploited in the wild within 30 days. It complements CVSS (impact) and CISA KEV (confirmed exploitation).
🎯 ATT&CK techniques
How this vulnerability is exploited and what the attacker gains, in MITRE ATT&CK terms.
- Exploitation
T1068Exploitation for Privilege Escalationprivilege escalation95 % - Primary impact
T1548Abuse Elevation Control Mechanismprivilege escalation90 % - Secondary impact
T1552.001Credentials In Filescredential access75 %
Acceso local con PR:H (privilegios altos) que causa escalada incompleta de privilegios, permitiendo retener grupos suplementarios y acceder a recursos privilegiados (docker, shadow, sudo). Requiere caída de privilegios defectuosa.
Inferred by our analysis agent from the official description, CVSS vector and CWE, and checked by a supervisor. May contain errors.
🛡️ ATT&CK mitigations that cover these techniques
Affected technologies (1)
⚠ AI-inferred from the description — NVD hasn't analyzed this CVE yet, these aren't verified CPEs.
CWEs
- CWE-273
References
Raw JSON (NVD)
Show
{
"id": "CVE-2026-54552",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-54552",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"version": "2.0.3",
"timestamp": "2026-08-18T18:44:23.350805Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"cvssData": {
"scope": "CHANGED",
"version": "3.1",
"baseScore": 7.9,
"attackVector": "LOCAL",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:N",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "HIGH",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.8,
"exploitabilityScore": 1.5
}
]
},
"affected": [
{
"source": "security-advisories@github.com",
"affectedData": [
{
"vendor": "amoffat",
"product": "sh",
"versions": [
{
"status": "affected",
"version": "< 2.2.4"
}
]
}
]
}
],
"published": "2026-08-18T18:18:23.147",
"references": [
{
"url": "https://github.com/amoffat/sh/commit/3d855daba91f87a089b490c0d1cf1df3faace2f1",
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/amoffat/sh/pull/776",
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/amoffat/sh/releases/tag/2.2.4",
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/amoffat/sh/security/advisories/GHSA-q38v-wp89-2w55",
"source": "security-advisories@github.com"
}
],
"vulnStatus": "Deferred",
"weaknesses": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"description": [
{
"lang": "en",
"value": "CWE-273"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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."
}
],
"lastModified": "2026-09-18T20:09:01.757",
"sourceIdentifier": "security-advisories@github.com"
}