kubectl-status only supports the latest released version. Security fixes are
made against master and shipped in the next release; older versions are not
patched separately.
kubectl-status is maintained by a single person, with no formal succession plan. If the project goes dormant, forking is the expected path for continued maintenance.
Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.
Instead, report them privately by:
- Using GitHub's private vulnerability reporting, or
- Emailing bekirdo at gmail.com
Please include as much of the following as you can:
- A description of the vulnerability and its potential impact.
- Steps to reproduce, including the command(s) run and, if applicable, a
minimal (sanitized) Kubernetes manifest or
-o yamlobject that triggers the issue. - The
kubectl status --versionandkubectl version -o yamloutput. - Any relevant logs (feel free to redact sensitive cluster data).
You should receive a response within a few days. If the issue is confirmed, we will work on a fix and coordinate disclosure timing with you before any public release notes or advisory are published.
kubectl-status is a read-only kubectl plugin: it queries the Kubernetes API
and renders output locally, and does not itself expose network services. See
ARCHITECTURE.md for the actors and data flow behind this.
Of particular interest are issues such as:
- Template rendering bugs that could leak, mishandle, or execute untrusted data from cluster objects.
- Credential or secret exposure in rendered output or logs beyond what the user explicitly requested.
- Supply-chain issues in the build/release pipeline (e.g.
goreleaserworkflow, krew manifest).
This section documents how secrets and credentials used by the project are stored, accessed, controlled, and rotated.
| Credential | Purpose | Storage / Access | Rotation |
|---|---|---|---|
GitHub Actions GITHUB_TOKEN |
Authenticate CI workflows to push releases, create tags, publish to krew-index | Ephemeral, auto-provided by GitHub Actions per workflow run. Scoped via permissions: blocks in .github/workflows/*.yml (least privilege: contents: write, id-token: write only where needed). |
Automatic — new token per workflow run. No long-lived token exists. |
| cosign keyless OIDC signing | Sign release artifacts (checksums, binaries, SBOMs) | No stored private key. Uses GitHub Actions' OIDC identity (https://token.actions.githubusercontent.com) to request a short-lived certificate from Fulcio at release time. The certificate binds to the workflow (release.yml) and the git tag ref (refs/tags/vX.Y.Z). |
Automatic — new certificate per release. No long-lived signing key to rotate. |
| krew-index bot token | Update the krew plugin manifest in the krew-index repo | Stored as a GitHub Actions secret (KREW_BOT_TOKEN) in this repo's settings, used only by the krew-release-bot step in release.yml. |
Rotated by the maintainer if/when the krew-index bot credential is refreshed. |
No other credentials (API keys, cloud provider tokens, database passwords, etc.) are used, stored, or accessed by this project's CI/CD or release pipeline.
- gitleaks runs at two layers:
- Pre-push hook (installed via
.pre-commit-config.yaml→make-security-checkhook) — scans staged commits before they leave the workstation. - CI workflow (
.github/workflows/security-checks.yml) — scans full history on every PR, push tomaster, and daily schedule.
- Pre-push hook (installed via
- Synthetic test fixtures in
tests/artifacts/that trip gitleaks rules are allowlisted by fingerprint only in the committed.gitleaksignore. The fingerprint contains no secret material. Adding a new allowlist entry requires runningmake gitleaks-allowand reviewing the diff — this deliberate friction prevents reflexively silencing a real leak.
If a contributor or maintainer discovers a committed secret (real, not a test fixture):
- Do not push a commit that merely deletes the secret — it remains in git history.
- Immediately rotate the compromised credential at its source (e.g., revoke the GitHub token, regenerate the API key).
- Report the incident via the project's vulnerability reporting process (see Reporting a Vulnerability above), even if the secret has been rotated — we track exposure for downstream impact assessment.
- History rewrite (e.g.,
git filter-repoor BFG Repo-Cleaner) may be needed to purge the secret from git history. Only maintainers can perform this — force-push tomasteris not permitted by default and requires maintainer coordination. - After rotation and history cleanup, verify
make gitleakspasses clean.