Skill Review ($25 Bounty)
Skill Reviewed
Skill name: secrets-management
Skill path: skills/devsecops/secrets-management/SKILL.md
Gap Found
The skill covers short-lived tokens, JIT credentials, Vault AppRole, Kubernetes service account injection, and OIDC examples, but it does not explicitly require evidence for the bootstrap path used to obtain the first machine credential. A system can use Vault or OIDC for dynamic credentials while still storing paired bootstrap secrets, accepting over-broad OIDC claims, or persisting exchanged tokens into artifacts/logs/caches.
Why It Matters
Secret rotation and dynamic credentials do not solve the "secret zero" problem by themselves. CI/CD agents, bots, Kubernetes workloads, and AI agents need a bounded, auditable machine identity exchange. If both halves of an AppRole, cloud key pair, or broker client secret are stored together, or if OIDC trust is not bound to repo/ref/environment/workflow claims, the vault becomes a credential vending machine for untrusted workloads.
Evidence Pattern That Should Fail
- Agent stores both
VAULT_ROLE_ID and VAULT_SECRET_ID in GitHub Actions secrets
- AppRole
secret_id_ttl and secret_id_num_uses are unlimited
- Issued token TTL is 24h for an 8-minute task
- Token can be written to workspace artifacts
- Audit logs do not include run ID, actor, requested scope, or revocation result
Suggested Fix
Add secret-zero/bootstrap gates requiring:
- no paired bootstrap secrets stored together
- OIDC/workload identity roles bound to issuer, audience, subject, repository/project, branch/ref, environment, namespace, service account, and workflow/job identity where supported
- response wrapping, one-use
secret_id, and short TTL when AppRole is unavoidable
- issued credentials aligned to task duration and least privilege
- no persistence of exchanged tokens into logs, artifacts, caches, workspace files, crash dumps, or transcripts
- audit correlation for automated secret issuance and revocation
Bounty Info
Skill Review ($25 Bounty)
Skill Reviewed
Skill name:
secrets-managementSkill path:
skills/devsecops/secrets-management/SKILL.mdGap Found
The skill covers short-lived tokens, JIT credentials, Vault AppRole, Kubernetes service account injection, and OIDC examples, but it does not explicitly require evidence for the bootstrap path used to obtain the first machine credential. A system can use Vault or OIDC for dynamic credentials while still storing paired bootstrap secrets, accepting over-broad OIDC claims, or persisting exchanged tokens into artifacts/logs/caches.
Why It Matters
Secret rotation and dynamic credentials do not solve the "secret zero" problem by themselves. CI/CD agents, bots, Kubernetes workloads, and AI agents need a bounded, auditable machine identity exchange. If both halves of an AppRole, cloud key pair, or broker client secret are stored together, or if OIDC trust is not bound to repo/ref/environment/workflow claims, the vault becomes a credential vending machine for untrusted workloads.
Evidence Pattern That Should Fail
VAULT_ROLE_IDandVAULT_SECRET_IDin GitHub Actions secretssecret_id_ttlandsecret_id_num_usesare unlimitedSuggested Fix
Add secret-zero/bootstrap gates requiring:
secret_id, and short TTL when AppRole is unavoidableBounty Info