v3.2.0 — ATP CLI, Standalone MCP Shield Middleware, Hack Trust Score, OAST Audit
[3.2.0] - 2026-07-25
Added
- ATP CLI verify/status — offline command-line verification for any ATP artifact (AIC, receipt, scope, trust-chain, attestation). TypeScript:
lyrie-atp verify <file>/lyrie-atp status <file>via a newbinentry in@lyrie/atp(packages/atp/src/cli.ts), using the existingdetectArtifactKind()+verifyArtifact(). Python:lyrie atp verify <file>/lyrie atp status <file>subcommands insdk/python/lyrie/cli.py, bridging to the TS verifier via a documented JSON stdin/stdout call rather than reimplementing Ed25519 crypto in Python. Works fully offline, no server required. - Standalone importable MCP Shield middleware (
createShieldGuard) —packages/mcp/src/shield-middleware.ts, exported from@lyrie/mcp. Lets any Node/Bun MCP client wrap their own tool-call handler with Lyrie's prompt-injection/credential/self-propagation filtering in ~2 lines, without adopting the fullMcpRegistry/daemon stack. Reuses the existingshield.tsdetection logic — no duplicated rules, no behavioral divergence from theMcpRegistry-integrated path. - Trust score for
lyrie hack— deterministic 0-100 aggregate score computed fromHackReportfindings, with a transparent per-severityTrustScoreBreakdown(no black-box number). New--trust-scoreCLI flag. Same findings always produce the same score. - OAST module test coverage —
packages/core/src/pentest/oast/server.test.ts(35 tests), the module's first test coverage since it was added in v3.1.0.
Fixed
- OAST server:
start()only attached a one-shoterrorlistener during the initiallisten()call; any async server error afterward (e.g.EMFILE) would have been an unhandlederrorevent on anEventEmitterwith zero listeners, which Node re-throws as an uncaught exception capable of crashing the whole pentest process. Added a permanent post-startup handler. - OAST
generateSqliOobPayloads(): the MySQLLOAD_FILEpayload interpolated the DNS hostname unquoted inside a SQLCONCAT(), unlike every sibling payload in the same generator — produced syntactically invalid SQL. Fixed to quote consistently. - Dependabot:
sharpbumped0.34.5→0.35.3(critical libvips CVEs). Added a Dependabot ignore rule fortests/hack/fixtures/vulnerable-app— an intentionally vulnerable test fixture used by thelyrie hackscanner's own integration test, which Dependabot was incorrectly flagging for updates that would break the test's purpose.
Documented (audit, no code risk)
- OAST module completeness audit (see header comment in
packages/core/src/pentest/oast/server.ts): no DNS-OOB listener exists today (HTTP callback confirmation only — closing this needs either a delegated DNS zone + public IP or a third-party DNS-OOB provider, both new infra out of scope); token/callback state isn't pruned except onstop()(non-issue for the current one-shot-server call pattern, flagged for any future long-lived-server use); module is fully built and tested but not yet wired intoHackOrchestrator's finding-confirmation flow.
Breaking Changes
None — fully backward compatible with v3.1.0.
Migration
No migration required. Update via npm install @lyrie/core@3.2.0 / pip install lyrie-agent==0.4.0 or pull from source.
What's Changed
- chore(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in #116
- chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in #114
- chore(deps): bump lucide-react from 0.468.0 to 1.25.0 by @dependabot[bot] in #120
- chore(deps-dev): bump the dev-dependencies group across 1 directory with 2 updates by @dependabot[bot] in #118
Full Changelog: v3.1.0...v3.2.0