Rustmaninoff, IaC security scanner

v0.2.0 · Apache-2.0

Attribute scanning for IaC, without the Python tax.

Terraform, CloudFormation, Kubernetes, and Dockerfiles. Checkov-compatible YAML and CKV ids, in a Rust engine—not a Python port of Checkov, and not a full Trivy stack. Built for CI gates that have to finish in milliseconds.

20 msfull synthetic corpus
181built-in checks
4frameworks
~225×faster than Checkov on that corpus

Why not Checkov or Trivy

Those tools cover more. Rustmaninoff is the fast path when you already know the CKV ids you want to enforce.

Milliseconds, not seconds

20 ms on 1,540 resources vs 4.51 s Checkov (~225×) and 5.71 s Trivy (~285×). No Python VM and no policy-db refresh on the scan path.

One static binary

cargo install rustmaninoff, or a GitHub Release binary. Checkov needs Python and plugins. Trivy also pulls vulns, secrets, and SBOMs you may not want in an IaC-only job.

Checkov ids, Rust engine

Published CKV ids, YAML pass-conditions, and # checkov:skip= comments. Interpolations stay unknown and never fail CI. SARIF, JUnit, and JSON are first-class.

RustmaninoffCheckovTrivy
RuntimeOne Rust binaryPython + pluginsGo binary + DBs
IaC attribute checks181 CKV-styleLarge built-in packMisconfig policies
Graph / CKV2NoYesSome
Helm / Kustomize / plan JSONNoYesYes
Secrets / vulns / SBOMNoSecrets (Checkov)Yes
Skip commentsCheckov-compatibleNativeDifferent
This corpus (CLI)20 ms4.51 s5.71 s

Keep Checkov or Trivy when you need graph checks, Helm, or vulnerability scanning. Use Rustmaninoff when you want CKV attribute gates in CI without that cost. Closing that gap is the roadmap and the GitHub epics.

Install

cargo install rustmaninoff --locked
rustmaninoff scan . --framework terraform,cloudformation,kubernetes,docker

What it does

Terraform

.tf and .tf.json managed resources and data sources. Data sources are IR kind data, type data.TYPE.

CloudFormation

YAML and JSON Resources. Attribute paths are relative to Properties.

Kubernetes

Multi-document YAML, including List. Inline skip via checkov.io/skip.

Dockerfiles

Dockerfile, Containerfile, *.dockerfile. FROM tag, USER, COPY vs ADD, HEALTHCHECK.

Speed, on one corpus

Wall-clock CLI time, Apple M2, macOS 14.8. Median of three runs after warmup. 40 Terraform files (1,080 resources), 20 CloudFormation files (300 resources), 20 Kubernetes files (160 resources). Catalogs are not the same: Rustmaninoff ran 181 attribute checks.

Rustmaninoff 0.2.0
0.02 s
Checkov 3.3.21
4.51 s
Trivy 0.74.0
5.71 s
ScannerFullTerraformCloudFormationKubernetes
Rustmaninoff 0.2.020 ms11 ms9 ms11 ms
Checkov 3.3.214.51 s3.72 s2.71 s2.92 s
Trivy 0.74.05.71 s2.67 s1.29 s2.59 s

Policy dialect

A check definition is the pass condition. Built-in YAML is rewritten from Checkov (Bridgecrew / Palo Alto Networks, Apache-2.0) and keeps published CKV ids.

metadata:
  id: CKV_AWS_3
  name: Ensure all data stored in the EBS is securely encrypted
  severity: HIGH
  framework: terraform
resource_types:
- aws_ebs_volume
definition:
  cond_type: attribute
  attribute: encrypted
  operator: equals
  value: true

v0.2.0

Added

Terraform data sources, Dockerfile parser, Docker checks CKV_DOCKER_1–4, more TF/CFN/K8s attribute checks. Catalog is 181 (94 Terraform, 51 CloudFormation, 32 Kubernetes, 4 Docker).

Still out of scope

Graph checks (CKV2_*), Terraform plan JSON, remote modules, Helm, Kustomize, secrets scanning, full variable evaluation. Interpolations remain unknown.