CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-73843

CVE-2026-73843: Critical Missing Authentication and Privilege Escalation in OpenChoreo Cluster Gateway

Alon Barad
Alon Barad
Software Engineer

Sep 3, 2026·7 min read·6 visits

Executive Summary (TL;DR)

OpenChoreo allowed unauthenticated remote command execution and API proxying in target Kubernetes clusters due to sharing public and private ports on the same gateway multiplexer.

Prior to versions 1.0.2 and 1.1.2, OpenChoreo's cluster gateway combined public agent traffic and administrative control-plane APIs on a single TCP port (8443). Exposing this port allowed external unauthenticated actors to access sensitive proxy and execution interfaces.

Vulnerability Overview

OpenChoreo is a developer platform for Kubernetes that coordinates remote tenant workloads. The platform establishes secure communication channels using remote agents deployed in target data-plane clusters. These agents initiate persistent WebSocket links to a centralized cluster-gateway component. The gateway must expose a public TCP port to allow inbound traffic from geographically separated Kubernetes clusters.

The primary architectural flaw in OpenChoreo prior to versions 1.0.2 and 1.1.2 is the concentration of multi-sphere routes on a single public-facing socket. The cluster-gateway initialized a unified TCP listener to serve both agent connectivity and administrative operations. By exposing this gateway port to the network to facilitate agent connections, administrative control-plane endpoints were exposed to the same network audience.

This Exposure of Resource to Wrong Sphere (CWE-668) results in complete authentication bypass for critical operations (CWE-306). Remote unauthenticated network actors situated on adjacent network paths can leverage these administrative paths to interact with the managed data-plane clusters. The vulnerability manifests primarily on TCP port 8443, exposing the cluster gateway to complete unauthorized takeover.

Root Cause Analysis

