Repository navigation
Description
π€ Generated by the Agentic Engineer
Evidence
Measured on main @4d2a3dc4 with scripts/megalinter-scan-counts.sh --trivy-only, plus a
per-target JSON breakdown and a with/without-ignorefile ablation of the same scan.
KSV-01010 "ConfigMap with sensitive content" accounts for 3 of the 24 remaining trivy
misconfigurations, and it is the only remaining check with no disposition entry at all:
| file | matched on |
|---|---|
k8s/clusters/prod/bootstrap/config-map.yaml |
admin_email |
k8s/clusters/local/bootstrap/config-map.yaml |
admin_email |
k8s/bases/apps/actual-budget/config-map.yaml |
enablebanking_secretKey, const secretKey |
Why the existing KSV-0109 entries do not cover it
.trivyignore.yaml already disposes KSV-0109 ("ConfigMap stores secrets") for two of these files.
It would be easy to assume KSV-01010 is that same check renumbered and that the dispositions have
silently died β that is not what is happening, and it was checked rather than assumed:
with .trivyignore.yaml : 24 findings β KSV-0109 Γ0, KSV-01010 Γ3
without .trivyignore.yaml : 598 findings β KSV-0109 Γ2, KSV-01010 Γ3
The ablation moves the total 24 β 598, so it demonstrably fired. KSV-0109 still exists in this
trivy and is still correctly suppressed; KSV-01010 is a separate sibling check with a wider match
set that no entry covers. The two overlap on files but not on keys β KSV-0109 fires on
external_secrets_replicas, KSV-01010 on admin_email.
Note also that k8s/clusters/local/bootstrap/config-map.yaml carries no disposition under either
id β the existing entries were written per-file for the prod bootstrap only.
Why all three are false positives
admin_email(prod + local bootstrap) β the Let's Encrypt / ACME registration contact for the
cluster issuer. It is a contact address the issuer requires and that appears in issued-certificate
metadata; it is deliberately public and carries no authentication value.actual-budgetβ the ConfigMap embeds a JavaScript source file that reads credentials from an
ESO-mounted Secret and writes them into the app's SQLite table. trivy matches the identifier
names (enablebanking_secretKey,const secretKey), not credential values; the file contains no
secret material. This is the identical reasoning already accepted for the same file under
KSV-0109.
Scanner-version caveat
Measured with trivy 0.74.0; CI runs 0.73.0 via MegaLinter 10.0.0, and π’ Validate Scanner Versions exists precisely because that drift can look like backlog movement. Whether KSV-01010
exists in 0.73.0 is not established here. An ignorefile entry for an id the running scanner does
not emit is inert, so the disposition is safe under both and is correct ahead of the next MegaLinter
bump β but the count claim below is a 0.74.0 claim, not a CI claim.
Smallest useful change
Three path-scoped KSV-01010 entries in .trivyignore.yaml, each carrying its own reason, in the
same shape as the existing KSV-0109 pair β plus a paired control proving the scoping is what
decides, so an application ConfigMap that genuinely embeds a credential is still reported.
Acceptance criteria
-
KSV-01010reports 0 on this tree, path-scoped rather than skipped outright. - trivy total drops 24 β 21, measured with
scripts/megalinter-scan-counts.sh --trivy-only. - A paired control shows the same bytes under a non-excepted path still FAIL the check.
- No other check's count moves.
Size: small.
Part of #2787
Metadata
Metadata
Assignees
Labels
Type
Fields
Projects
- StatusShow more project fieldsβ Done
Activity
coderabbitai commentedon Aug 19, 2026
π Related PRs
#3236 - security(k8s): disposition the 8 RBAC-breadth trivy findings [merged]
#3216 - security(trivy): declare the trusted registries so KSV-0125 gates instead of noises [merged]
#3227 - security(k8s): disposition the first-party RBAC trivy findings [merged]
#3231 - chore(security): disposition KSV-0020/0021 on the vendored VM operators [merged]
#3210 - security(k8s): disposition vendored KubeVirt and CDI operator RBAC as a class [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 #3240 nonce=2f374ad7ff3e06b4bb94537b599050ee
test(security): make the KSV-01010 boundary guard hold without trivy
test(security): assert the content premise of each excepted ConfigMap