You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
security(k8s): the KSV-01010 opaque-value detector also matches container image references #3243
/, . and - are all members, so a container image reference of 40+ characters matches it.
Measured:
ghcr.io/devantler-tech/provider-upjet-unifi (43) -> MATCHES
registry.k8s.io/kube-state-metrics/kube-state-metrics (53) -> MATCHES
https://platform.devantler.tech/some/long/path/here (51) -> no match (":" not in the class)
Impact
Low and fail-closed. If a long image reference is ever added to one of the three excepted ConfigMaps
(k8s/clusters/{prod,local}/bootstrap/config-map.yaml, k8s/bases/apps/actual-budget/config-map.yaml)
the guard fails CI claiming credential-shaped content. That is the safe direction — a human re-reads
the exception — but it is a false positive, and a guard that cries wolf is one people learn to
route around.
No such value exists in any of the three files today, which is why this is a follow-up rather
than a fix inside #3241.
Why the obvious fix is wrong
Dropping / from the class would remove the false positive and weaken real detection: standard
base64 credentials contain /, and catching a pasted base64 blob is the detector's original purpose.
Expected
Exclude registry/image-reference shape rather than a character. A value whose leading segment looks
like a host (^[a-z0-9-]+(\.[a-z0-9-]+)+/) is an image or path reference, not credential material,
and can be skipped before the length test — leaving base64 and base64url detection untouched.
Acceptance criteria
A 40+ character image reference in an excepted ConfigMap does not trip the guard.
The existing detector self-test still passes unchanged, and both per-detector ablations still
fire (narrowing the value class, and neutralising the prefix detector).
A standard-base64 credential containing / is still caught — add it as a fixture, since that
is the case the naive fix would have broken.
Size
Small. The self-test harness and its per-detector assertions already exist; this adds one exclusion
and two fixtures.
#3222 - ci(security): fail when a checkov skip reason is truncated by YAML comment syntax [merged] #3229 - security(k8s): rule on the KSV-0014 findings on the vendored VM-stack operators [merged] #3210 - security(k8s): disposition vendored KubeVirt and CDI operator RBAC as a class [merged] #3212 - docs(kubescape): record the keep decision for the three unfalsifiable controls [merged] #3216 - security(trivy): declare the trusted registries so KSV-0125 gates instead of noises [merged]
📝 Issue Planner
Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.
Create Plan
🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your .coderabbit.yaml:
issue_enrichment:
auto_enrich:
enabled: false
💬 Have feedback or questions? Drop into our discord!
Activity
coderabbitai commentedon Aug 19, 2026
🔗 Related PRs
#3222 - ci(security): fail when a checkov skip reason is truncated by YAML comment syntax [merged]
#3229 - security(k8s): rule on the KSV-0014 findings on the vendored VM-stack operators [merged]
#3210 - security(k8s): disposition vendored KubeVirt and CDI operator RBAC as a class [merged]
#3212 - docs(kubescape): record the keep decision for the three unfalsifiable controls [merged]
#3216 - security(trivy): declare the trusted registries so KSV-0125 gates instead of noises [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!
chore: agent-claim #3243 nonce=6312205b27fb30a5adaf8bcce2e7bd3e