What it scans
| Format | What we look at |
|---|---|
| Terraform | *.tf and *.tf.json files |
| CloudFormation | YAML / JSON templates |
| Kubernetes | *.yaml / *.yml manifests |
| Helm charts | Chart templates + values files |
| Dockerfile | Dockerfile, *.dockerfile |
| Azure ARM | JSON templates |
Common findings
AWS / Terraform
- S3 bucket without server-side encryption
- S3 bucket with public-read ACL
- Security group allowing
0.0.0.0/0to port 22 / 3389 / 5432 / 27017 - IAM policy with
Action: *onResource: * - RDS instance without encryption-at-rest
- KMS key without rotation
- CloudTrail not configured for multi-region
Kubernetes
- Pod running as root (
runAsUser: 0or unset) - Privileged container (
securityContext.privileged: true) - Pod with
hostNetwork/hostPID/hostIPC: true - Pod with no
resources.limits→ no QoS guarantees - Service of type
LoadBalancerwith no source-IP allow-list - Default service account being used (
automountServiceAccountTokennot set to false) - Missing
readOnlyRootFilesystem: true - Capabilities not dropped (
capabilities.drop: [ALL]missing)
Dockerfile
USER root(or noUSERdirective — defaults to root)- No
HEALTHCHECK :latesttag (or no tag) onFROM— non-deterministic buildsapt-get installwithout--no-install-recommends- Sensitive ports exposed (22, 3389, 23, 21)
ADDfrom a remote URL (usewget+ verify checksum instead)
Excluding paths
By default the scan walks the whole working tree. To skip directories (archived or vendored IaC, generated manifests, …), use the CLI’s--exclude flag or the org/repo exclude paths config that CI scans read:
Suppressing findings
In the dashboard — open the finding’s side panel and set its status dropdown to Accepted (Risk) (or Won’t Fix / False Positive). To skip whole paths at scan time, use--exclude.