GHSA-3278-c88v-xrh4
Kong Ingress Controller for Kubernetes (KIC): Secret-backed plugin configurations leak through non-sensitive diagnostics endpoint
Blast Radius
github.com/kong/kubernetes-ingress-controller/v3🐹github.com/kong/kubernetes-ingress-controller/v2🐹github.com/kong/kubernetes-ingress-controllerReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Summary
A vulnerability in the Kong Ingress Controller (KIC) allows for the unauthorized exposure of sensitive plugin credentials through the diagnostics interface. Even when configured to redact sensitive information (using --dump-sensitive-config=false), KIC fails to sanitize the Plugins field in diagnostic configuration dumps. This causes secrets referenced via configFrom.secretKeyRef to be resolved and displayed in plaintext.
Because the diagnostics HTTP endpoints require no authentication, any process within the cluster network capable of reaching the KIC pod can exfiltrate sensitive data, including API keys, bearer tokens, and database passwords.
Am I affected?
You are affected if all of the following hold:
- You are using Kong Ingress Controller with diagnostics enabled (
--dump-config=true). - You have not explicitly enabled sensitive dumping (
--dump-sensitive-config=false), creating an expectation of redaction. - You use
KongPluginorKongClusterPluginresources that reference Kubernetes Secrets viaconfigFrom.secretKeyRef. - The KIC diagnostics port (default
10256) is reachable by other workloads or users within your cluster.
You are not affected if:
- The
--dump-configflag is set tofalse(default behavior). - You do not use secret-backed configurations in your Kong plugins.
- Access to the KIC pod's diagnostic port is strictly blocked by NetworkPolicies.
Mitigation
- Disable Diagnostics: If not actively debugging, disable the diagnostic server by setting
--dump-config=false. - Network Isolation: Implement a
NetworkPolicyto restrict access to the KIC diagnostics port (default10256), ensuring only authorized administrative pods or IPs can reach it. - Restrict Port-Forwarding: Limit
kubectl port-forwardRBAC permissions to prevent unauthorized users from accessing the pod's local ports.
Fix
The fix introduces proper sanitization for the Plugins field within the configuration state. When sensitive dumping is disabled, the controller now replaces all plugin configuration values with a redaction placeholder before they are served via the diagnostics endpoints. Additionally, it is recommended to ensure your deployment environment follows the principle of least privilege regarding network access to controller components.
Users should upgrade to the latest patched version of Kong Ingress Controller to ensure diagnostic dumps are correctly redacted.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/kong/kubernetes-ingress-controller/v3 | all versions | 3.5.7 |
| 🐹Go | github.com/kong/kubernetes-ingress-controller/v2 | all versions | No fix |
| 🐹Go | github.com/kong/kubernetes-ingress-controller | all versions | No fix |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/kong/kubernetes-ingress-controller/v3. O3's reachability analysis confirms whether the vulnerable code path is actually invoked in your application, so you act on real exposure instead of every transitive match.
Fix
Update github.com/kong/kubernetes-ingress-controller/v3 to 3.5.7 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-3278-c88v-xrh4 is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
How O3 protects you
O3 pinpoints whether GHSA-3278-c88v-xrh4 is reachable in your code and exactly where to fix it, then blocks exploitation in production at runtime until the patched version is deployed.
Tailored to GHSA-3278-c88v-xrh4. Runtime protection reduces exposure until a permanent patch is applied and verified — it complements patching, it doesn't replace it.
Frequently Asked Questions
Is GHSA-3278-c88v-xrh4 in your dependencies?
O3 detects GHSA-3278-c88v-xrh4 across Go dependencies and uses function-level reachability to confirm whether the vulnerable code path is actually reachable — not just present. No false positives.