feat(skills): add Kubernetes security testing skill#394
feat(skills): add Kubernetes security testing skill#394mvanhorn wants to merge 1 commit intousestrix:mainfrom
Conversation
….md) Add comprehensive Kubernetes cluster security testing knowledge package covering RBAC misconfigurations, exposed APIs, container escapes, network policy gaps, secret management issues, workload misconfigs, and supply chain risks. Closes usestrix#324 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Greptile SummaryThis PR adds
Confidence Score: 4/5
Important Files Changed
Prompt To Fix All With AIThis is a comment left during a code review.
Path: strix/skills/cloud/kubernetes.md
Line: 109
Comment:
**`base64 -d` applied to JSON map, not a base64 string**
`kubectl get secret <name> -o jsonpath='{.data}'` returns the entire `data` map as a JSON object (e.g. `{"password":"c2VjcmV0","token":"dG9rZW4="}`). Piping that JSON blob to `base64 -d` will produce garbled output or an error, not the decoded secret values. An agent following this command verbatim would get confused.
To decode all values at once:
```suggestion
kubectl get secret <name> -o json | jq '.data | map_values(@base64d)'
```
Or to decode a specific key:
```
kubectl get secret <name> -o jsonpath='{.data.password}' | base64 -d
```
How can I resolve this? If you propose a fix, please make it concise.Reviews (1): Last reviewed commit: "feat(skills): add Kubernetes security te..." | Re-trigger Greptile |
| - ConfigMaps containing credentials, API keys, connection strings | ||
| - Service account tokens auto-mounted into pods that never call the API | ||
| - Helm release secrets containing full chart values with credentials | ||
|
|
There was a problem hiding this comment.
base64 -d applied to JSON map, not a base64 string
kubectl get secret <name> -o jsonpath='{.data}' returns the entire data map as a JSON object (e.g. {"password":"c2VjcmV0","token":"dG9rZW4="}). Piping that JSON blob to base64 -d will produce garbled output or an error, not the decoded secret values. An agent following this command verbatim would get confused.
To decode all values at once:
| kubectl get secret <name> -o json | jq '.data | map_values(@base64d)' |
Or to decode a specific key:
kubectl get secret <name> -o jsonpath='{.data.password}' | base64 -d
Prompt To Fix With AI
This is a comment left during a code review.
Path: strix/skills/cloud/kubernetes.md
Line: 109
Comment:
**`base64 -d` applied to JSON map, not a base64 string**
`kubectl get secret <name> -o jsonpath='{.data}'` returns the entire `data` map as a JSON object (e.g. `{"password":"c2VjcmV0","token":"dG9rZW4="}`). Piping that JSON blob to `base64 -d` will produce garbled output or an error, not the decoded secret values. An agent following this command verbatim would get confused.
To decode all values at once:
```suggestion
kubectl get secret <name> -o json | jq '.data | map_values(@base64d)'
```
Or to decode a specific key:
```
kubectl get secret <name> -o jsonpath='{.data.password}' | base64 -d
```
How can I resolve this? If you propose a fix, please make it concise.
Summary
Adds
strix/skills/cloud/kubernetes.md- the first skill in thecloud/category. Covers 7 attack domains for Kubernetes cluster security testing.Why this matters
The
cloud/directory has a.gitkeepplaceholder but zero skills (#324). Strix has 17 vulnerability skills, 9 tooling skills, and 3 framework skills - but no cloud infrastructure coverage. Kubernetes is the most common container orchestration target, and agents currently lack the domain knowledge to test it.Changes
One new file:
strix/skills/cloud/kubernetes.md(218 lines)Covers:
Each section includes specific
kubectlcommands, curl probes, and validation methods. Format matches the existing SSRF skill (the gold standard at 182 lines).No code changes. The skill loader in
strix/skills/__init__.pyauto-discovers.mdfiles in category directories.Video Demo
Testing
No Python changes -
make check-allis unaffected. The skill is a markdown knowledge package that gets injected into agent system prompts at runtime.This contribution was developed with AI assistance (Claude Code).
Fixes #324