{"id":"CVE-2026-50240","kind":"vulnerability","aliases":["CVE-2026-50240"],"related":[],"title":"OpenShift Pipelines-as-Code: namespace users can escalate privileges via PipelineRuns","description":"A flaw was found in OpenShift Pipelines-as-Code (PAC). PAC does not verify whether the creator of a Repository custom resource has permission to create PipelineRuns. A namespace user with only Repository and Secret create/delete permissions can cause PAC to execute attacker-controlled PipelineRuns as the auto-provisioned pipeline ServiceAccount, which carries ClusterRole/edit by default. This results in namespace-scoped privilege escalation, enabling Secret read, resource creation/modification/deletion, and potential supply chain injection in CI/CD namespaces.","summary":"OpenShift Pipelines-as-Code does not check whether the creator of a Repository resource may create PipelineRuns. A namespace user with only Repository and Secret create or delete rights can make it run attacker-chosen PipelineRuns as the pipeline ServiceAccount, which has edit rights by default.","severity":"high","cvss":8.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ci-cd","infrastructure","kubernetes","openshift","pipelines-as-code","tekton"],"not_affected_if":["no-namespace-repository-rights","no-pipelines-as-code"],"how_to_check":"Check whether OpenShift Pipelines (operator openshift-pipelines-operator-rh) is installed: 'oc get tektonconfig config -o yaml' and look at legacyPipelineRbac (anything but false means the operator provisions the edit RoleBinding). 'oc get rolebinding openshift-pipelines-edit -n <ns>' shows the edit binding for the pipeline ServiceAccount. Also review who can create Repository (pipelinesascode.tekton.dev) and Secrets in each namespace: 'oc auth can-i create repositories.pipelinesascode.tekton.dev -n <ns> --as <user>'.","fix":"No fixed version published on the Red Hat CVE page as of 2026-11-06. Workaround: set legacyPipelineRbac to false in the TektonConfig custom resource.","status":"open","published_at":"2026-11-06T22:17:58+00:00","first_seen_at":"2026-11-06T22:44:32+00:00","triaged_at":"2026-11-06T22:44:43+00:00","updated_at":"2026-11-06T22:46:06+00:00","category":"infrastructure","confidence":0.75,"triage":{"at":"2026-11-06T22:44:43Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"OpenShift Pipelines-as-Code: namespace users can escalate privileges via PipelineRuns","impact":"high","summary":"OpenShift Pipelines-as-Code does not check whether the creator of a Repository resource may create PipelineRuns. A namespace user with only Repository and Secret create or delete rights can make it run attacker-chosen PipelineRuns as the pipeline ServiceAccount, which has edit rights by default.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["openshift","pipelines-as-code","tekton","kubernetes","ci-cd"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"namespace user escalates to edit rights, reads Secrets, injects CI/CD code","analyst_note":"Check the Red Hat errata and the OpenShift Pipelines release notes for fixed versions and the affected range; the NVD entry lists none.","how_to_check":"unknown","plain_action":"","needs_analyst":true,"not_affected_if":["no-pipelines-as-code","no-namespace-repository-rights"],"who_is_affected":"Teams running OpenShift Pipelines (Pipelines-as-Code) on OpenShift clusters where some namespace users can create Repository resources or Secrets. The attacker needs only namespace-level Repository and Secret permissions, and the escalation reaches Secrets, resources and CI/CD supply chain in that namespace. Clusters without Pipelines-as-Code, or where namespace users cannot create Repository resources, are less exposed.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000732,"input_tokens":4312,"output_tokens":602,"severity_before":"high"},"analyst_status":"done","analyst_note":"Check the Red Hat errata and the OpenShift Pipelines release notes for fixed versions and the affected range; the NVD entry lists none.","search":"'-2026':14A,17A '-50240':15A,18A 'attack':65B,122C 'attacker-chosen':64B 'attacker-control':121C 'auto':128C 'auto-provis':127C 'carri':133C 'caus':117C 'cd':21B 'chain':153C 'check':37B 'chosen':66B 'ci':20B 'ci-cd':19B 'ci/cd':156C 'clusterrole/edit':134C 'code':5A,28B,34B,87C 'control':123C 'creat':46B,56B,104C 'create/delete':114C 'creation/modification/deletion':149C 'creator':40B,95C 'custom':99C 'cve':13A,16A 'default':77B,136C 'delet':58B 'edit':74B 'enabl':145C 'escal':9A,144C 'execut':120C 'flaw':79C 'found':81C 'infrastructur':22B 'inject':154C 'kubernet':23B 'make':61B 'may':45B 'namespac':6A,49B,107C,141C,157C 'namespace-scop':140C 'openshift':1A,24B,30B,83C 'pac':88C,89C,118C 'permiss':102C,115C 'pipelin':3A,26B,32B,70B,85C,130C 'pipelinerun':12A,47B,67B,105C,124C 'pipelines-as-cod':2A,25B,31B,84C 'potenti':151C 'privileg':10A,143C 'provis':129C 'read':147C 'repositori':43B,53B,98C,111C 'resourc':44B,100C,148C 'result':138C 'right':59B,75B 'run':63B 'scope':142C 'secret':55B,113C,146C 'serviceaccount':71B,131C 'suppli':152C 'tekton':29B 'user':7A,50B,108C 'verifi':92C 'via':11A 'whether':38B,93C","nicknames":[],"mitigations":[],"who_affected":"Clusters running Red Hat OpenShift Pipelines with Pipelines-as-Code where some namespace users can create Repository resources and Secrets but are not meant to run pipelines. They can make PAC run their PipelineRuns as the pipeline ServiceAccount, which holds ClusterRole/edit by default, to read Secrets and change or inject into CI/CD resources in that namespace. Clusters without Pipelines-as-Code, or where only trusted users hold Repository create rights, can skip it. Red Hat lists no affected version range on its page, so treat installed versions as potentially affected until Red Hat says otherwise.","tier":"B","verified":{"fix":{"at":"2026-11-06T22:46:06Z","by":"analyst","doc":"https://access.redhat.com/security/cve/CVE-2026-50240","run_id":1936}},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["cicd","high","infrastructure","kubernetes","openshift","pipelinesascode","tekton"],"campaign_type":null,"search_a":"'-2026':14A,17A '-50240':15A,18A 'code':5A 'cve':13A,16A 'escal':9A 'namespac':6A 'openshift':1A 'pipelin':3A 'pipelinerun':12A 'pipelines-as-cod':2A 'privileg':10A 'user':7A 'via':11A","search_b":"'attack':65B 'attacker-chosen':64B 'cd':21B 'check':37B 'chosen':66B 'ci':20B 'ci-cd':19B 'code':28B,34B 'creat':46B,56B 'creator':40B 'default':77B 'delet':58B 'edit':74B 'infrastructur':22B 'kubernet':23B 'make':61B 'may':45B 'namespac':49B 'openshift':24B,30B 'pipelin':26B,32B,70B 'pipelinerun':47B,67B 'pipelines-as-cod':25B,31B 'repositori':43B,53B 'resourc':44B 'right':59B,75B 'run':63B 'secret':55B 'serviceaccount':71B 'tekton':29B 'user':50B 'whether':38B","search_c":"'attack':122C 'attacker-control':121C 'auto':128C 'auto-provis':127C 'carri':133C 'caus':117C 'chain':153C 'ci/cd':156C 'clusterrole/edit':134C 'code':87C 'control':123C 'creat':104C 'create/delete':114C 'creation/modification/deletion':149C 'creator':95C 'custom':99C 'default':136C 'enabl':145C 'escal':144C 'execut':120C 'flaw':79C 'found':81C 'inject':154C 'namespac':107C,141C,157C 'namespace-scop':140C 'openshift':83C 'pac':88C,89C,118C 'permiss':102C,115C 'pipelin':85C,130C 'pipelinerun':105C,124C 'pipelines-as-cod':84C 'potenti':151C 'privileg':143C 'provis':129C 'read':147C 'repositori':98C,111C 'resourc':100C,148C 'result':138C 'scope':142C 'secret':113C,146C 'serviceaccount':131C 'suppli':152C 'user':108C 'verifi':92C 'whether':93C","first_public_at":"2026-11-06T22:17:58+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","cvss_by":"secalert@redhat.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-50240","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-50240","severity":null,"published_at":"2026-11-06T22:17:58+00:00","modified_at":"2026-11-06T22:17:58+00:00","first_seen_at":"2026-11-06T22:44:32+00:00","fetched_at":"2026-11-06T22:44:32+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-50240:1936","url":"https://access.redhat.com/security/cve/CVE-2026-50240","severity":null,"published_at":"2026-11-06T22:46:06+00:00","modified_at":"2026-11-06T22:46:06+00:00","first_seen_at":"2026-11-06T22:46:06+00:00","fetched_at":"2026-11-06T22:46:06+00:00","note":"Red Hat CVE page read: no fix or version range listed; mitigation is legacyPipelineRbac=false in TektonConfig (deleting the openshift-pipelines-edit RoleBinding is not enough, operator recreates it; may break pipelines relying on edit). PAC v0.48.0 release does not mention this CVE. Reporter: Christopher Lusk. No exploitation or PoC found. Affected versions unknown; Red Hat errata would settle it.","cites":["https://access.redhat.com/security/cve/CVE-2026-50240","https://access.redhat.com/security/cve/CVE-2026-50240"]}],"documents":[{"id":90804,"url":"https://access.redhat.com/security/cve/CVE-2026-50240","title":"Red Hat CVE-2026-50240","kind":"advisory","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":90804,"url":"https://access.redhat.com/security/cve/CVE-2026-50240","title":"Red Hat CVE-2026-50240","kind":"advisory","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"mitigation","confidence":null,"note":null}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}