The root cause of CVE-2026-73843 lies in the unified HTTP routing multiplexer implementation inside the cluster-gateway subsystem. The Go application utilized a single http.ServeMux to handle incoming HTTP requests on the designated public gateway port (defaulting to 8443). The multiplexer registered public-facing WebSocket routes (/ws) alongside highly privileged control plane and proxy endpoints (/api/*) on the same listener configuration.

The platform's logical boundaries dictate that data-plane agents connect to /ws, while administrative services query the /api/* endpoints. Because the multiplexer evaluated all request paths against the same socket, there was no logical separation at the network layer. Consequently, any network interface permitted to send WebSocket initiation packets could also issue HTTP requests targeting the /api/ routing paths.

Furthermore, the internal handlers for /api/proxy/ and /api/exec/ lacked any software-level authentication checks, cryptographic handshakes, or role-based access validation. This structural omission assumed that any traffic reaching these paths originated from within a trusted perimeter. When multi-cluster deployments forced the exposure of port 8443 to the wider network, this trust assumption failed, leading to direct access to high-privilege execution vectors.

Code Analysis & Patch Inspection

Prior to the application of the remediation patch, the initialization of the HTTP server inside internal/cluster-gateway/server.go was configured to use a single router instance. Review of the vulnerable codebase shows that the Go HTTP handler routed traffic to /ws, /api/proxy/, /api/exec/, and /api/wirelogs/ through a single server instance. The registration of routes on the unified multiplexer did not implement any middleware validation or authorization filters.

// VULNERABLE CODE - internal/cluster-gateway/server.go
mux := http.NewServeMux()
mux.HandleFunc("/ws", s.handleWebSocket)          // Public agent endpoint
mux.HandleFunc("/api/proxy/", s.handleHTTPProxy)   // Unauthenticated HTTP proxy to Kubernetes API
mux.HandleFunc("/api/exec/", s.handleExec)         // Unauthenticated WebSocket remote command execution
mux.HandleFunc("/api/wirelogs/", s.handleWirelogs) // Unauthenticated network monitoring flow stream

The fix introduced in Pull Request #4122 establishes strict boundary isolation by instantiating two discrete Go http.Server instances running on separate sockets. The public-facing port (default 8443) is mapped strictly to a public multiplexer serving the /ws agent endpoint. A secondary, private socket (default 8444) is bound exclusively to the internal control-plane network to serve the administrative API endpoints.

// PATCHED CODE - internal/cluster-gateway/server.go
// Public listener: restricted exclusively to remote agent WebSockets
publicMux := http.NewServeMux()
publicMux.HandleFunc("/ws", s.handleWebSocket)
 
// Private internal listener: hosts caller-facing administrative endpoints
internalMux := http.NewServeMux()
internalMux.HandleFunc("/api/proxy/", s.handleHTTPProxy)
internalMux.HandleFunc("/api/exec/", s.handleExec)
internalMux.HandleFunc("/api/wirelogs/", s.handleWirelogs)
 
// Parallel goroutines are initialized to spin up both servers independently
s.httpServer = &http.Server{
    Addr:    fmt.Sprintf(":%d", s.config.Port),
    Handler: publicMux,
}
s.internalServer = &http.Server{
    Addr:    fmt.Sprintf(":%d", s.config.InternalPort), // Defaults to 8444
    Handler: internalMux,
}

By ensuring that the internal port 8444 is never exposed to external traffic, this architectural change mitigates the vulnerability. Any attempt to reach /api/proxy/ or /api/exec/ on the public-facing port 8443 now results in a 404 Not Found response, as the public multiplexer contains no routing rules for those paths.

Exploitation Methodology

Exploitation of CVE-2026-73843 is straightforward and does not require complex payloads or multi-stage bypasses. An attacker with network access to the exposed gateway port (typically 8443) first validates the presence of the endpoint by checking the TLS certificate or path behavior. Because the administrative routing paths are fully exposed on the same port, the attacker can interact with the data-plane's Kubernetes API.

To proxy arbitrary HTTP commands directly to target Kubernetes services, the attacker issues standard HTTP requests targeting the /api/proxy/ prefix. The gateway transparently proxies the incoming request to the target cluster API using the service account credentials of the control plane. This enables the unauthenticated attacker to list, create, modify, or delete Kubernetes resources across all tenant namespaces.

POST /api/proxy/namespaces/default/services HTTP/1.1
Host: target-gateway.example.com:8443
Content-Type: application/json
Connection: close
 
{
  "apiVersion": "v1",
  "kind": "Service",
  "metadata": {
    "name": "attacker-controlled-service"
  },
  "spec": {
    "ports": [{"port": 80, "targetPort": 80}],
    "selector": {"app": "vulnerable-app"}
  }
}

Additionally, the /api/exec/ endpoint allows the establishing of a raw terminal session inside running workload containers. An attacker initiates a standard WebSocket handshake targeting the vulnerable endpoint, appending target namespace, pod, and container parameters to the query string. The gateway upgrades the connection, allowing the attacker to send stdin frames and capture stdout/stderr, establishing direct command execution capabilities inside workload pods.

Impact Assessment

The impact of successful exploitation is critical, leading to complete control-plane and data-plane compromise. By utilizing the /api/proxy/ endpoint, attackers inherit the service account permissions of the cluster-gateway. This often translates to cluster-admin or near cluster-admin privileges within the target Kubernetes environments, enabling the manipulation of deployments, secrets, and configurations.

Through the /api/exec/ endpoint, attackers achieve remote execution inside running workload pods. This execution vector bypasses traditional authentication logs and audit trails on the Kubernetes API server, as the gateway processes and routes the execution stream directly. Attackers can leverage this foothold to retrieve secrets, run malware, or pivot laterally within the cluster network.

Despite the effectiveness of the port-separation patch, administrators must evaluate the re-exploitation potential stemming from misconfigurations. If an Ingress controller, service mesh, or Kubernetes Service object exposes port 8444 to the public internet, the unauthenticated endpoints will become exposed again. Furthermore, the internal endpoints still lack application-level authentication, meaning any compromised container within the cluster network can communicate with port 8444 of the gateway to execute operations.

Detection & Remediation Guidance

Mitigation of CVE-2026-73843 requires upgrading OpenChoreo to versions 1.0.2, 1.1.2, or later. These releases separate the public agent-facing port (8443) from the internal administrative port (8444). Operators must verify that internal network interfaces do not map public-facing Ingress controllers or LoadBalancers to target port 8444 of the cluster-gateway deployment.

If immediate upgrading is not feasible, operators must implement network-level access control lists. A strict Kubernetes NetworkPolicy must be applied to prevent external or unauthorized in-cluster pods from reaching the gateway pods on port 8443 (or port 8444 after upgrading). Access to the gateway's internal ports should be restricted exclusively to verified control-plane components like openchoreo-api and controller-manager.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: restrict-gateway-internal
  namespace: openchoreo-control-plane
spec:
  podSelector:
    matchLabels:
      app: cluster-gateway
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: openchoreo-api
    - podSelector:
        matchLabels:
          app: controller-manager
    ports:
    - protocol: TCP
      port: 8444

To detect exploitation attempts on legacy systems, security teams should configure Intrusion Detection Systems (IDS) to monitor network traffic for HTTP request strings containing administrative endpoints on public interfaces. Network signatures must flag any request targeting /api/exec/ or /api/proxy/ over the public gateway port.

Official Patches

OpenChoreo AdvisoryOfficial Security Advisory

Fix Analysis (1)

Technical Appendix

CVSS Score
9.6/ 10
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
0.29%
Top 79% most exploited

Affected Systems

OpenChoreo Control PlaneOpenChoreo Cluster Gateway

Affected Versions Detail

Product
Affected Versions
Fixed Version
OpenChoreo
OpenChoreo
< 1.0.21.0.2
OpenChoreo
OpenChoreo
>= 1.1.0, < 1.1.21.1.2
AttributeDetail
CWE IDCWE-306, CWE-668
Attack VectorAdjacent Network
CVSS Severity9.6 (Critical)
EPSS Score0.00291
Exploit StatusNone
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1005Data from Local System
Collection
T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-306
Missing Authentication for Critical Function

The software does not perform any authentication for critical functionality.

Vulnerability Timeline

Preparatory structural commits landed in repository
2026-06-15
Security patch implemented in Pull Request #4122
2026-07-08
GHSA-qh9r-j7rp-4x2m published by OpenChoreo security team
2026-08-13
CVE-2026-73843 published
2026-08-13

References & Sources

  • [1]GitHub Security Advisory GHSA-qh9r-j7rp-4x2m
  • [2]Remediation Pull Request #4122
  • [3]Core Remediation Commit

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 3 hours ago•CVE-2026-73841
8.8

CVE-2026-73841: Broken Object Level Authorization (BOLA) in OpenChoreo Container Exec and Wirelogs Endpoints

An Insecure Direct Object Reference (IDOR) / Broken Object Level Authorization (BOLA) vulnerability in OpenChoreo allows authenticated users with project-level permissions to bypass tenant boundaries. By manipulating client-controlled query parameters, an attacker can execute arbitrary commands inside Kubernetes containers or view sensitive communication streams of resources belonging to other, highly privileged projects within the same namespace.

Alon Barad
Alon Barad
2 views•7 min read
•about 4 hours ago•CVE-2026-73840
5.3

CVE-2026-73840: Unauthenticated Webhook Signature Bypass and Git-Provider Confusion in OpenChoreo

An authentication bypass and logical confusion vulnerability exists in the OpenChoreo Kubernetes developer platform webhook ingestion system. By exploiting a combination of git-provider spoofing, a missing signature validation requirement on Bitbucket webhooks, and a lack of source-host mapping checks, unauthenticated network attackers can trigger unauthorized builds on arbitrary repositories.

Amit Schendel
Amit Schendel
3 views•5 min read
•about 5 hours ago•CVE-2026-73667
8.8

CVE-2026-73667: Remote Code Execution via OS Command Injection in OpenChoreo Workflow Plane

An authenticated remote code execution vulnerability exists in the OpenChoreo developer platform's Workflow Plane templates. The flaw occurs due to server-side string interpolation of workflow parameters into inline shell scripts and insecure shell parameter expansion. This allows low-privileged attackers to execute arbitrary shell commands inside privileged containers, leading to potential host privilege escalation.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 5 hours ago•CVE-2026-84366
7.4

CVE-2026-84366: Plaintext AWS Credential Exposure in Scrapy S3DownloadHandler

A security vulnerability in Scrapy's Amazon S3 download handler allows unencrypted transmission of sensitive AWS credentials and session tokens over plaintext HTTP. Prior to version 2.17.0, the handler defaulted to HTTP instead of HTTPS when translating s3:// URIs into standard S3 API requests, unless explicitly configured otherwise. This allows network eavesdroppers to intercept credentials and perform active Man-in-the-Middle (MITM) attacks.

Amit Schendel
Amit Schendel
4 views•5 min read
•about 7 hours ago•CVE-2026-62674
9.0

CVE-2026-62674: Shared Agent Bundle Overwrite Leads to Authenticated Runner Remote Code Execution in omnigent

A critical validation flaw in the backend of the omnigent framework prior to version 0.3.0 allows authenticated users to overwrite the global shared agent bundle, leading to remote code execution on the runner process through malicious stdio MCP server configurations.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 8 hours ago•CVE-2026-63311
6.9

CVE-2026-63311: Server-Side Request Forgery and DNS Rebinding in Natural Language Toolkit (NLTK)

A vulnerability in the Natural Language Toolkit (NLTK) before version 3.10.0 allowed attackers to bypass SSRF filters via DNS resolution failures and DNS rebinding. By exploiting these weaknesses, unauthenticated remote attackers could coerce hosting systems into scanning internal networks or accessing sensitive cloud metadata endpoints.

Amit Schendel
Amit Schendel
3 views•6 min read