NEW IN SBOMATOR 1.4

Real-Time Supply-Chain
Threat Detection

Catching the next keyv-style npm attack — at scan time, at install time,
and before any vendor publishes an advisory

ESL — Engineering Software Lab  |  SBOMator 1.4.x  |  August 2026
www.eswlab.com  |  sales@eswlab.com

← Swipe to navigate →

New here? What is SBOMator?

SBOMator by ESL — Engineering Software Lab is a software supply-chain evidence platform: it discovers everything your product is built from, checks it against vulnerability and malware intelligence, and turns the result into audit-ready compliance evidence.

📦 Know what's inside

Generates CycloneDX SBOMs: direct and transitive dependencies, versions, suppliers, licenses, PURLs and resolvable hashes — the full ingredient list of your software.

🔎 Know what's dangerous

Correlates every component with NVD, OSV and Grype, adds CISA KEV exploitation status and FIRST EPSS prioritization, and records VEX affected / not-affected decisions.

📋 Prove what you did

Hash-chained, tamper-evident audit history and ready-made evidence packs for the EU Cyber Resilience Act and FDA Section 524B (medical devices).

🖥 Watch what changes

Endpoint monitoring inventories installed software, packages, runtimes and even AI-agent extensions — with rescans, integrity drift and new-CVE alerts.

Core philosophy: know what is in your product, know what changed, prove what you did.

It scans far more than package manifests

LayerWhat SBOMator analyzes
Source & vendored codeCMake projects, includes, SDK paths, known-library source signatures
Binaries.a • .lib • .so • .ko • .o + symbol analysis, cross-architecture: ARM, AArch64, RISC-V, MIPS, Xtensa, PowerPC
Firmware imagesHEX, U-Boot, SquashFS, CPIO, EXT4 — with Yocto and Zephyr Kconfig-aware analysis
Package ecosystemsnpm, PyPI, vcpkg, Conan, NuGet, Scoop, Chocolatey and more
Hardware (HBOM)Xilinx MPSoC / Vivado designs: HDL, IP cores, bitstreams join the evidence graph
AI / ML (AI-BOM)Models, CUDA/TensorRT stacks, agent skills — G7 SBOM-for-AI minimum elements
EndpointsInstalled software, runtimes, MCP servers and AI-agent skills on developer machines

Built for embedded and regulated products: Yocto, Zephyr, embOS, ThreadX, FreeRTOS — where the riskiest components never appear in any package manifest.

Why teams choose SBOMator

🔒 Runs where your code lives

Desktop dashboard + CLI on your own machines. Offline / air-gapped modes with local NVD, OSV and KEV mirrors — PUBLIC, HYBRID, PRIVATE or fully LOCAL, no cloud upload required.

🎯 Fewer false positives

Build-aware firmware analysis recognizes backported security fixes in Yocto and Zephyr instead of naively matching version numbers.

🤖 AI-era protection

HalluSquatting protection against hallucinated package names, plus security scanning of AI-agent skills and MCP servers.

🛡 Privacy-gated evidence

Local fingerprinting with a privacy gate that strips secrets before any external lookup — similarity evidence without blind disclosure.

And new in 1.4: the real-time supply-chain threat detection layer this presentation is about — starting with the attack that proved why it matters.

August 4, 2026 — the Mini Shai-Hulud attack

A compromised maintainer account poisoned keyv, cacheable, flat-cache, file-entry-cache and their family — foundational npm packages that arrive through chains like eslint → file-entry-cache → flat-cache → keyv.

  • 444 packages / 2,234 poisoned versions — a self-propagating worm using stolen publish tokens
  • Over 2 billion combined monthly installs in the blast radius
  • Credential stealer: GitHub, npm, AWS, GCP, Azure tokens — RSA-encrypted and exfiltrated to public GitHub repos labeled "Shai-Hulud: Here We Go Again"
  • IDE persistence: .vscode/tasks.json + .claude/settings.json — merely opening the repo executed the payload
  • A dead-man's switch fired an attacker command the moment stolen tokens were revoked

Mini Shai-Hulud timeline (all times UTC)

09:02 — Malicious commit lands in the public keyv GitHub repo: adds setup.mjs + 727 KB obfuscated payload
09:04 — Second commit plants VS Code / Claude Code auto-run hooks
09:08SBOMator detection point: repo watch flags the new setup.mjs install hook in the commit stream — 27 minutes before the package ever reached npm
09:35keyv@6.0.0 published to npm with a preinstall hook — and valid, CI-signed provenance
10:12–10:46 — Worm bursts into 8 more organizations (Ornikar, OneReach, ServiceTitan, Qlik…) at ~1 package/second
~13:45 — First comprehensive public write-up (Wiz), IOC CSV follows

The malware sat in public Git history for 33 minutes before it ever reached npm — and spread for hours before most teams heard about it.

Why traditional defenses were blind

❌ Provenance / SLSA validation

The attacker poisoned the source; the legitimate CI pipeline built, signed and published it. Provenance on keyv@6.0.0 was genuine.

❌ CVE scanners

No CVE existed. Vulnerability databases describe bugs, not freshly published malware.

❌ EDR / behavior monitoring

The payload used only legitimate signed binaries — node and the official Bun runtime from GitHub. Normal developer behavior, nothing anomalous to flag.

✅ Identity-based detection

The only thing that worked: knowing keyv@6.0.0 itself is malicious, or spotting the suspicious preinstall hook it introduced. That is exactly what SBOMator 1.4 adds.

