{"id":"CVE-2026-62284","kind":"vulnerability","aliases":["CVE-2026-62284"],"related":[],"title":"OSAC operator: Kubeconfig Secrets let attackers run commands in console proxy","description":"OSAC operator is a Kubernetes operator. In the affected revision identified as 8220502, the `console-proxy` `RemoteConfigResolver` parses Kubernetes Secret kubeconfig data with `clientcmd.RESTConfigFromKubeConfig` without sanitizing the resulting `rest.Config`. An attacker who can create or modify a Secret labeled `osac.openshift.io/remote-cluster-kubeconfig`: \"true\" in a namespace where the proxy's RoleBinding grants Secret read access can supply `users[].user.exec`. When `rest.TransportFor` builds the HTTP transport for an upstream WebSocket connection, client-go invokes that exec credential plugin, spawning an arbitrary process as the osac-`console-proxy` service account inside the pod. Attacker-controlled `clusters[].server` also enables server-side request forgery from the proxy pod. Remote and auto VM cluster modes are affected, with auto the default; exclusively `local` mode does not read kubeconfig Secrets and is unaffected. The credential-plugin execution path is patched in commit 7e4222b; that patch does not address the described server-address SSRF path.","summary":"The OSAC operator's console-proxy parses kubeconfig Secrets without sanitizing them, so anyone who can create or modify a labeled Secret in a namespace the proxy can read can make it execute an arbitrary process. The same Secret can point the proxy at attacker-chosen server addresses, enabling server-side request forgery from the proxy pod.","severity":"high","cvss":8.6,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["console-proxy","infrastructure","kubernetes","openshift","osac"],"not_affected_if":["local-vm-mode"],"how_to_check":"- Check whether the console-proxy runs in `remote` or `auto` VM cluster mode; `local`-only mode is not affected.\n- Find Secrets labeled `osac.openshift.io/remote-cluster-kubeconfig: \"true\"` and the RoleBindings that grant the proxy Secret read access in those namespaces.\n- Confirm the OSAC operator build is revision `8220502` or otherwise predates commit `7e4222b`.","fix":"- Credential-plugin execution path: patched in commit `7e4222b`.\n- Server-address SSRF path: not addressed by that patch; no fix stated in the sources.","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:27+00:00","updated_at":"2026-10-30T20:26:27+00:00","category":"infrastructure","confidence":0.8,"triage":{"at":"2026-10-30T20:26:27Z","model":"claude-haiku-5-5","output":{"fix":"- Credential-plugin execution path: patched in commit `7e4222b`.\n- Server-address SSRF path: not addressed by that patch; no fix stated in the sources.","reach":"network","title":"OSAC operator: Kubeconfig Secrets let attackers run commands in console proxy","impact":"high","summary":"The OSAC operator's console-proxy parses kubeconfig Secrets without sanitizing them, so anyone who can create or modify a labeled Secret in a namespace the proxy can read can make it execute an arbitrary process. The same Secret can point the proxy at attacker-chosen server addresses, enabling server-side request forgery from the proxy pod.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["kubernetes","openshift","osac","console-proxy"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"Arbitrary commands run as proxy service account; internal requests forged","analyst_note":"Confirm whether a fix exists for the server-address SSRF path; the NVD entry and commit 7e4222b are the only sources.","how_to_check":"- Check whether the console-proxy runs in `remote` or `auto` VM cluster mode; `local`-only mode is not affected.\n- Find Secrets labeled `osac.openshift.io/remote-cluster-kubeconfig: \"true\"` and the RoleBindings that grant the proxy Secret read access in those namespaces.\n- Confirm the OSAC operator build is revision `8220502` or otherwise predates commit `7e4222b`.","plain_action":"","needs_analyst":true,"not_affected_if":["local-vm-mode"],"who_is_affected":"Exposure requires the console-proxy to run in remote or auto VM cluster mode and a RoleBinding that gives it Secret read access in a namespace where someone can write labeled Secrets. Clusters that run only in local mode do not read kubeconfig Secrets and can skip this.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.001407,"input_tokens":4399,"output_tokens":1934,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-62284':14A,17A '/remote-cluster-kubeconfig':127C '7e4222':228C '8220502':97C 'access':140C 'account':175C 'address':74B,234C,239C 'affect':93C,202C 'also':184C 'anyon':39B 'arbitrari':60B,166C 'attack':6A,71B,116C,180C 'attacker-chosen':70B 'attacker-control':179C 'auto':197C,204C 'b':229C 'build':147C 'chosen':72B 'client':157C 'client-go':156C 'clientcmd.restconfigfromkubeconfig':109C 'cluster':182C,199C 'command':8A 'commit':227C 'connect':155C 'consol':10A,19B,30B,100C,172C 'console-proxi':18B,29B,99C,171C 'control':181C 'creat':42B,119C 'credenti':162C,220C 'credential-plugin':219C 'cve':12A,15A 'data':107C 'default':206C 'describ':236C 'enabl':75B,185C 'exclus':207C 'exec':161C 'execut':58B,222C 'forgeri':80B,190C 'go':158C 'grant':137C 'http':149C 'identifi':95C 'infrastructur':21B 'insid':176C 'invok':159C 'kubeconfig':3A,33B,106C,213C 'kubernet':22B,89C,104C 'label':46B,124C 'let':5A 'local':208C 'make':56B 'mode':200C,209C 'modifi':44B,121C 'namespac':50B,131C 'openshift':23B 'oper':2A,27B,86C,90C 'osac':1A,24B,26B,85C,170C 'osac.openshift.io':126C 'osac.openshift.io/remote-cluster-kubeconfig':125C 'pars':32B,103C 'patch':225C,231C 'path':223C,241C 'plugin':163C,221C 'pod':84B,178C,194C 'point':66B 'process':61B,167C 'proxi':11A,20B,31B,52B,68B,83B,101C,134C,173C,193C 'read':54B,139C,212C 'remot':195C 'remoteconfigresolv':102C 'request':79B,189C 'rest.config':114C 'rest.transportfor':146C 'result':113C 'revis':94C 'rolebind':136C 'run':7A 'sanit':36B,111C 'secret':4A,34B,47B,64B,105C,123C,138C,214C 'server':73B,77B,183C,187C,238C 'server-address':237C 'server-sid':76B,186C 'servic':174C 'side':78B,188C 'spawn':164C 'ssrf':240C 'suppli':142C 'transport':150C 'true':128C 'unaffect':217C 'upstream':153C 'user':143C 'user.exec':144C 'vm':198C 'websocket':154C 'without':35B,110C","nicknames":[],"mitigations":[],"who_affected":"Exposure requires the console-proxy to run in remote or auto VM cluster mode and a RoleBinding that gives it Secret read access in a namespace where someone can write labeled Secrets. Clusters that run only in local mode do not read kubeconfig Secrets and can skip this.","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:N/SI:N/SA:N/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-62284","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-62284","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"}