Skip to main content

Lazaret

Static security, supply-chain and quality analysis for Python, JavaScript, TypeScript and SQL, plus supply-chain and credential checks for Go and Rust, with no dependencies: Lazaret runs on the Python standard library and its own native engine (written in Rust, with no external crates; every wheel carries it), and even building it downloads nothing.

pip install lazaret
lazaret path/to/project                 # scan; writes lazaret-report.{html,json}
lazaret . --ci --sarif out.sarif        # quality gate for CI, SARIF for code scanning
lazaret . --deps                        # also audit node_modules and site-packages
lazaret . --verify-secrets              # ask each secret's provider whether it is live
lazaret scan github:owner/repo@v1.2.3   # a GitHub or GitLab repository at a commit
lazaret --extensions                    # the VS Code (Cursor, VSCodium, …) extensions installed here
lazaret-registry scan npm:left-pad      # audit a published package: npm:, pypi:, go:, crates:, openvsx:, vscode:
lazaret guard npm install express       # check what npm, pnpm, yarn, Bun, pip, uv, go or cargo installs, before it runs
lazaret guard code --install-extension ms-python.python   # … and what VS Code, Cursor, VSCodium and the others install
lazaret hook                            # check the files staged for commit (also a pre-commit hook)
lazaret-sca --update-bundle             # download OSV + CISA KEV + EPSS into cve-bundle.json
lazaret-sca . --bundle cve-bundle.json  # match installed npm, PyPI, Go and Rust dependencies against CVEs
lazaret-mcp                             # MCP server, so an AI assistant can scan code

