Skip to main content

Static analysis for authorization gaps (IDOR/CWE-639), missing authorization, SQL injection, and 30+ vulnerability types across Python, JavaScript, Go, Java, C#, and 35+ other languages.

Project description

Guardmarly — Static analysis for authorization gaps and risky code paths

Focused on missing object-level authorization checks (IDOR / broken access control) and related security findings across supported languages.

Guardmarly in action — CWE-22 path traversal detection in VS Code

Try Online Scanner PyPI CI License

pip install guardmarly && guardmarly src/

The problem

Authorization bugs — IDOR, missing access controls, privilege escalation — caused some of the largest data breaches in history. Most SAST tools can't find these bugs because they require tracing data from HTTP routes through auth guards into database queries.

What Guardmarly does differently

@app.route("/invoice/<id>")
def get_invoice(id):
    return Invoice.query.get(id)
    # ↑ CWE-639 IDOR: any user can view any invoice
    #   Bandit: silent. Semgrep OSS: silent. CodeQL: silent.
    #   Guardmarly: 🚨 CRITICAL — route flows to DB without auth check

Guardmarly maps every HTTP route, checks for auth guards, traces data flow to sinks, and flags the gap.

Quick start

pip install guardmarly
guardmarly src/                          # text output
guardmarly src/ --format json -o r.json  # JSON report
guardmarly src/ --format sarif           # SARIF for GitHub
guardmarly --show-stats                  # lifetime + today counts
guardmarly --list-rules                  # full rule catalog

Supported languages & CWEs

5 full-AST languages: Python, JavaScript/TypeScript, Go, Java, C#
35+ pattern-aware languages: PHP, Ruby, Kotlin, Swift, Dart, Rust, Scala, Elixir, C/C++, Lua, and 25+ more
35+ CWE types: IDOR (CWE-639), Missing Auth (CWE-862/306), SQLi (CWE-89), Command Injection (CWE-78), XSS (CWE-79), Path Traversal (CWE-22), SSRF (CWE-918), Deserialization (CWE-502), Hardcoded Secrets (CWE-798), Open Redirect (CWE-601), CSRF (CWE-352), XXE (CWE-611), and 25+ more.

Evidence: See CLAIMS_AND_EVIDENCE.md for benchmark methodology, corpus details, and measured results. Detection rates vary by language and CWE category.

Contributing

git clone https://github.com/mattybellx/Guardmarly.git
cd Guardmarly && pip install -e ".[dev]"
pytest tests/ -q                       # 1,183+ tests in ~12s

License

See LICENSE for terms. Guardmarly is source-available software.

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

guardmarly-6.6.0.tar.gz (930.8 kB view details)

Uploaded Source

Built Distribution

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

guardmarly-6.6.0-py3-none-any.whl (936.2 kB view details)

Uploaded Python 3

File details

Details for the file guardmarly-6.6.0.tar.gz.

File metadata

  • Download URL: guardmarly-6.6.0.tar.gz
  • Upload date:
  • Size: 930.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for guardmarly-6.6.0.tar.gz
Algorithm Hash digest
SHA256 717a1fcf20331f6491ea725ce623ad9e03865737b5f26bb9ac44dffbb227dd70
MD5 4af935969678e02bc36ff5f76636a411
BLAKE2b-256 8ee8d2417ea7baa9fa71e588e9c3180ebcb6896f0d313545fece5c3b01ef7b85

See more details on using hashes here.

Provenance

The following attestation bundles were made for guardmarly-6.6.0.tar.gz:

Publisher: publish.yml on mattybellx/Guardmarly

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

File details

Details for the file guardmarly-6.6.0-py3-none-any.whl.

File metadata

  • Download URL: guardmarly-6.6.0-py3-none-any.whl
  • Upload date:
  • Size: 936.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for guardmarly-6.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d63116a7f1b48380c66ef979cc0df7107107d9edafa452abc7680af8d68ec3fa
MD5 a18932ce2f9b65f31d6c644cde9b43b0
BLAKE2b-256 e6b5e1f3b1414ef490c2ada168b05929ab8d69fab02d5fd0945473121a7d56a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for guardmarly-6.6.0-py3-none-any.whl:

Publisher: publish.yml on mattybellx/Guardmarly

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