Home / Trust

Trust center

How to check our work

You should be able to audit a security tool. This page shows how to check a Lazaretto verdict, and how often we are wrong.

Principles the code holds to

execution

Never runs what it inspects

The fetcher only downloads and unpacks. The analyzer reads the files and their syntax trees. Nothing imports, installs or runs the artifact. The fetcher holds no credentials worth stealing.

determinism

No model in the scan path

Verdicts come from versioned, tested rules and known-bad matches. With the same input, rules and data, you get the same verdict.

restraint

Malicious means a match

malicious needs a match against known-bad data. Rules alone can only reach flagged. Each one shows its file, line and snippet.

failure

Fails closed, bills nothing

We never turn an error into clear, and we never bill one. A known-bad check that could not run reports null, not "no match".

signing

Hashed and signed

A verdict on scanned content names the SHA-256 of what was read. We sign each verdict with Ed25519, so you can check it offline. A release the registry has pulled goes by its exact name and version.

reports

Reports carry no hidden instructions

We strip invisible characters from quoted text before it reaches you. The rest is shown as evidence. Read it as data, never as instructions.

Published evidence

How the fetcher is isolated

Fetching untrusted code is the risky part of this job. So it runs as its own service with nothing of value on it.

  • A separate service. Its code opens no database connection. It holds no payment or signing keys.
  • HTTPS only, no credentials in URLs, and a host allowlist.
  • We resolve DNS ourselves and pin the connection to the address we checked. We refuse private, loopback, link-local and cloud-metadata addresses when we connect, and that covers rebinding.
  • We check each redirect against the same rules, for at most five hops.
  • Artifacts can be up to 5 MB. We unpack archives in memory, with limits on size and compression ratio. We write nothing to disk and run nothing.
  • An MCP server can live on any host, so that one target type drops the host-name list and nothing else.

What we keep

The privacy policy has the full detail.

  • Scan records and hashed IDs, so we can audit a verdict later.
  • We never keep the files we fetch, or a copy of a lockfile you check.
  • We store API keys as hashes. We cannot show a key again, so save it when you get it.
  • Card payments go through Stripe's hosted checkout. Card numbers never reach us.

This website

The site is part of the product, so it is held to the same standard.

  • No JavaScript at all. Our security policy starts from default-src 'none', so no script could run even if someone added one.
  • No cookies, analytics or tracking scripts. The only outside requests on the site are two status badges at the foot of the home page, sent with no referrer.
  • HTTPS only, with a strict transport policy. No other site can frame a page (frame-ancestors 'none').
  • Each page also comes as markdown, for agents: add .md to the path.

Disclosure and disputes

Found a vulnerability? Email security@lazaretto.dev. We acknowledge within three business days and do not pursue good-faith research. The policy is at /security and the contact at security.txt.

Think a verdict on something you publish is wrong? Email disputes@lazaretto.dev. A person decides a disputed malicious verdict within three business days. If we uphold it, we drop the cached result at once and list it in the corrections log.

Who runs it

Lazaretto is operated by Meridian Bridge Advisory LLC, a Florida limited liability company, doing business as Lazaretto. Contact contact@lazaretto.dev. Terms, privacy and the disclaimer are counsel-approved.

Lazaretto is a signals provider. A clear verdict means nothing matched our lists or rules at scan time. It makes no claim that an artifact carries no risk. You decide whether to install.