Feeling overwhelmed by AI? Learn the Centaur Mindset. Read More →
Two cards compared side by side. A low-quality SBOM shows 10 vulnerabilities seen, 2 components unchecked, and conformance FAIL with 3 mandatory failures. A BomLens-generated SBOM shows 36 vulnerabilities seen, 0 unchecked, conformance PASS. Below, three critical findings with a 7-day deadline: ejs CVE-2022-29078, lodash CVE-2019-10744, minimist CVE-2021-44906.

Your Supplier Sent an SBOM. Now What?: Turning CycloneDX Into Risk Decisions with BomLens

Here is a situation that has quietly become everyone’s problem. A vendor ships you a piece of software, and along with it a file called bom.json. It is a Software Bill of Materials, or SBOM: a machine-readable list of every open-source component inside that software, the same way a packaged food lists its ingredients. Regulators now ask for these, procurement teams now demand them, and your own security team now receives them. So the file lands in your inbox. Now what? ...

November 3, 2026 · 20 min · Scott Algatt
A terminal showing a forged proofbundle receipt, signed with an attacker's freshly generated key, printing CRYPTO: OK and exiting 0. Below it the same forged receipt is verified again with a trust policy and prints POLICY: FAIL, signer public key is NOT in allowed_issuers, exit 3.

A Forged Receipt That Verifies: Offline Evidence with proofbundle

A number travels further than the system that produced it. A CI job says a model scored 0.97 on a benchmark, and that 0.97 ends up in a Slack thread, a slide, a vendor questionnaire, an audit binder. By the third hop, nobody can say who produced it or whether it’s the same number the job printed. It’s a screenshot. The standard fix is a digital signature: the producer signs the result with a private key, and anyone holding the matching public key can check that the bytes haven’t changed and that the key holder signed them. Signing software artifacts is well understood by now; projects like Sigstore do it at scale. But most of that machinery assumes the person checking can reach the internet: a transparency log, a certificate authority, an identity provider. An auditor in a locked-down review room, or an incident responder archiving evidence for a year, may not have any of that. ...

October 27, 2026 · 28 min · Scott Algatt
Two oci-explorer score cards stacked. The top one is a busybox image with four 20-byte junk files attached and scores 9 out of 10, grade A. The bottom one is oci-explorer's own image, keylessly signed in CI and verified with cosign, and also scores 9 out of 10, grade A.

Grade A, Signed by Nobody: What oci-explorer's Supply Chain Score Actually Measures

Ask most teams what’s attached to the container image running in production and you’ll get an answer about their CI pipeline: “we sign it, we generate an SBOM, we attach provenance.” That’s a statement about what the pipeline tried to do. Whether the registry actually holds those things, linked to the right image, in a form the next tool can find, is a different question, and it’s surprisingly hard to answer in under a minute. ...

October 2, 2026 · 21 min · Scott Algatt
Terminal output from agent-bom scan showing a security posture summary with 2 critical, 21 high, 20 medium, and 5 low findings, a posture grade of F, and a findings table naming a CVE in axios with a blast radius chain ending in a browser session token

The CVE List Isn't the Point: Mapping Blast Radius in AI Infrastructure with agent-bom

The Rabbit Hole Generator gave me agent-bom this week, and it landed on a question I’ve been circling for a while: what does a vulnerability scanner actually owe you once “AI agent” and “MCP server” show up in your stack next to the usual packages and containers? A traditional scanner tells you a package has a CVE. It stops there. It doesn’t know that package sits inside an MCP server (a small local process that gives an AI agent tools like “read this file” or “run this shell command”), and it definitely doesn’t know that server has an AWS_SECRET_ACCESS_KEY sitting in its environment. agent-bom is built specifically to answer the next question a CVE list never does: from this vulnerable package, what can actually be reached? ...

September 18, 2026 · 12 min · Scott Algatt
Terminal-style output from macaron analyze against Django 5.0.6, showing four failed provenance/build checks, one passed license check, a 17-check summary totaling 10 failures, and the report JSON showing is_inferred true with a Not Available justification

Beyond CVEs: Verifying Supply Chain Provenance with Macaron

The Rabbit Hole Generator gave me Macaron this week, Oracle’s open-source tool for checking software supply chain security. My first instinct was to file it next to every other dependency scanner I’ve used: point it at a package, get a list of CVEs back. That’s not what it does, and the gap between those two things turned out to be the actual point. A vulnerability scanner answers “does this package version have a known CVE.” Macaron answers a different question: “was this artifact actually built from the source code we think it was, by a process we can verify, with evidence that isn’t just the vendor’s word for it.” Those sound similar. They aren’t. A package can have zero known CVEs and still have no evidence at all connecting the file you pip installed to the GitHub repo everyone assumes it came from. ...

September 11, 2026 · 11 min · Scott Algatt