The detection race — who knew when

Time (UTC)WhoWhat
09:08SBOMatorRepo-watch detection of the new install hook - before npm publish
09:35npm registrykeyv@6.0.0 publish event (raw signal)
~09:41Socket (automated)Scanner flags the preinstall hook — ~6 minutes after publish
morningSafeDep, Aikido feedsReal-time publish-event capture, subscriber feeds
~13:45WizFirst comprehensive public report + IOC CSV
hoursOSV.devCanonical MAL-* advisories (MAL-2026-11524 for keyv)

Lesson: real-time detection came from registry-metadata monitoring — new version → check lifecycle scripts → alert in minutes. Not from any cloud security platform. SBOMator 1.4 implements this exact mechanism on your endpoint.

What's new: three detection layers

1 — OSV.dev malware check in every SBOM scan

Every component is checked against OpenSSF MAL-* malicious-package advisories. Vendor-neutral, covering npm, PyPI, Go, crates.io, RubyGems, Maven, NuGet and more — one batched API call per 1,000 components.

2 — Real-time endpoint watcher with live OSV lookup

Every npm package added or changed on the machine is checked within 30 seconds against built-in IOCs, cached Wiz feeds, and a live OSV query.

3 — Install-hook delta heuristic (zero-day, feed-free)

Flags any new version that introduces a preinstall/install/postinstall script its previous release didn't have — the exact keyv pattern, detected with no threat feed at all.

The zero-day layer: install-hook delta

What changed between clean keyv@5.6.0 and malicious keyv@6.0.0:

  "scripts": {
    "build": "tsdown",
+   "preinstall": "node setup.mjs"     ← the entire attack
  },
  "files": [ "dist", "LICENSE",
+   "setup.mjs", "Math_Symbol.js"  ]
  • SBOMator fetches the npm registry's lightweight metadata and compares the hasInstallScript flag against the previous stable release
  • New hook where none existed → SUSPICIOUS alert with the exact script line as evidence
  • Works the moment the package lands — before Socket flagged it, before OSV had a record, half a day before the Wiz advisory
  • Catches keyv, both earlier Shai-Hulud waves, and the next campaign that reuses the pattern

Verified against the real attack

Live run of SBOMator 1.4 against the actual incident packages:

OSV keyv@6.0.0:  OSV malicious-package advisory (MAL-2026-11524)
OSV keyv@5.6.0:  clean
SBOM scan: keyv 6.0.0  <- Built-in IOC Database
SBOM scan: keyv 6.0.0  <- OSV.dev / OpenSSF malicious-packages
  • Malicious findings are corroborated across independent sources — built-in IOC database, Wiz feed, OSV — and each source is shown in the report
  • Reports include the OSV advisory ID and link for auditability
  • Offline mode still works: built-in database + cached feeds, no network required
  • 26 new automated tests; full suite green (126 tests)

How to use — SBOM scanning

  1. Launch SBOMator and select your project as usual
  2. Keep Online mode enabled (for live OSV + feed lookups)
  3. Generate the SBOM — the malware check runs automatically, no extra step

Where results appear

HTML report

Red CRITICAL SUPPLY CHAIN THREAT banner + table: package, version, threat, source, required action

SBOM JSON

metadata.esl_threat_detection summary and per-component esl_threat_intelligence blocks with OSV IDs

Offline scans fall back to the built-in IOC database and local caches (~\.esl-sbomator\threat_intel\, 6-hour refresh).

How to use — real-time protection

  1. Open the Endpoint tab
  2. Check "Real-Time Protection" → status shows Active (30s poll)
  3. Leave it running — alerts appear as packages arrive
AlertMeaningAction
MALICIOUSKnown-bad version (IOC feeds or live OSV)Remove immediately + rotate credentials
SUSPICIOUSNew install hook vs previous releaseReview before trusting

Positioning: this is not an EDR replacement — it's the supply-chain layer your EDR is blind to. EDR watches what code does; SBOMator watches what enters your software supply chain. The keyv payload looked completely benign to behavior-based tools.

What early detection is worth

Detected late (the common case)

  • Full incident response: forensics, credential rotation across GitHub / npm / AWS / GCP / Azure
  • Dead-man's-switch cleanup before rotating anything
  • Audit for exfil repos created under your identity
  • Days of engineering time, board-level reporting

Detected in minutes (SBOMator 1.4)

  • One registry-proxy block rule for the package family
  • Pin known-good versions, freeze auto-updates
  • Warn developers before anyone installs
  • ~10 minutes of configuration instead of days of IR

The worm reached its 2nd–12th victim organizations between 10:12 and 13:18 UTC — hours of window where an early alert prevented compromise entirely.

Shipping now & on the roadmap

✅ In SBOMator 1.4 today

OSV malware check in every scan • real-time endpoint watcher with live OSV • install-hook zero-day heuristic • multi-source IOC corroboration • keyv attack demo & sample client report

🚀 Next: be first, not just fast

  • npm publish-stream consumer — flag a malicious publish within ~60 seconds (would have alerted 09:36 UTC, five minutes before Socket)
  • Dependency repo watch — monitor the Git repos behind your SBOM; the keyv payload was visible in public commits at 09:02, turning into the 09:08 alert shown in the timeline — 27 minutes before npm

ESL — Engineering Software Lab
SBOMator: the supply-chain detection layer your EDR can't see.

www.eswlab.com  |  sales@eswlab.com

1 / 15