Security Vulnerability Report
中文
CVE-2026-33997 CVSS 6.8 MEDIUM

CVE-2026-33997

Published: 2026-03-31 03:15:58
Last Modified: 2026-04-03 17:23:21

Description

Moby is an open source container framework. Prior to version 29.3.1, a security vulnerability has been detected that allows plugins privilege validation to be bypassed during docker plugin install. Due to an error in the daemon's privilege comparison logic, the daemon may incorrectly accept a privilege set that differs from the one approved by the user. Plugins that request exactly one privilege are also affected, because no comparison is performed at all. This issue has been patched in version 29.3.1.

CVSS Details

CVSS Score
6.8
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N

Configurations (Affected Products)

cpe:2.3:a:mobyproject:moby:*:*:*:*:*:*:*:* - VULNERABLE
Moby < 29.3.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC Concept for CVE-2026-33997 # This script simulates the logic flaw in privilege validation. # It demonstrates how a single privilege request bypasses the check. def check_privileges_vulnerable(user_approved, plugin_requested): # Simulate the vulnerable logic in Moby < 29.3.1 # If the plugin requests exactly one privilege, no comparison is performed. if len(plugin_requested) == 1: print("[!] Vulnerability Triggered: Skipping comparison for single privilege.") return True # Normal comparison for other cases (which might also be flawed) return user_approved == plugin_requested def check_privileges_fixed(user_approved, plugin_requested): # Simulate the patched logic return user_approved == plugin_requested # Scenario: User approves 'read', but plugin requests 'write' user_privs = {'read'} malicious_plugin_privs = {'write'} print("Testing Vulnerable Version:") if check_privileges_vulnerable(user_privs, malicious_plugin_privs): print(f"[+] Plugin installed with unauthorized privileges: {malicious_plugin_privs}") else: print("[-] Installation blocked.") print("\nTesting Fixed Version:") if check_privileges_fixed(user_privs, malicious_plugin_privs): print(f"[+] Plugin installed.") else: print("[-] Installation blocked.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-33997", "sourceIdentifier": "[email protected]", "published": "2026-03-31T03:15:57.523", "lastModified": "2026-04-03T17:23:21.307", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Moby is an open source container framework. Prior to version 29.3.1, a security vulnerability has been detected that allows plugins privilege validation to be bypassed during docker plugin install. Due to an error in the daemon's privilege comparison logic, the daemon may incorrectly accept a privilege set that differs from the one approved by the user. Plugins that request exactly one privilege are also affected, because no comparison is performed at all. This issue has been patched in version 29.3.1."}, {"lang": "es", "value": "Moby es un framework de contenedor de código abierto. Antes de la versión 29.3.1, se ha detectado una vulnerabilidad de seguridad que permite omitir la validación de privilegios de los plugins durante docker plugin install. Debido a un error en la lógica de comparación de privilegios del demonio, este puede aceptar incorrectamente un conjunto de privilegios que difiere del aprobado por el usuario. Los plugins que solicitan exactamente un privilegio también se ven afectados, porque no se realiza ninguna comparación en absoluto. Este problema ha sido parcheado en la versión 29.3.1."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N", "baseScore": 6.8, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.6, "impactScore": 5.2}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-193"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:mobyproject:moby:*:*:*:*:*:*:*:*", "versionEndExcluding": "29.3.1", "matchCriteriaId": "B2D4D20A-9812-42C7-AB9B-2B63DA90EB21"}]}]}], "references": [{"url": "https://github.com/moby/moby/releases/tag/docker-v29.3.1", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/moby/moby/security/advisories/GHSA-pxq6-2prw-chj9", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}