GHSA-3278-C88V-XRH4

Vulnerability from github – Published: 2026-05-19 19:28 – Updated: 2026-05-19 19:28
VLAI
Summary
Kong Ingress Controller for Kubernetes (KIC): Secret-backed plugin configurations leak through non-sensitive diagnostics endpoint
Details

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: 1. You are using Kong Ingress Controller with diagnostics enabled (--dump-config=true). 2. You have not explicitly enabled sensitive dumping (--dump-sensitive-config=false), creating an expectation of redaction. 3. You use KongPlugin or KongClusterPlugin resources that reference Kubernetes Secrets via configFrom.secretKeyRef. 4. The KIC diagnostics port (default 10256) is reachable by other workloads or users within your cluster.

You are not affected if: - The --dump-config flag is set to false (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

  1. Disable Diagnostics: If not actively debugging, disable the diagnostic server by setting --dump-config=false.
  2. Network Isolation: Implement a NetworkPolicy to restrict access to the KIC diagnostics port (default 10256), ensuring only authorized administrative pods or IPs can reach it.
  3. Restrict Port-Forwarding: Limit kubectl port-forward RBAC 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.

Show details on source website

{
  "affected": [
    {
      "database_specific": {
        "last_known_affected_version_range": "\u003c 3.5.6"
      },
      "package": {
        "ecosystem": "Go",
        "name": "github.com/kong/kubernetes-ingress-controller/v3"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "3.5.7"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "Go",
        "name": "github.com/kong/kubernetes-ingress-controller/v2"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "last_affected": "2.12.8"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "Go",
        "name": "github.com/kong/kubernetes-ingress-controller"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "last_affected": "1.3.4"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [],
  "database_specific": {
    "cwe_ids": [
      "CWE-201"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-05-19T19:28:48Z",
    "nvd_published_at": null,
    "severity": "MODERATE"
  },
  "details": "## Summary\n\nA 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.\n\nBecause 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.\n\n## Am I affected?\n\nYou are affected if all of the following hold:\n1. You are using Kong Ingress Controller with **diagnostics enabled** (`--dump-config=true`).\n2. You have **not explicitly enabled** sensitive dumping (`--dump-sensitive-config=false`), creating an expectation of redaction.\n3. You use `KongPlugin` or `KongClusterPlugin` resources that reference Kubernetes Secrets via **`configFrom.secretKeyRef`**.\n4. The KIC diagnostics port (default `10256`) is reachable by other workloads or users within your cluster.\n\nYou are not affected if:\n- The `--dump-config` flag is set to `false` (default behavior).\n- You do not use secret-backed configurations in your Kong plugins.\n- Access to the KIC pod\u0027s diagnostic port is strictly blocked by NetworkPolicies.\n\n## Mitigation\n\n1. **Disable Diagnostics**: If not actively debugging, disable the diagnostic server by setting `--dump-config=false`.\n2. **Network Isolation**: Implement a `NetworkPolicy` to restrict access to the KIC diagnostics port (default `10256`), ensuring only authorized administrative pods or IPs can reach it.\n3. **Restrict Port-Forwarding**: Limit `kubectl port-forward` RBAC permissions to prevent unauthorized users from accessing the pod\u0027s local ports.\n\n## Fix\n\nThe 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.\n\nUsers should upgrade to the latest patched version of Kong Ingress Controller to ensure diagnostic dumps are correctly redacted.",
  "id": "GHSA-3278-c88v-xrh4",
  "modified": "2026-05-19T19:28:48Z",
  "published": "2026-05-19T19:28:48Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/Kong/kubernetes-ingress-controller/security/advisories/GHSA-3278-c88v-xrh4"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/Kong/kubernetes-ingress-controller"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N",
      "type": "CVSS_V4"
    }
  ],
  "summary": "Kong Ingress Controller for Kubernetes (KIC): Secret-backed plugin configurations leak through non-sensitive diagnostics endpoint"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…