{"id":"CVE-2026-9799","kind":"vulnerability","aliases":["CVE-2026-9799","GHSA-w3p3-7cjg-vgfw"],"related":[],"title":"Keycloak allows unauthorized access to resources via uma permission ticket bypass","description":"### Description\nA flaw was found in org.keycloak.authorization. An authenticated user with a granted User-Managed Access (UMA) permission ticket for one resource can exploit this by using a specific permission request prefix to bypass per-resource access control. This allows the user to gain unauthorized access to all resources of that type within the same resource server, even if they do not have a ticket for those specific resources. This vulnerability requires the resource server to be configured in PERMISSIVE policy enforcement mode and affects typed resources with ownerManagedAccess enabled, where no explicit policy protects the resource type. The primary consequence is unauthorized information disclosure or modification of resources.","summary":"Keycloak's authorization code lets an authenticated user with a UMA permission ticket for one resource reach all resources of that type on the same resource server. The result is unauthorized reading or modification of resources the user was never granted.","severity":"medium","cvss":4.6,"epss":0.00294,"exploited":false,"exploited_at":null,"products":[{"name":"org.keycloak:keycloak-services","fixed":["26.6.4"],"affected":"< 26.6.4","ecosystem":"maven"},{"name":"redhat build of keycloak","fixed":["26.4.13"],"affected":">= 26.4, < 26.4.13","ecosystem":"vendor"},{"name":"redhat build of keycloak","fixed":["26.6.4"],"affected":">= 26.6, < 26.6.4","ecosystem":"vendor"}],"ecosystems":["maven","vendor"],"tags":["cwe-639","java","keycloak","package","self-hosted","uma"],"not_affected_if":["enforcing-policy-mode","explicit-policy-on-resource-type","no-uma-resources"],"how_to_check":"- Check the Keycloak version with `kc.sh --version` or the image tag, and compare it to `26.6.4`.\n- In the admin console, look at the resource server's policy enforcement mode; the flaw needs `PERMISSIVE`.\n- Check whether typed resources have `ownerManagedAccess` enabled with no explicit policy protecting that resource type.","fix":"- Keycloak `org.keycloak:keycloak-services` moves to `26.6.4` (fixed version from the advisory product range; affected below `26.6.4`).","status":"open","published_at":"2026-06-25T17:17:04+00:00","first_seen_at":"2026-10-29T16:39:02+00:00","triaged_at":"2026-10-29T16:39:47+00:00","updated_at":"2026-10-29T16:56:32+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-29T16:39:47Z","model":"claude-haiku-5-5","output":{"fix":"- Keycloak `org.keycloak:keycloak-services` moves to `26.6.4` (fixed version from the advisory product range; affected below `26.6.4`).","reach":"network","title":"Keycloak: UMA permission ticket bypass exposes other resources of same type","impact":"medium","summary":"Keycloak's authorization code lets an authenticated user with a UMA permission ticket for one resource reach all resources of that type on the same resource server. The result is unauthorized reading or modification of resources the user was never granted.","audience":"businesses","category":"package","nicknames":[],"who_cares":["keycloak","self-hosted","uma","java"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"authenticated user reads or changes other resources of same type","analyst_note":"","how_to_check":"- Check the Keycloak version with `kc.sh --version` or the image tag, and compare it to `26.6.4`.\n- In the admin console, look at the resource server's policy enforcement mode; the flaw needs `PERMISSIVE`.\n- Check whether typed resources have `ownerManagedAccess` enabled with no explicit policy protecting that resource type.","plain_action":"","needs_analyst":false,"not_affected_if":["enforcing-policy-mode","no-uma-resources","explicit-policy-on-resource-type"],"who_is_affected":"Only Keycloak deployments that use UMA authorization services with a resource server in PERMISSIVE policy enforcement mode, where typed resources have ownerManagedAccess enabled and no explicit policy covers that resource type. Deployments on enforcing mode, or without UMA-managed typed resources, are not exposed by this description.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000747,"input_tokens":4339,"output_tokens":627,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,21A '-639':36B '-9799':14A,22A '7cjg':18A 'access':4A,101C,123C,132C 'affect':171C 'allow':2A,126C 'authent':50B,93C 'author':46B 'build':28A,32A 'bypass':11A,119C 'code':47B 'configur':164C 'consequ':187C 'control':124C 'cve':12A,20A 'cwe':35B 'descript':85C 'disclosur':191C 'enabl':176C 'enforc':168C 'even':144C 'explicit':179C 'exploit':109C 'flaw':87C 'found':89C 'gain':130C 'ghsa':16A 'ghsa-w3p3-7cjg-vgfw':15A 'grant':84B,97C 'host':42B 'inform':190C 'java':37B 'keycloak':1A,25A,30A,34A,38B,44B 'keycloak-services':24A 'let':48B 'manag':100C 'mode':169C 'modif':77B,193C 'never':83B 'of':29A,33A 'one':58B,106C 'org.keycloak':23A 'org.keycloak.authorization':91C 'ownermanagedaccess':175C 'packag':39B 'per':121C 'per-resourc':120C 'permiss':9A,55B,103C,115C,166C 'polici':167C,180C 'prefix':117C 'primari':186C 'protect':181C 'reach':60B 'read':75B 'redhat':27A,31A 'request':116C 'requir':158C 'resourc':6A,59B,62B,69B,79B,107C,122C,135C,142C,155C,160C,173C,183C,195C 'result':72B 'self':41B 'self-host':40B 'server':70B,143C,161C 'services':26A 'specif':114C,154C 'ticket':10A,56B,104C,151C 'type':65B,138C,172C,184C 'uma':8A,43B,54B,102C 'unauthor':3A,74B,131C,189C 'use':112C 'user':51B,81B,94C,99C,128C 'user-manag':98C 'vgfw':19A 'via':7A 'vulner':157C 'w3p3':17A 'within':139C","nicknames":[],"mitigations":[],"who_affected":"Only Keycloak deployments that use UMA authorization services with a resource server in PERMISSIVE policy enforcement mode, where typed resources have ownerManagedAccess enabled and no explicit policy covers that resource type. Deployments on enforcing mode, or without UMA-managed typed resources, are not exposed by this description.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-06-25T17:17:04+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-w3p3-7cjg-vgfw","url":"https://github.com/advisories/GHSA-w3p3-7cjg-vgfw","severity":"medium","published_at":"2026-10-29T16:37:57+00:00","modified_at":"2026-10-29T16:37:59+00:00","first_seen_at":"2026-10-29T16:39:02+00:00","fetched_at":"2026-10-29T16:39:02+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-9799","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-9799","severity":null,"published_at":"2026-06-25T17:17:04+00:00","modified_at":"2026-07-01T18:37:39+00:00","first_seen_at":"2026-10-29T16:56:32+00:00","fetched_at":"2026-10-29T16:56:32+00:00","note":null}],"documents":[{"id":17809,"url":"https://api.github.com/repos/keycloak/keycloak/security-advisories/GHSA-w3p3-7cjg-vgfw","title":"Maintainer's advisory: api.github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: api.github.com"},{"id":17810,"url":"https://github.com/keycloak/keycloak/security/advisories/GHSA-w3p3-7cjg-vgfw","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: github.com"},{"id":18033,"url":"https://access.redhat.com/errata/RHSA-2026:30049","title":"Third-party advisory: access.redhat.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18034,"url":"https://access.redhat.com/errata/RHSA-2026:30050","title":"Third-party advisory: access.redhat.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18035,"url":"https://access.redhat.com/errata/RHSA-2026:30083","title":"Third-party advisory: access.redhat.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18036,"url":"https://access.redhat.com/errata/RHSA-2026:30084","title":"Third-party advisory: access.redhat.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18064,"url":"https://access.redhat.com/security/cve/CVE-2026-9799","title":"Vendor advisory: access.redhat.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":18065,"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2482471","title":"Vendor advisory: bugzilla.redhat.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: bugzilla.redhat.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}