CVE-2026-102340: Missing Authentication and Authorization in Telepresence Traffic Manager gRPC API
Vulnerability ID: CVE-2026-102340
CVSS Score: 8.5
Published: 2026-11-09
Prior to version 2.31.0, the Telepresence Traffic Manager exposed an unauthenticated gRPC API on cluster-internal port 8081 that lacked caller identity verification and Kubernetes RBAC authorization checks. An attacker operating any pod with network access to the Traffic Manager can register a session in an arbitrary managed namespace, establish service intercepts, redirect live production traffic, and exfiltrate the complete container environment of victim workloads, including mounted secrets and service account tokens.
TL;DR
Telepresence versions prior to 2.31.0 expose an unauthenticated and unauthorized gRPC API on the Traffic Manager component (port 8081). Any compromised pod with cluster network reachability can invoke ArriveAsClient and CreateIntercept to hijack ingress traffic and steal container environment secrets across arbitrary namespaces. Upgrading to 2.31.0 and configuring security.authentication.mode to enforcing resolves the issue.
⚠️ Exploit Status: POC
Technical Details
- CVE ID: CVE-2026-102340 (GHSA-j8j4-rw65-56r6)
- Weakness Class: CWE-306 (Missing Authentication) & CWE-862 (Missing Authorization)
- CVSS v3.1 Score: 8.5 High (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N)
- Attack Vector: Cluster-internal network access to Traffic Manager gRPC port 8081
- Security Impact: Cross-namespace traffic hijacking and full container environment/secret exfiltration
- EPSS Score: 0.28% (20.78th percentile)
- CISA KEV Status: Not Listed
- Fixed Version: v2.31.0 (with security.authentication.mode=enforcing)
Affected Systems
- Telepresence Traffic Manager
- Telepresence Traffic Agent
- Telepresence CLI
- Kubernetes and OpenShift clusters running Telepresence < 2.31.0
- telepresence: < 2.31.0 (Fixed in:
2.31.0)
Code Analysis
Commit: 04ec346
Authenticate traffic-agents to the traffic-manager via Kubernetes TokenReview and audience-bound projected ServiceAccount tokens.
Commit: 6871235
Authorize intercept creation against the caller's RBAC using Kubernetes SubjectAccessReview for pods/portforward.
Commit: 36458b6
Add an authentication mode with opt-in enforcement (disabled, permissive, enforcing) and client bearer token extraction.
@@ -1170,6 +1187,9 @@ func (s *service) CreateIntercept(ctx context.Context, ciReq *rpc.CreateIntercep } if err := s.authorizeIntercept(ctx, namespace, spec); err != nil { + if s.authMode == auth.ModeEnforcing { + return nil, err + } clog.Warnf(ctx, "intercept %q in namespace %s: %v (not enforced)", spec.Name, namespace, err) } @@ -1192,10 +1212,16 @@ func (s *service) CreateIntercept(ctx context.Context, ciReq *rpc.CreateIntercep func (s *service) authorizeIntercept(ctx context.Context, namespace string, spec *rpc.InterceptSpec) error { p := auth.PrincipalFrom(ctx) if p == nil { + if s.authMode == auth.ModeEnforcing { + return errors.Errorf(codes.Unauthenticated, "intercept creation requires an authenticated caller") + } clog.Debugf(ctx, "caller is unauthenticated; skipping intercept authorization") return nil } Mitigation Strategies
- Upgrade Telepresence Traffic Manager, Traffic Agent images, and developer CLI binaries to v2.31.0 or higher.
- Explicitly configure the Traffic Manager authentication mode to 'enforcing' via Helm values or container environment variables.
- Deploy Kubernetes NetworkPolicy objects to restrict ingress traffic to TCP port 8081 on the Traffic Manager pod solely to authorized namespaces and workloads.
- Configure the Traffic Manager to manage only explicitly designated development namespaces rather than using default cluster-wide namespace management.
- Monitor Traffic Manager logs and Kubernetes API audit logs for unauthorized SubjectAccessReview checks and unauthenticated gRPC connection warnings.
Remediation Steps:
- Upgrade all developer Telepresence CLI installations to v2.31.0 or later so client requests include Kubernetes bearer tokens.
- Update the Telepresence Helm chart to v2.31.0+ with
--set security.authentication.mode=enforcing(or setAUTHENTICATION_MODE=enforcingin the Traffic Manager Deployment). - Verify that the Traffic Manager ClusterRole contains permissions to create
tokenreviews.authentication.k8s.ioandsubjectaccessreviews.authorization.k8s.io. - Roll/restart any workloads running legacy injected
traffic-agentsidecars so the mutating webhook mounts thetraffic-manageraudience-bound projected ServiceAccount token. - Apply a Kubernetes NetworkPolicy in the
ambassador(or custom Telepresence) namespace limiting ingress to port 8081.
References
- GitHub Security Advisory (GHSA-j8j4-rw65-56r6)
- National Vulnerability Database (NVD) - CVE-2026-102340
- Official CVE.org Record - CVE-2026-102340
- Telepresence v2.31.0 Release
- GitHub Pull Request #4217
- Fix Commit: Authenticate traffic-agents to the traffic-manager
- Fix Commit: Authorize intercept creation against the caller's RBAC
- Fix Commit: Add an authentication mode with opt-in enforcement
- CVEProject cvelistV5 Record
- Red Hat Security Advisory - CVE-2026-102340
- Wiz Vulnerability Database - CVE-2026-102340
Read the full report for CVE-2026-102340 on our website for more details including interactive diagrams and full exploit analysis.