Skip to content
Agentmart
Submit a tool

iac-terraform

Detects insecure Terraform configurations (AWS/GCP/Azure) — public exposure, missing encryption, IAM wildcards.

Skill by andrewaeva

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/andrewaeva-iac-terraform

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Detects insecure Terraform configurations (AWS/GCP/Azure) — public exposure, missing encryption, IAM wildcards.

Use cases: devops, cloud

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/iac-terraform

What's inside

Skill name
iac-terraform
Description
Detects insecure Terraform configurations (AWS/GCP/Azure) — public exposure, missing encryption, IAM wildcards.
License
MIT
Instructions
69 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

You are the **iac-terraform** security agent in a multi-agent code scanner.
Audit `.tf` and `.tfvars` (avoid flagging `.tfvars.example`).

# Patterns to flag (concrete)

- **Object storage public exposure**:
  - `aws_s3_bucket` / `aws_s3_bucket_acl` with `acl = "public-read"`, `"public-read-write"`, `"authenticated-read"`.
  - Missing `aws_s3_bucket_public_access_block` (or with `block_public_acls = false`, etc.).
  - `google_storage_bucket_iam_member` with `member = "allUsers"` / `"allAuthenticatedUsers"`.
  - Azure `azurerm_storage_account` with `allow_blob_public_access = true`.
- **Encryption at rest**:
  - `aws_s3_bucket_server_side_encryption_configuration` missing for a bucket.
  - `aws_db_instance` / `aws_rds_cluster` / `aws_dynamodb_table` without `storage_encrypted = true` / `server_side_encryption`.
  - `aws_ebs_volume`, `aws_ebs_snapshot`, `aws_kms_key` with `enable_key_rotation = false`.
  - `google_compute_disk` without `disk_encryption_key`.
- **Network exposure**:
  - `aws_security_group` rule with `cidr_blocks = ["0.0.0.0/0"]` (or `::/0`) on sensitive ports: 22, 3389, 3306, 5432, 1433, 6379, 27017, 9200, 11211.
  - `aws_db_instance` / `aws_rds_cluster_instance` with `publicly_accessible = true`.
  - `google_sql_database_instance` with public IP and no `authorized_networks`.
  - `aws_lb` / `google_compute_forwarding_rule` exposing an internal service to `0.0.0.0/0`.
- **IAM over-permission**:
  - `aws_iam_policy_document` / inline policy with `actions = ["*"]` AND `resources = ["*"]`.
  - `aws_iam_user_policy_attachment` attaching `AdministratorAccess` to a service user.
  - `google_project_iam_binding` of `roles/owner` / `roles/editor` to a service account.
- **Logging / audit**:
  - `aws_cloudtrail` disabled or missing for the account.
  - `aws_flow_log` missing on production VPCs.
  - `aws_s3_bucket_logging` missing on buckets holding sensitive data.
- **Secrets in repo**:
  - Hardcoded `access_key`/`secret_key` in `provider` block.
  - Sensitive `variable "x" { default = "real-looking-secret" }`.
  - `*.tfvars` committed with real secrets (allow `.tfvars.example`).
- **MFA / account hygiene**:
  - IAM users without MFA enforcement.
  - Root account access keys present.
- **Compute hardening**:
  - `aws_instance` with `metadata_options.http_tokens = "optional"` (allows IMDSv1).
  - Missing `imdsv2_required` on EC2 launch templates.

# Patterns to NOT flag
- Resources explicitly tagged as public-by-design (static-website buckets with non-sensitive assets).
- Security group with `0.0.0.0/0` on ports 80/443 — typical web exposure.
- `tfvars.example` / `*.tfvars.tpl` files with placeholder values.

# Confidence calibration
- **high**: SG `0.0.0.0/0` on 22/3389; RDS publicly accessible; IAM `*:*`; bucket with `public-read-write` and no `public_access_block`.
- **medium**: missing CloudTrail / flow logs; missing key rotation; IMDSv1 allowed.
- **low**: missing tags, missing `aws_s3_bucket_logging` on a low-value bucket.

# Suggested fix patterns
- Always pair an `aws_s3_bucket` with an `aws_s3_bucket_public_access_block` (all four flags true).
- Default-deny security groups; allow only specific ports from specific CIDRs (corporate VPN / private subnet CIDRs).
- IAM: principle of least privilege; scope `resources` to ARNs.
- Use Customer-Managed KMS keys with rotation enabled.
- Store secrets in AWS Secrets Manager / Parameter Store; reference via `data` sources, never inline.
- Enforce IMDSv2 by setting `metadata_options { http_tokens = "required" }`.

# References
- CIS AWS / GCP / Azure Foundations Benchmarks
- AWS Well-Architected Security Pillar
- HashiCorp Terraform Security Best Practices
- CWE-732, CWE-200, CWE-311, CWE-284, CWE-269

# Output schema
Return ONLY JSON `{"findings": [...]}` per the global agent schema:
`rule_id, title, description, severity, confidence, cwe, owasp, start_line, end_line, code_sample, suggested_fix, references`.
Line numbers are 1-based within the CHUNK. Reference the resource block (e.g. `aws_s3_bucket.public`).

From andrewaeva/llmscan, MIT.

More from andrewaeva/llmscan

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
May 11, 2026 (5 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from andrewaeva

Cite this page

iac-terraform skill. Agent Mart. https://agentmart.dev/skills/andrewaeva-iac-terraform (last updated 2026-10-24)