Skip to main content

CASM: Continuous Attack Surface Monitoring

Project description

CASM

Continuous Attack Surface Monitoring

CASM logo

Evidence-first attack surface monitoring with safe, scope-bound verification and run-over-run change tracking.

CASM helps security teams continuously monitor external exposure in authorized environments. It discovers assets, verifies HTTP/TLS posture, and compares each run against a baseline to show exactly what changed.

Quick Start

# Install
pip install g2cv-casm

# Create a minimal scope and targets file
cat > scope.yaml <<'YAML'
engagement_id: quickstart
allowed_domains: [example.com]
allowed_ips: []
allowed_ports: [443]
allowed_protocols: [https]
seed_targets: [example.com]
max_rate: 5
max_concurrency: 2
active_allowed: false
auth_allowed: false
YAML

cat > targets.json <<'JSON'
{
  "targets": [
    {"url": "https://example.com", "method": "HEAD"}
  ]
}
JSON

# Run a unified scan
casm run unified --config scope.yaml --targets-file targets.json --dry-run false

# Compare with a previous run
casm diff --old runs/baseline/results.sarif --new runs/current/results.sarif

By default, CASM auto-resolves tool binaries in this order: bundled wheel tools, local hands/bin (source tree), cache, then optional download configured with CASM_TOOL_DOWNLOAD_URL_TEMPLATE and CASM_TOOL_MANIFEST_URL.

In a source checkout, if hands/bin/<tool> is missing and Go is installed, CASM auto-builds the tool on first use.

What CASM Does

  • Discover exposed assets across HTTP, DNS, and TLS contexts.
  • Verify web hardening signals and transport/security headers.
  • Track change between scans with baseline-aware diffs.
  • Report in SARIF, Markdown, PDF, and JSONL evidence streams.

Safety by Default

  • Authorization-first scope controls (domains, IPs, ports, protocols).
  • Dry-run support, deterministic blocking reasons, and rate/concurrency guardrails.

Screenshots

Executive Summary (PDF) Executive Summary

Changes Since Last Scan (PDF) Changes Since Last Scan

Documentation

  • Full docs: docs/ (or run mkdocs serve)
  • Tutorials: docs/tutorials/
  • CLI reference: docs/reference/cli.md
  • Configuration reference: docs/reference/configuration.md
  • GitHub Auto-Diff Bot guide: docs/how-to/github-auto-diff.md
  • Release guide: docs/how-to/release-python-package.md
  • Security model: docs/explanation/security-model.md

Project Notes

  • Package name on PyPI: g2cv-casm
  • CLI commands: casm and g2cv-casm
  • Versioning is tag-driven (vMAJOR.MINOR.PATCH)

Contributing and Security

  • Contribution guide: CONTRIBUTING.md
  • Security policy: SECURITY.md
  • Code of conduct: CODE_OF_CONDUCT.md

Support

If CASM is useful for your team, consider starring the repository. It helps others discover the project and supports ongoing development.

License

AGPL-3.0. See LICENSE.

Questions or partnerships: contact@g2cv.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

g2cv_casm-0.3.0.tar.gz (12.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

g2cv_casm-0.3.0-cp311-cp311-win_amd64.whl (24.5 MB view details)

Uploaded CPython 3.11Windows x86-64

g2cv_casm-0.3.0-cp311-cp311-manylinux2014_x86_64.whl (24.6 MB view details)

Uploaded CPython 3.11

File details

Details for the file g2cv_casm-0.3.0.tar.gz.

File metadata

  • Download URL: g2cv_casm-0.3.0.tar.gz
  • Upload date:
  • Size: 12.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for g2cv_casm-0.3.0.tar.gz
Algorithm Hash digest
SHA256 4ab8faa165f96773f63af87ff78b621e5a1e7b75d9c95882f3432fa352593627
MD5 ffcd4169ff28d13487e0d3d4d0ad820b
BLAKE2b-256 058816c8397941b2764f794d44120ecc454db2c29002ce49c168b481f44e1d67

See more details on using hashes here.

Provenance

The following attestation bundles were made for g2cv_casm-0.3.0.tar.gz:

Publisher: pypi-release.yml on G2CV/CASM

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file g2cv_casm-0.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: g2cv_casm-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 24.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for g2cv_casm-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9f40b0a2ccb7b8a631b856f8f0c7797df13d11bff9a1b277954220978564d652
MD5 09ec324d0fcb80c7cbce1320aebf1f75
BLAKE2b-256 1650495c5a8e357ec35dd7632635a401506c8350be3df280c03f7900479916a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for g2cv_casm-0.3.0-cp311-cp311-win_amd64.whl:

Publisher: pypi-release.yml on G2CV/CASM

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file g2cv_casm-0.3.0-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for g2cv_casm-0.3.0-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a692c29069e9f32e6e7c680da262906c01eecbc2272641eed30cd932959ad4a
MD5 c41b8e1a4773819156e83428beaa4331
BLAKE2b-256 46a7fb2878524afc6231144b561fce285935b9b546a96540e6bb701528937ff8

See more details on using hashes here.

Provenance

The following attestation bundles were made for g2cv_casm-0.3.0-cp311-cp311-manylinux2014_x86_64.whl:

Publisher: pypi-release.yml on G2CV/CASM

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page