Lazaret
Static security, supply-chain and quality analysis for Python, JavaScript and SQL, 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
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
--depsand 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 516 real malicious npm and PyPI releases, 88% get the SUSPICIOUS verdict (GuardDog 71%), against none of 429 popular packages (GuardDog 18). Those releases were read while the detectors were written; of 745 others that none was written from, 86% do, and 98% of those verdicts rest on what the code does. - Install guard:
lazaret guardin front ofnpm install,npm ci,pnpm add,yarn add,bun add,pip install,uv add,uv sync,uv run,uvx,go get,cargo build,code --install-extensionorcode --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.--planchecks 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_targetchecking out the pull request's code, write permissions); online,python -I -m lazaret.registry.actionsasks GitHub whether each action's commit is in its repository's branches and whether a version tag moved. - Hunting:
lazaret-registry discoverfollows npm's, PyPI's and crates.io's new releases, and with--ecosystem githubevery new public GitHub repository: a look-alike of a popular repository kept as a candidate (--scanscans 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 hookchecks 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.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lazaret-0.1.9.tar.gz | 8.5 MB | With provenance | Details for lazaret-0.1.9.tar.gz |
Built distributions (wheels)
Total release size: 94.0 MB
Release files / lazaret-0.1.9.tar.gz
| Download URL | lazaret-0.1.9.tar.gz |
|---|---|
| Size | 8.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d9e3ce0cc503926ee7cf9953d153541ca3b3b3ebe4c2f4409d5dde24708c5920
|
|
BLAKE2b-256 checksum How to use checksums |
9a2c4ad86f471f2ebaf736d3d0672bb6ad6ee27a5263700b06438f8ec5745638
|
| 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 7, 2026.
Transparency logRelease files / lazaret-0.1.9-py3-none-win_arm64.whl
| Download URL | lazaret-0.1.9-py3-none-win_arm64.whl |
|---|---|
| Size | 10.6 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
b896fee267a87783226485658d288dff0cc442dfc32689217141df74624b1577
|
|
BLAKE2b-256 checksum How to use checksums |
dc7b940ece8c19d896e363a9430ae352e0ff882c9770b4f78f675b1f7e114452
|
| 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 7, 2026.
Transparency logRelease files / lazaret-0.1.9-py3-none-win_amd64.whl
| Download URL | lazaret-0.1.9-py3-none-win_amd64.whl |
|---|---|
| Size | 11.0 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
42afb5ee313640861fdf97e0f3cf64c4d5086c379a0b7f86da41bc9a33481ad9
|
|
BLAKE2b-256 checksum How to use checksums |
43a6df64097a7b014e0a3523ab4fbc50b8545aefea061990cbd049fa38307e92
|
| 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 7, 2026.
Transparency logRelease files / lazaret-0.1.9-py3-none-musllinux_1_2_x86_64.whl
| Download URL | lazaret-0.1.9-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 |
903d7a4f0e73c5a3ccda740fd63eda78d2737ce4ce1887e5c9061ecf4a521df5
|
|
BLAKE2b-256 checksum How to use checksums |
c59c3aca4d0389c8d68b9fd7ccaeb1989115844f89ff7b72a90d3b7177fe8c12
|
| 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 7, 2026.
Transparency logRelease files / lazaret-0.1.9-py3-none-musllinux_1_2_aarch64.whl
| Download URL | lazaret-0.1.9-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 |
9e86d9b1544a9c1a8ccdb1bcc38b7b10f3c1d12c09962595d1d1aa1f10dbb06e
|
|
BLAKE2b-256 checksum How to use checksums |
1bc424f4cc8b9edd6eb41f0da645eb3039c7b126f7b792df04f4b8aef967c019
|
| 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 7, 2026.
Transparency logRelease files / lazaret-0.1.9-py3-none-manylinux_2_28_x86_64.whl
| Download URL | lazaret-0.1.9-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 |
ece4c3a8ea9309be1ee2d13d69554bf4b107807649d27d4ecac69d64a7ec5062
|
|
BLAKE2b-256 checksum How to use checksums |
f0fe634e3f861fa6e48a30570ffa2611cad08204f48ad9012317162aef59bd74
|
| 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 7, 2026.
Transparency logRelease files / lazaret-0.1.9-py3-none-manylinux_2_28_aarch64.whl
| Download URL | lazaret-0.1.9-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 |
062b72c93d2f44996850c18802989ee4607d48ba58ab66e74075b0baf056f6c2
|
|
BLAKE2b-256 checksum How to use checksums |
c53d8b269f37a716b5e067df5b0369ef5955140769cf99a1d383fcbe91f9293b
|
| 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 7, 2026.
Transparency logRelease files / lazaret-0.1.9-py3-none-macosx_11_0_arm64.whl
| Download URL | lazaret-0.1.9-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 |
78e6736284e9abd8451c7298072851146f7a7b1661a06beb4a32d3c157ef30f1
|
|
BLAKE2b-256 checksum How to use checksums |
fe1cc514e17ca52a61e2b02500be5de0c628753dd07e2b533de1f3740deb575b
|
| 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 7, 2026.
Transparency logRelease files / lazaret-0.1.9-py3-none-macosx_10_12_x86_64.whl
| Download URL | lazaret-0.1.9-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 |
58d085fbcd8c844ff486c080ab725010a5be27f2e415a3e42ac2b3f0c6526fdb
|
|
BLAKE2b-256 checksum How to use checksums |
a677dc7d39198c32f6743d9d2d7a93010f7a4f8ad536ce27eef25ab928145c59
|
| 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 7, 2026.
Transparency logSecurity for lazaret 0.1.9
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.
Attestation for lazaret-0.1.9.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 7, 2026.
Transparency logA 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.