iac-security
Skill11 starsChanged 3 months agoApache-2.0View on GitHub
Infrastructure-as-Code security scanning router for Terraform, CloudFormation, Kubernetes manifests, Helm, ARM/Bicep. Orchestrates Checkov, tfsec, Terrascan, KICS, kubesec, kube-linter, Polaris, cfn-lint/cfn-nag, and OPA/Conftest. Use when auditing IaC for misconfigurations, scanning Terraform plans, validating K8s security policies, checking cloud infrastructure compliance, or authoring custom policy-as-code (Rego).
- Installs packages
We split this skill into the rules it gives an agent
6 rules. 0 are common, 4 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
Verify CIS benchmark compliance across AWS / Azure / GCP / K8s
- Very specific: line 43
If the target mixes types (monorepo), fan out: run every applicable workflow in parallel, then merge findings with iac_type as the …
- Distinctive: line 46
Run concurrently (no shared state, all read-only):
- Distinctive: line 65
Do NOT parallelize across sub-agents when one workflow must gate another (e.g.
- Distinctive: line 73
If the user pastes a screenshot of a scanner UI / dashboard finding, read the rule ID and resource from the image and route to the matching …
- Very specific: line 76
All findings MUST conform to schemas/finding.json.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Infrastructure as Code Security
Thin router for IaC static analysis. Pick the right workflow, run scanners in parallel, aggregate findings into schemas/finding.json, and (where org controls demand it) author Rego policies via the policy-as-code loop. Detailed per-stack commands and rule references live under references/; multi-step runbooks live under workflows/.
When to Use
- Scan Terraform
.tf/ plan JSON for misconfigurations - Audit CloudFormation YAML/JSON templates
- Validate Kubernetes manifests (incl. rendered Helm / kustomize)
- Validate Helm charts pre- and post-render
- Scan ARM / Bicep templates for Azure misconfigurations
- Verify CIS benchmark compliance across AWS / Azure / GCP / K8s
- Integrate IaC scanning into PR gates or pre-commit hooks
- Author custom OPA/Rego policies for org-specific controls
Trigger Phrases
- "scan this Terraform / audit my CloudFormation / check Kubernetes manifests"
- "validate Helm chart security" · "IaC security scan" · "infrastructure compliance"
- "write a Rego policy for X" · "add Conftest rule for Y"
When NOT to Use This Skill
- Runtime cloud assessment (live AWS/Azure/GCP accounts, IAM policies in force, runtime resource state) → use
exploiting-cloud-platforms. - Container image CVE scanning, admission control at runtime, cluster live scans → use
container-security. - Secrets discovery in a codebase → use
auditing-supply-chain(pair with this skill for IaC files that contain secrets). - Application source-code SAST → use
auditing-code-for-vulnerabilities/sast. - Pure drift detection vs deployed state — not in scope; use Terraform Cloud / Driftctl / AWS Config.
Decision Tree
What file(s)?
├── .tf / .tf.json / tfplan.json → workflows/terraform_scan.md
├── CFN .yaml/.json/.template → workflows/cloudformation_scan.md
├── K8s manifests (Deployment/etc) → workflows/kubernetes_manifest_scan.md
├── Helm chart (Chart.yaml) → references/helm.md (render → K8s workflow)
├── ARM / .bicep → references/arm_bicep.md
└── Need a custom org rule? → workflows/policy_as_code_loop.mdIf the target mixes types (monorepo), fan out: run every applicable workflow in parallel, then merge findings with iac_type as the disambiguator.
Parallelism Hints
Run concurrently (no shared state, all read-only):
- Checkov + tfsec + Terrascan on the same Terraform dir
- cfn-lint (first, as a gate) → then cfn-nag + Checkov + KICS in parallel
- kubesec + kube-linter + Polaris + Checkov on K8s manifests
- One sub-agent per IaC type when a monorepo contains multiple
Must be sequential:
terraform init && terraform plan && terraform show -jsonBEFORE plan-based Checkov scanhelm template/kustomize buildBEFORE manifest scannerscfn-linterror gate BEFORE CFN security scanners (malformed templates poison the rest)- Findings aggregation + dedup AFTER all scanners complete
Sub-Agent Delegation
Spawn sub-agents for:
- One per scanner (Checkov / tfsec / Terrascan / KICS) in large Terraform repos — each owns its own output file, main agent aggregates.
- One per IaC type in monorepos (TF sub-agent, K8s sub-agent, CFN sub-agent).
- Dedicated policy-author sub-agent for
workflows/policy_as_code_loop.md— it carries full context on Rego idioms and the PASS/FAIL fixture discipline. - Dedicated aggregator sub-agent to read all scanner JSON outputs, apply
references/severity_mapping.md, and emit the unified report.
Do NOT parallelize across sub-agents when one workflow must gate another (e.g. cfn-lint → cfn-nag).
Reasoning Budget
- Extended thinking ON: writing custom Rego, interpreting cross-tool disagreements (e.g. Checkov CRITICAL + tfsec MEDIUM on the same resource), deciding whether a suppression is legitimate, designing fixture pairs.
- Extended thinking OFF: running scanners, parsing their JSON, applying the severity mapping table, formatting the report, file-system operations.
Multimodal Hooks
- Accept architecture diagrams (PNG / PDF) as context when reasoning about network boundaries and expected exposure — useful to decide whether a
0.0.0.0/0SG rule is actually the desired public edge. - If the user pastes a screenshot of a scanner UI / dashboard finding, read the rule ID and resource from the image and route to the matching reference.
Structured Output
All findings MUST conform to schemas/finding.json. Key IaC-specific fields: iac_file, iac_type, resource_type, resource_name, tool, rule_id, cis_benchmark_id, normalized_severity. Dedup on (iac_file, resource_type, resource_name, category) keeping highest normalized severity.
Quick-Start Commands
Minimal first pass per stack — use as a smoke test before invoking a full workflow:
# Terraform
checkov -d . --framework terraform -o json > /tmp/ckv.json
tfsec . --format json > /tmp/tfs.json
# CloudFormation (lint gate → security)
cfn-lint templates/*.yaml && checkov -d templates/ --framework cloudformation
# Kubernetes manifests
kube-linter lint ./k8s --format json > /tmp/kl.json
checkov -d ./k8s --framework kubernetes
# Helm — render first
helm template myrel ./chart -f values-prod.yaml | checkov -f - --framework kubernetes
# ARM / Bicep
checkov -d ./arm --framework arm
# Conftest (custom org rules)
conftest test <target> -p policy/Triage Cheatsheet
Highest-impact finding families — fix these before anything else:
- Public network ingress on admin ports (SSH/RDP/DB) — security groups, NSGs, NACLs with
0.0.0.0/0or::/0→ sev=critical. - Public data stores — S3 public-read, Azure storage
allowBlobPublicAccess, RDS/CosmosDBpublicly_accessible→ sev=critical. - Wildcard IAM —
Action: "*"withResource: "*"in AWS IAM / Azure role / GCP IAM binding → sev=critical. - Unencrypted at-rest — S3/EBS/RDS/Azure Storage without SSE or CMK; KMS without rotation → sev=
high. - Privileged / hostPath / hostNetwork pods — container escape / node-level blast radius → sev=
high. - Missing audit trails — CloudTrail disabled, Azure Activity Log export off, VPC flow logs missing → sev=
high. - Hardcoded secrets in IaC — re-route to
auditing-supply-chain, keep a breadcrumb in this report.
Everything else (tagging, versioning, lifecycle, resource hygiene) queues behind the above.
Workflow Index
| Workflow | File | Use when |
| Terraform scan | workflows/terraform_scan.md | Any .tf change or TF repo audit |
| CloudFormation scan | workflows/cloudformation_scan.md | CFN templates (lint → security) |
| Kubernetes manifest scan | workflows/kubernetes_manifest_scan.md | Raw K8s / rendered Helm / kustomize |
| Policy-as-code loop | workflows/policy_as_code_loop.md | Authoring custom OPA/Rego rules |
Examples Index
| File | Purpose |
examples/opa_rego_templates.md | Starter Rego for common org controls (K8s, TF, CFN) |
examples/vulnerable_terraform.tf | Intentionally-misconfigured fixture for scanner / Rego regression tests |
References Index
| File | Contents |
references/terraform.md | Checkov / tfsec / Terrascan commands, misconfig catalog, custom checks |
references/cloudformation.md | Checkov / cfn-lint / cfn-nag / KICS commands + CFN checklist |
references/kubernetes_manifests.md | kubesec / Checkov / Trivy / kube-linter / Polaris + K8s checklist |
references/helm.md | Render-vs-direct scanning, Chart.yaml hygiene, pluto for deprecated APIs |
references/arm_bicep.md | Checkov / KICS / PSRule for Azure + ARM/Bicep checklist |
references/severity_mapping.md | Per-tool → normalized severity table, dedup key, category buckets |
references/ci_cd_integration.md | GitHub Actions / GitLab CI / pre-commit wiring, gate policy guidance |
references/bounty_patterns_2024_2026.md | Post-2023 bounty TTPs (Terraform OIDC AWS trust misconfig, Helm dev/prod parity drift, unauth kube-apiserver exposure, shift-left maturity gaps) |
Tools
| Tool | Purpose | Install |
| Checkov | Multi-framework IaC scanner | pip install checkov |
| tfsec | Terraform security scanner | brew install tfsec |
| Terrascan | Multi-cloud IaC scanner | brew install terrascan |
| KICS | Keeping IaC Secure (Checkmarx) | docker pull checkmarx/kics |
| kubesec | K8s manifest scoring | brew install kubesec |
| kube-linter | K8s rule library | go install golang.stackrox.io/kube-linter/cmd/kube-linter@latest |
| Polaris | Opinionated K8s workload checks | brew install fairwinds/tap/polaris |
| cfn-lint | CFN schema/intrinsic lint | pip install cfn-lint |
| cfn-nag | CFN security scanner | gem install cfn-nag |
| Trivy | Config scanning (IaC mode) | brew install trivy |
| OPA / Conftest | Policy-as-code | brew install opa conftest |
| Regal | Rego linter | brew install regal |
| pluto | Deprecated K8s API detection | brew install FairwindsOps/tap/pluto |
Last Validated
2026-04. Minimum versions: Checkov ≥ 3.0, tfsec ≥ 1.28, Terrascan ≥ 1.19, Conftest ≥ 0.50, OPA ≥ 0.62, kube-linter ≥ 0.6, Polaris ≥ 9.0, cfn-lint ≥ 1.0, Trivy ≥ 0.50.
Other versions5 projects use a version of this.
Word for word · 1
- EvilFreelancer/secs★ 11100% same
Edited · 1
- hardw00t/ai-security-arsenal★ 10198% same
Wrote their own version · 3
- vinayaklatthe/microsoft-security-skills★ 179same name
- jaskaranhundal/usap-skills★ 4same name
- Adarshukumar/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository50 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- analyzing-binariesSkill
- analyzing-malwareSkill
- analyzing-memory-imagesSkill
- analyzing-network-trafficSkill
- analyzing-phishing-emailsSkill
- attacking-active-directorySkill
- attacking-wireless-networksSkill
- auditing-code-for-vulnerabilitiesSkill
- auditing-mcp-serversSkill
- auditing-supply-chainSkill
- container-securitySkill
- cracking-passwordsSkill
- engineering-detectionsSkill
- enumerating-network-servicesSkill
- escalating-linux-privilegesSkill
- escalating-windows-privilegesSkill
- establishing-persistenceSkill
- exploiting-cloud-platformsSkill
- hardening-cloud-postureSkill
- hunting-threatsSkill
- hunting-web-backdoorsSkill
- investigating-aws-incidentsSkill
- investigating-azure-incidentsSkill
- investigating-gcp-incidentsSkill
- investigating-m365-entraSkill
- investigating-windows-endpointsSkill
- maintaining-engagement-stateSkill
- managing-vulnerabilitiesSkill
- mapping-attack-techniquesSkill
- orchestrating-vulnerability-researchSkill
- performing-reconnaissanceSkill
- performing-social-engineeringSkill
- producing-threat-intelligenceSkill
- recognizing-deceptionSkill
- reporting-security-findingsSkill
- responding-to-incidentsSkill
- reviewing-cryptographySkill
- securing-ai-systemsSkill
- testing-apisSkill
- testing-ics-ot-protocolsSkill
- testing-mobile-applicationsSkill
- testing-web-applicationsSkill
- threat-modelingSkill
- transferring-filesSkill
- triaging-security-alertsSkill
- vetting-agent-extensionsSkill
- writing-sigma-rulesSkill
- writing-yara-rulesSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

