Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-54761-poc — Proof-of-concept demonstrating an authorization bypass in Traefik's Kubernetes Gateway provider (CVE-2026-54761) via a crossProviderNamespaces vulnerability, exposing internal services like api@internal. | Kitploit
Tools/GitHubGitHub/saku0512/cve-2026-54761-poc
Container SecurityVulnerability AnalysisExploitationWeb Application ExploitationCloud SecurityLearning & Education
GitHubsaku0512/cve-2026-54761-poc

CVE-2026-54761-poc

Proof-of-concept demonstrating an authorization bypass in Traefik's Kubernetes Gateway provider (CVE-2026-54761) via a crossProviderNamespaces vulnerability, exposing internal services like api@internal.

View Repository
32 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-54761: Traefik Kubernetes Gateway crossProviderNamespaces Bypass PoC

日本語版はこちら

Description

This repository contains a local Proof of Concept (PoC) for CVE-2026-54761, a high severity vulnerability in Traefik's Kubernetes Gateway provider.

The vulnerability affects the crossProviderNamespaces allowlist. For HTTPRoute rules that declare multiple weighted backend references, Traefik validates the allowlist against the target backendRef.namespace instead of the route's own namespace. As a result, an HTTPRoute in a namespace that is not allow-listed can expose internal Traefik services such as api@internal when the backend reference points at an allow-listed namespace and a matching Gateway API ReferenceGrant exists.

Reported by: saku0512 (https://github.com/Saku0512), vvvvvvvvvvel (https://github.com/vvvvvvvvvvel)


Disclaimer

This project is for educational and authorized security testing purposes only.

Do not run this against systems you do not own or administer. The PoC is designed to create a disposable local kind cluster and demonstrate the issue in an isolated environment.


Vulnerability Details

  • CVE ID: CVE-2026-54761
  • Product: Traefik
  • Component: Kubernetes Gateway provider
  • Type: Authorization bypass / exposure of internal service
  • Impact: Internal Traefik services such as api@internal can be exposed through the normal data plane
  • Affected Versions: Traefik versions prior to the fixed releases listed below
  • Fixed Versions: v3.6.21 and v3.7.5

Root Cause

The crossProviderNamespaces option is intended to restrict which Gateway API route namespaces may declare TraefikService backend references, including references to @internal services.

In the vulnerable weighted-backend path, Traefik checks the allowlist against backendRef.namespace. This is incorrect because the security boundary is the namespace of the HTTPRoute that declares the reference.

Expected behavior:

root@kitploit:~
providers:
  kubernetesGateway:
    crossProviderNamespaces:
      - trusted

Only routes whose own namespace is trusted should be allowed to declare cross-provider TraefikService backend references.

Vulnerable behavior:

root@kitploit:~
backendRefs:
  - group: traefik.io
    kind: TraefikService
    name: api@internal
    namespace: trusted

An HTTPRoute in the attacker namespace can be accepted when the route has multiple backend references and the backendRef.namespace is set to the allow-listed trusted namespace.


Proof of Concept

The PoC creates a disposable local kind cluster with:

  • Traefik v3.7.1
  • Gateway API CRDs
  • providers.kubernetesGateway.crossProviderNamespaces=trusted
  • a normal Gateway API ReferenceGrant from trusted
  • a positive-control route that should be rejected
  • a mixed weighted-backend route that demonstrates the bypass

Requirements

  • Docker
  • kind
  • kubectl
  • curl

Run

root@kitploit:~
cd external-repro-kind
./run-kind-repro.sh

The script deletes the cluster automatically when it exits.

To keep the cluster for manual inspection:

root@kitploit:~
KEEP_CLUSTER=1 ./run-kind-repro.sh

Expected Output

The control route uses a single forbidden api@internal backend reference from the attacker namespace. It should not expose the API:

root@kitploit:~
control status: 404

The exploit route uses two backend references, causing Traefik to build a weighted service. On vulnerable versions, the request to /api/http/services returns Traefik API JSON:

root@kitploit:~
exploit returned Traefik API JSON
api@internal status: enabled
weighted members:
api@internal              1000000
attacker-whoami-http-80  1

The important difference is that both routes are created from the same untrusted attacker namespace. The single-backend control is rejected, but the mixed weighted-backend route resolves successfully and exposes api@internal.


Files

  • external-repro-kind/kind-config.yaml - local kind cluster with Traefik exposed on 127.0.0.1:18080
  • external-repro-kind/traefik-v371.yaml - vulnerable Traefik deployment and GatewayClass
  • external-repro-kind/gateway-exploit.yaml - namespaces, Gateway, ReferenceGrant, control route, and bypass route
  • external-repro-kind/run-kind-repro.sh - end-to-end local reproducer

Remediation

Upgrade Traefik to a fixed version:

  • v3.6.21 or later in the v3.6 release line
  • v3.7.5 or later in the v3.7 release line

Operators should also review existing Gateway API ReferenceGrant resources and avoid granting untrusted namespaces access to cross-provider TraefikService references unless that delegation is explicitly intended.


References

  • Traefik Security Advisory GHSA-3g6v-2r68-prfc
  • Traefik v3.6.21 release
  • Traefik v3.7.5 release
Download Tool