π€ Generated by the Agentic Engineer
First control-family slice of #2787, which asks for the findings to be grouped by check id and each group dispositioned once.
Evidence
scripts/megalinter-scan-counts.sh reproduces CI's checkov scan. At origin/main it reports 68 failing checks, of which 31 are CKV_SECRET_6 (Base64 High Entropy String) β the entire secrets framework contribution, and the single largest family (46%).
All 31 sites were read individually. Every one is a name or a reference, never secret material:
| Shape |
Sites |
Example |
secretKey: in an ExternalSecret spec.data[] |
21 |
- secretKey: db-password |
secretKey: in a PushSecret spec.data[].match |
5 |
secretKey: r2_access_key_id |
| HelmRelease value naming an existing Secret, or a key in one |
4 |
existingSecretPasswordKey: redis-password |
| Literal placeholder |
1 |
password: PLACEHOLDER |
The values live in OpenBao; these lines only declare what the key is called and where it comes from. The clearest single demonstration that the heuristic is misfiring is that it flags the literal string PLACEHOLDER.
This is the same class the repository already triaged when it removed gitleaks β .mega-linter.yml records those findings as "generic-api-key hits on ExternalSecret/PushSecret key references β Vault paths naming where a secret lives, not secret material".
Expected behaviour
checkov reports 0 CKV_SECRET_6 on k8s/, and CKV_SECRET_6 stays live everywhere else in the tree.
Acceptance criteria
Rough size: small. Part of #2787.
First control-family slice of #2787, which asks for the findings to be grouped by check id and each group dispositioned once.
Evidence
scripts/megalinter-scan-counts.shreproduces CI's checkov scan. Atorigin/mainit reports 68 failing checks, of which 31 areCKV_SECRET_6(Base64 High Entropy String) β the entiresecretsframework contribution, and the single largest family (46%).All 31 sites were read individually. Every one is a name or a reference, never secret material:
secretKey:in an ExternalSecretspec.data[]- secretKey: db-passwordsecretKey:in a PushSecretspec.data[].matchsecretKey: r2_access_key_idexistingSecretPasswordKey: redis-passwordpassword: PLACEHOLDERThe values live in OpenBao; these lines only declare what the key is called and where it comes from. The clearest single demonstration that the heuristic is misfiring is that it flags the literal string
PLACEHOLDER.This is the same class the repository already triaged when it removed gitleaks β
.mega-linter.ymlrecords those findings as "generic-api-keyhits on ExternalSecret/PushSecret key references β Vault paths naming where a secret lives, not secret material".Expected behaviour
checkov reports 0
CKV_SECRET_6onk8s/, andCKV_SECRET_6stays live everywhere else in the tree.Acceptance criteria
CKV_SECRET_6alone.CKV_SECRET_6; the control still fires elsewhere in the tree.Rough size: small. Part of #2787.