Skip to main content

CVM — Configuration Vulnerability Meter

Quantitative, reproducible scoring of the risk a system's configuration introduces, based on CCSS (NISTIR 7502). CASPAR is the reference implementation.

Configuration scanners tend to answer pass or fail against a checklist. Vulnerability scanners answer which known CVEs apply. CVM sits between them: it scores how much risk a configuration actually introduces, on a comparable scale, and detects attack chains — combinations of individually moderate weaknesses that together are severe.

pip install cvm-caspar
caspar init                      # restore the built-in knowledge base
caspar demo                      # write example configurations
caspar scan caspar-demo/apache-vulnerable.conf

caspar init is required once and only for pip installs: it restores the same canonical knowledge base that the Docker image and the repository installer ship, so scores are comparable across all three.

What it assesses

Twelve targets out of the box — Apache HTTP Server, nginx, SSH, MySQL, PostgreSQL, Redis, Tomcat, Docker, Dockerfile, Kubernetes, Ubuntu and Azure IaC — from knowledge derived from public CIS Benchmarks and DISA STIGs, with the provenance of every rule recorded.

caspar scan /etc/apache2/                # a directory
caspar scan --live apache2               # the installed service
caspar scan docker://httpd:2.4           # an image
caspar scan k8s-manifest.yaml            # IaC

Every scan ends with a reproducible: … kb sha256:… line. Scores are only comparable between identical knowledge bases, so that hash is what makes a result checkable by someone else.

The web console

pip install "cvm-caspar[api]"
caspar serve                             # http://127.0.0.1:2027

Both consoles ship built inside the package — no Node toolchain needed. The v2 console answers at /app, v1 at /v1/app, and the REST API with its Swagger UI at /api/v1 and /docs.

Extras

Extra For
(none) the CLI: scan, report, diff, explain
[api] caspar serve — REST API + both web consoles
[publish] pushing results to an external endpoint
[dev] running the test suite

Build-time knowledge extraction

Adding a target from a benchmark PDF uses an LLM with RAG and is a build-time operation, separate from scanning:

caspar plugin add --source benchmark.pdf --target nginx
caspar build --provider anthropic        # or ollama (local), openai

Hosted providers read ANTHROPIC_API_KEY / OPENAI_API_KEY from the environment only — never a command-line flag or an API field, which would put the key in shell history or in a stored job record. Scanning itself uses no LLM and is fully deterministic.

Scope

Single instance, self-hosted. No multi-tenancy, no user accounts, no hosted service. CVM runs where the systems it assesses are, which is also why it needs no agents and no third-party SSH credentials.

Licence and provenance

Apache 2.0. The scoring method implements CCSS (NISTIR 7502, NIST — a US Government publication, not subject to copyright).

The knowledge base derives from public CIS Benchmarks and DISA STIGs, with provenance declared per target: what ships is machine-extracted rules carrying their own metrics, justifications and remediations — the benchmark documents themselves are never redistributed, and building a new target means supplying your own copy. The SCAP Security Guide (ComplianceAsCode/content, BSD-3-Clause, © Red Hat) is pinned by version with its SHA recorded in the reproducibility manifest. Full detail in the NOTICE file shipped with the package.

Source, documentation and the Docker images: https://github.com/AFilipe-IT/cvm

Metadata

Release files for cvm-caspar 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cvm-caspar 1.1.0
File Size Uploaded
cvm_caspar-1.1.0.tar.gz 5.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for cvm-caspar 1.1.0
File Interpreter ABI Platform
cvm_caspar-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 6.5 MB

Release files / cvm_caspar-1.1.0.tar.gz

Download URL cvm_caspar-1.1.0.tar.gz
Size 5.2 MB
Tags Source
SHA-256 checksum
How to use checksums
8edabecb311c3df17df40b975933d0d96f84416a90af64525b9d8fdcab7aa02e
BLAKE2b-256 checksum
How to use checksums
3601a21d0e953f04f4e9c640d5121bf2ab4fed9a0f6cf10b527811c71773e244
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cvm_caspar-1.1.0-py3-none-any.whl

Download URL cvm_caspar-1.1.0-py3-none-any.whl
Size 1.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9448175ba60fae6bf6093e2e1d6d10583fea927012fea7a9c229f5e29c2b9c32
BLAKE2b-256 checksum
How to use checksums
30b8482d1aaf8e95e9214852bde0c99235721e49ec528c9593265b5fe71405c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

1.1.1

2 release files

This release

1.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page