{"id":"CVE-2026-61850","kind":"vulnerability","aliases":["CVE-2026-61850"],"related":[],"title":"Kargo: project RBAC API lets delegated users escalate to project admin","description":"Kargo manages and automates the promotion of software artifacts. From 0.6.0 until 1.8.14, 1.9.9, and 1.10.8, two authorization flaws in the `project-scoped RBAC API` let an authenticated user with delegated permission to manage a Project's `Roles` or `ServiceAccounts` confer permissions exceeding the user's own. A user authorized to edit `Roles` can create, replace, or add rules granting permissions not held by the user; a user authorized to edit a Role's ServiceAccount can bind an identity, including the user's own, to a more powerful Role. A Kargo Role comprises a `ServiceAccount, Role, and RoleBinding` in the Project namespace. Changes are written using the API server's broadly privileged credentials after only a coarse resource-kind edit check, rather than checking each permission being conferred. This permits escalation to Project-administrator access, disclosure of `Project Secrets` and credentials, and modification or deletion of Project resources. Stolen Git, container-registry, or Helm-registry credentials can extend confidentiality and integrity impacts to those external systems. Escalation remains limited to Projects where the attacker already has RBAC-management delegation and does not itself grant cluster-wide or cross-Project access. Default non-administrator roles do not permit these operations; exploitation requires an `administrator-created custom role` granting the relevant permissions and control of an account assigned that role. This issue is fixed in versions 1.8.14, 1.9.9, and 1.10.8.","summary":"Kargo, a tool that automates promotion of software artifacts, has two authorization flaws in its project-scoped RBAC API. An authenticated user with delegated permission to manage a Project's Roles or ServiceAccounts can grant themselves permissions they do not hold, reaching project-administrator access, Project Secrets and stored Git, container-registry or Helm-registry credentials.","severity":"critical","cvss":9.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["infrastructure","kargo","kubernetes","self-hosted"],"not_affected_if":["default-roles-only","versions-patched"],"how_to_check":"- Check the installed Kargo version against the affected ranges (0.6.0 up to 1.8.14, 1.9.9 and 1.10.8).\n- Review custom Kargo roles for grants of Roles or ServiceAccounts edit permissions.\n- Check which accounts are assigned those custom roles.","fix":"- Upgrade to `1.8.14`, `1.9.9` or `1.10.8`, matching your release line.","status":"open","published_at":"2026-10-30T20:17:11+00:00","first_seen_at":"2026-10-30T20:25:38+00:00","triaged_at":"2026-10-30T20:26:06+00:00","updated_at":"2026-10-30T20:26:06+00:00","category":"infrastructure","confidence":0.8,"triage":{"at":"2026-10-30T20:26:06Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade to `1.8.14`, `1.9.9` or `1.10.8`, matching your release line.","reach":"network","title":"Kargo: project RBAC API lets delegated users escalate to project admin","impact":"high","summary":"Kargo, a tool that automates promotion of software artifacts, has two authorization flaws in its project-scoped RBAC API. An authenticated user with delegated permission to manage a Project's Roles or ServiceAccounts can grant themselves permissions they do not hold, reaching project-administrator access, Project Secrets and stored Git, container-registry or Helm-registry credentials.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["kargo","kubernetes","self-hosted"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"attacker becomes project admin and reads all project secrets","analyst_note":"Confirm the affected ranges and fixed versions against the Kargo release notes or advisory; the NVD entry alone was the source.","how_to_check":"- Check the installed Kargo version against the affected ranges (0.6.0 up to 1.8.14, 1.9.9 and 1.10.8).\n- Review custom Kargo roles for grants of Roles or ServiceAccounts edit permissions.\n- Check which accounts are assigned those custom roles.","plain_action":"","needs_analyst":true,"not_affected_if":["default-roles-only","versions-patched"],"who_is_affected":"Only installations that have created custom Kargo roles granting Roles or ServiceAccounts edit permissions, and accounts assigned those roles, are exposed. Default non-administrator roles do not permit these operations, and escalation stays limited to the Projects where the delegation exists.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000776,"input_tokens":4514,"output_tokens":649,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-61850':14A,17A '0.6.0':94C '1.10.8':99C,321C '1.8.14':96C,318C '1.9.9':97C,319C 'access':70B,221C,281C 'account':308C 'add':142C 'admin':11A 'administr':69B,220C,285C,296C 'administrator-cr':295C 'alreadi':263C 'api':4A,43B,109C,192C 'artifact':32B,92C 'assign':309C 'attack':262C 'authent':45B,112C 'author':35B,101C,134C,153C 'autom':28B,87C 'bind':161C 'broad':195C 'chang':187C 'check':206C,209C 'cluster':275C 'cluster-wid':274C 'coars':201C 'compris':177C 'confer':125C,213C 'confidenti':247C 'contain':77B,238C 'container-registri':76B,237C 'control':305C 'creat':139C,297C 'credenti':83B,197C,227C,244C 'cross':279C 'cross-project':278C 'custom':298C 'cve':12A,15A 'default':282C 'deleg':6A,48B,115C,268C 'delet':231C 'disclosur':222C 'edit':136C,155C,205C 'escal':8A,216C,255C 'exceed':127C 'exploit':292C 'extend':246C 'extern':253C 'fix':315C 'flaw':36B,102C 'git':75B,236C 'grant':59B,144C,273C,300C 'held':147C 'helm':81B,242C 'helm-registri':80B,241C 'hold':65B 'host':23B 'ident':163C 'impact':250C 'includ':164C 'infrastructur':18B 'integr':249C 'issu':313C 'kargo':1A,19B,24B,84C,175C 'kind':204C 'kubernet':20B 'let':5A,110C 'limit':257C 'manag':51B,85C,118C,267C 'modif':229C 'namespac':186C 'non':284C 'non-administr':283C 'oper':291C 'permiss':49B,61B,116C,126C,145C,211C,303C 'permit':215C,289C 'power':172C 'privileg':196C 'project':2A,10A,40B,53B,68B,71B,106C,120C,185C,219C,224C,233C,259C,280C 'project-administr':67B,218C 'project-scop':39B,105C 'promot':29B,89C 'rather':207C 'rbac':3A,42B,108C,266C 'rbac-manag':265C 'reach':66B 'registri':78B,82B,239C,243C 'relev':302C 'remain':256C 'replac':140C 'requir':293C 'resourc':203C,234C 'resource-kind':202C 'role':55B,122C,137C,157C,173C,176C,180C,286C,299C,311C 'rolebind':182C 'rule':143C 'scope':41B,107C 'secret':72B,225C 'self':22B 'self-host':21B 'server':193C 'serviceaccount':57B,124C,159C,179C 'softwar':31B,91C 'stolen':235C 'store':74B 'system':254C 'tool':26B 'two':34B,100C 'use':190C 'user':7A,46B,113C,129C,133C,150C,152C,166C 'version':317C 'wide':276C 'written':189C","nicknames":[],"mitigations":[],"who_affected":"Only installations that have created custom Kargo roles granting Roles or ServiceAccounts edit permissions, and accounts assigned those roles, are exposed. Default non-administrator roles do not permit these operations, and escalation stays limited to the Projects where the delegation exists.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T20:17:11+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:L/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-61850","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61850","severity":null,"published_at":"2026-10-30T20:17:11+00:00","modified_at":"2026-10-30T20:17:11+00:00","first_seen_at":"2026-10-30T20:25:38+00:00","fetched_at":"2026-10-30T20:25:38+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}