The PyPI package is the complete current distribution: it provides the project scanner and lazaret-mcp, so an npm installation is not also required. The npm package provides the project scanner and commit-time hook but no MCP server in 0.1.10. Full MCP capability from either package is planned for 0.2.0 (#83). For Claude Code and Claude Desktop configuration, see MCP setup.

What it finds:

  • Security: SQL/command/code injection, SSTI, XXE, unsafe deserialization, XSS sinks, weak crypto, disabled TLS verification, hardcoded secrets (provider signatures and entropy, in code and in config files), and more, across 64 pattern rules plus supply-chain and coverage findings.
  • Taint analysis: follows untrusted input through assignments, function calls, and across files into sinks, in Python and in JavaScript and TypeScript (read with a real parser), with Flask, Django, FastAPI and Express routes modeled, category-aware sanitizers, and a configurable source/sink/sanitizer spec.
  • Supply chain, in your tree, in --deps and in published npm and PyPI packages, Go modules, crates and VS Code extensions: install hooks followed to the scripts they run and the scripts those start; code that runs at import, and in registry scans the code a package runs only when it is used; the strings a file decodes as it runs (hex, base64, its own decoding, XOR or character-code helpers, javascript-obfuscator's string arrays and proxy objects); a value received over the network in one file and run in another; data read from the machine followed to where it is sent; credential sweeps; reverse shells and miners; programs set to start at login; worms that publish themselves; code hidden off-screen; smuggled binaries and nested archives; names one change from a popular package's; and a new dependency published days before a release. On the canonical audit draw, 454 of 516 selected malicious npm and PyPI releases get the SUSPICIOUS verdict (88.0%), or 454 of the 513 that contain files to scan (88.5%); counting releases flagged for review, the figures are 478/516 (92.6%) and 478/513 (93.2%). On a separate 750-release holdout that no detector was written from, 82.4% are held and 89.1% are held or flagged for review. None of 1,703 popular releases is held.
  • Install guard: lazaret guard in front of npm install, npm ci, pnpm add, yarn add, bun add, pip install, uv add, uv sync, uv run, uvx, go get, cargo build, code --install-extension or code --update-extensions (and its forks') resolves what would be installed, fetches and scans every package in memory, and installs nothing if one is SUSPICIOUS, can't be checked or read whole, is under 30 days old and lacks the provenance the release before it had, or is younger than --min-age (2 days by default). Private registries and indexes are read with the credentials the package manager's own settings give, sent to that host only. --plan checks without installing; verdicts are cached by digest.
  • CI files: GitHub Actions workflows and GitLab CI files checked for the shapes the worms planted, for a step that sends secrets out, and for hardening (an action not pinned to a commit, pull_request_target checking out the pull request's code, write permissions); online, python -I -m lazaret.registry.actions asks GitHub whether each action's commit is in its repository's branches and whether a version tag moved.
  • Hunting: lazaret-registry discover follows npm's, PyPI's and crates.io's new releases, and with --ecosystem github every new public GitHub repository: a look-alike of a popular repository kept as a candidate (--scan scans it once it has code), a worm's exfiltration repository reported, or every one that gets code scanned (--github-scan-all).
  • Before you commit: lazaret hook checks the files being committed, as staged, and fails on the quality gate's security and supply-chain conditions (a credential, a critical vulnerability, a supply-chain indicator, a cross-file taint flow). pre-commit runs it from https://github.com/lazaret-dev/lazaret-pre-commit.
  • Quality: bugs, code smells, complexity, duplication, with a quality gate and ratings.

Every command prints its version with --version; the scanners also name the engine. Lazaret runs on Python 3.10 or later. Its scanning engine is native code, written in Rust with no external crates. pip installs it with the platform wheels for Linux (x86-64 and ARM64, with glibc 2.28 or later or with musl 1.2 or later, as on Alpine), macOS (Apple silicon, and Intel from 10.12) and Windows (x64 and ARM64); everywhere else pip builds a wheel from the source distribution, which compiles the engine and needs Rust (rustup).

Two of its building blocks are usable on their own (provisional APIs until 1.0): lazaret.pg, a PostgreSQL client in pure Python with SCRAM-SHA-256, channel binding and TLS; and lazaret.safexml, a layer that makes the stdlib XML parsers safe for untrusted input.

Licensed under Apache-2.0. The Unicode 13.0 tables the scanners pin text to are Unicode data, under the Unicode License v3. The native engine every wheel carries is Lazaret's own work since 0.1.9, so the wheels and the sdist are Apache-2.0 AND Unicode-3.0. Each carries the licenses and notices it names. Documentation, source and issue tracker: https://github.com/lazaret-dev/lazaret · https://lazaret.dev · Changes: https://github.com/lazaret-dev/lazaret/blob/main/CHANGELOG.md

Metadata

Release files for lazaret 0.1.10

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

Source distribution (sdist)

Source distribution for lazaret 0.1.10
File Size Uploaded Provenance Actions
lazaret-0.1.10.tar.gz 8.5 MB With provenance Details for lazaret-0.1.10.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for lazaret 0.1.10
File Actions
lazaret-0.1.10-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details for lazaret-0.1.10-py3-none-win_arm64.whl
lazaret-0.1.10-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for lazaret-0.1.10-py3-none-win_amd64.whl
lazaret-0.1.10-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details for lazaret-0.1.10-py3-none-musllinux_1_2_x86_64.whl
lazaret-0.1.10-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details for lazaret-0.1.10-py3-none-musllinux_1_2_aarch64.whl
lazaret-0.1.10-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details for lazaret-0.1.10-py3-none-manylinux_2_28_x86_64.whl
lazaret-0.1.10-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details for lazaret-0.1.10-py3-none-manylinux_2_28_aarch64.whl
lazaret-0.1.10-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for lazaret-0.1.10-py3-none-macosx_11_0_arm64.whl
lazaret-0.1.10-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details for lazaret-0.1.10-py3-none-macosx_10_12_x86_64.whl

Total release size: 94.0 MB

Release files / lazaret-0.1.10.tar.gz

Download URL lazaret-0.1.10.tar.gz
Size 8.5 MB
Tags Source
SHA-256 checksum
How to use checksums
c714a47ef0874877ad88f6d722f3a0a93a0a0d05f9cd45cd778b32ac45dedb07
BLAKE2b-256 checksum
How to use checksums
d87a0d104aa79a9bae0b2ab45a9d184ffccf98142f61324049b09e052a894556
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / lazaret-0.1.10-py3-none-win_arm64.whl

Download URL lazaret-0.1.10-py3-none-win_arm64.whl
Size 10.6 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
05b75cc9836c25f434217f6847147ca3a6f17d177050f9a8d3bfeb2c9831e596
BLAKE2b-256 checksum
How to use checksums
d02911d756e7a4ef7873b0c3ca7dc9aad0207680b5a2101492a740a1b3ca201d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / lazaret-0.1.10-py3-none-win_amd64.whl

Download URL lazaret-0.1.10-py3-none-win_amd64.whl
Size 11.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
d5cbc3b41d0aa36bad4aa4e222f14943988fa7449ee864229642c9f5dc7ddb17
BLAKE2b-256 checksum
How to use checksums
b1d98a1abe68d54fc45d9f261ace7d052e15221a8d98d0b2e59ebfffd49f4b04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / lazaret-0.1.10-py3-none-musllinux_1_2_x86_64.whl

Download URL lazaret-0.1.10-py3-none-musllinux_1_2_x86_64.whl
Size 11.0 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
1f2d86a381786b762fcc9e5f3f9e876e1b730252aa3fa8f3456c93838c8b2879
BLAKE2b-256 checksum
How to use checksums
260f24bd6cf42eb4d2d30f7160351f3f6f328994ab85dfcfc1308a36ebebf05b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / lazaret-0.1.10-py3-none-musllinux_1_2_aarch64.whl

Download URL lazaret-0.1.10-py3-none-musllinux_1_2_aarch64.whl
Size 10.5 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
18ed0dc4b055deb876e2bc3d6d656b1d4f1a799ad5ee42f188b6f8f8fdfb88a7
BLAKE2b-256 checksum
How to use checksums
9adb3f3e58f2343b5df72608985989acbc4c8267cc482d7be2f7b04e9b42a502
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / lazaret-0.1.10-py3-none-manylinux_2_28_x86_64.whl

Download URL lazaret-0.1.10-py3-none-manylinux_2_28_x86_64.whl
Size 11.0 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
6b9c41decb659b0d1bcacfb46b33b45dfea4e6e1fd8857e9c489f4435b8dfa8c
BLAKE2b-256 checksum
How to use checksums
1a8178701a04f168349a4fba94f92a13a437877ed4567dec8651c01d287cfce3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / lazaret-0.1.10-py3-none-manylinux_2_28_aarch64.whl

Download URL lazaret-0.1.10-py3-none-manylinux_2_28_aarch64.whl
Size 10.4 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
63a4c48218f489c6b9acce80659dc2a1fa5a6e83bb8a6a57be8f8fa8f6ee4b99
BLAKE2b-256 checksum
How to use checksums
e596be5b6a339b8b5fc25025774819928795e60a8794a972ddb6a6c5d1d542b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / lazaret-0.1.10-py3-none-macosx_11_0_arm64.whl

Download URL lazaret-0.1.10-py3-none-macosx_11_0_arm64.whl
Size 10.3 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
71bb4b9a4de1985334c6454e99c35203bbfe2bb35c7f0b3e466bcaa301cf9a14
BLAKE2b-256 checksum
How to use checksums
7d1ac254e30edfe84f55fba8efd87b15545d61a3c6eac80e82746ae8b387fdfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Release files / lazaret-0.1.10-py3-none-macosx_10_12_x86_64.whl

Download URL lazaret-0.1.10-py3-none-macosx_10_12_x86_64.whl
Size 10.8 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c0630cd9d07110f6b332186f09c8307f8034d8dfbdab1d1a09513875d19af272
BLAKE2b-256 checksum
How to use checksums
17594ddbdece14925ac6b093e4c3b36797e5a0f18f4af939bb02bc49ac77aad2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

Security for lazaret 0.1.10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 9 files in this release have been uploaded with provenance metadata.

Select from 9 files

Attestation for lazaret-0.1.10.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 8, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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