This release includes 2 security fixes for security teams reviewing exposed deployments.
Topics
+4 more
Affected surfaces
Summary
AI summaryBroad release touches Patch Changes, Minor Changes, Ed25519, and PyNaCl.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Adds Remix support for detecting webhook routes in Remix `action` modules. Adds Remix support for detecting webhook routes in Remix `action` modules. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Feature | Low |
Adds n8n agentic-callback ruleset detecting unverified agent/tool webhook sinks. Adds n8n agentic-callback ruleset detecting unverified agent/tool webhook sinks. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Feature | Low |
Introduces queue-handler reachability overlay resolving to manual-review for verifiable consumers. Introduces queue-handler reachability overlay resolving to manual-review for verifiable consumers. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Feature | Low |
Detects edge-runtime webhook handlers in Cloudflare Workers, Vercel Edge, and Deno. Detects edge-runtime webhook handlers in Cloudflare Workers, Vercel Edge, and Deno. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Feature | Low |
Adds Ed25519 provider for Discord interactions with verification detection. Adds Ed25519 provider for Discord interactions with verification detection. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Feature | Low |
Implements hand-rolled Standard Webhooks detector grading based on comparison reachability. Implements hand-rolled Standard Webhooks detector grading based on comparison reachability. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Feature | Low |
Adds multi-signature mishandled rule for manual-HMAC handlers lacking iteration symbols. Adds multi-signature mishandled rule for manual-HMAC handlers lacking iteration symbols. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Feature | Low |
Releases stable v0.8 with compliance_mappings schema (SOC2, ISO27001, EU AI Act, NIST) and evidence pack. Releases stable v0.8 with compliance_mappings schema (SOC2, ISO27001, EU AI Act, NIST) and evidence pack. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Dependency | Low |
Updates dependencies to @hookwarden/[email protected] and @hookwarden/[email protected]. Updates dependencies to @hookwarden/[email protected] and @hookwarden/[email protected]. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Bugfix | Medium |
Fixes false-positive critical on correctly-verified GitHub webhook handlers. Fixes false-positive critical on correctly-verified GitHub webhook handlers. Source: llm_adapter@2026-06-03 Confidence: high |
— |
| Bugfix | Medium |
Reduces false positives from provider over-detection and mis-attribution. Reduces false positives from provider over-detection and mis-attribution. Source: llm_adapter@2026-06-03 Confidence: low |
— |
| Bugfix | Medium |
Fixes provider-attribution bug misattributing correctly‑verified hand‑rolled HMAC handlers to anthropic-agent-sdk. Fixes provider-attribution bug misattributing correctly‑verified hand‑rolled HMAC handlers to anthropic-agent-sdk. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
| Bugfix | Medium |
Reduces false positives by ignoring generic HTTP headers for provider attribution and recognizing Stripe v2 verify calls. Reduces false positives by ignoring generic HTTP headers for provider attribution and recognizing Stripe v2 verify calls. Source: granite4.1:30b@2026-06-03-audit Confidence: low |
— |
Full changelog
Minor Changes
-
46c2a97: Add the n8n agentic-callback ruleset. The engine gains a workflow-JSON adapter that ingests
*.workflow.jsonfiles and n8n community custom-nodes (package.json#n8n.nodes,INodeType/IWebhookFunctionssources), synthesizing handler models from n8n trigger/webhook nodes. A new n8n rule pack detects unverified-body agent/tool sinks (VAS/BYP ongetBodyData(),$json,items[0].jsonreaching agent-tool calls) while staying silent on mitigated, signature-verified shapes. ThehookwardenCLI now scans n8n projects end-to-end (scansurfaces n8n findings and malformed-workflow parse errors). -
056ba21: Add queue-handler + edge-runtime reachability overlays and the first asymmetric (Ed25519) provider.
- REACH-01 — queue-handler reachability: a handler that enqueues the raw body via bullmq / SQS / inngest / Kafka and has a verifying consumer of that queue reachable now resolves to
manual-reviewinstead ofnot-verified(the engine can't prove same-payload verification across the queue boundary, so it never claimsverified). A queue enqueue with no verifying consumer staysnot-verified. - REACH-02 — edge-runtime detection: webhook handlers on Cloudflare Workers (
export default { fetch }), Vercel Edge (runtime: 'edge'), and Deno (Deno.serve) are now detected (Next.js App Router was already covered), so the HMAC-over-raw-body rules evaluate them instead of missing or mis-flagging. The full rule pack'sapplies_tonow includescloudflare-workers/vercel-edge/deno. - DISCORD-01 — Ed25519 provider: Discord interactions are the first asymmetric provider (
signature_scheme: ed25519, verified against the app public key). The rule recognizesverifyKey(discord-interactions-js),nacl.sign.detached.verify(tweetnacl),nacl.signing.VerifyKey(...).verify(...)(PyNaCl), andsodium_crypto_sign_verify_detached(PHP) as verified; a Discord handler with no Ed25519 verification isnot-verified. Discord interaction paths are now detected.
Engine purity preserved; existing HMAC providers untouched.
- REACH-01 — queue-handler reachability: a handler that enqueues the raw body via bullmq / SQS / inngest / Kafka and has a verifying consumer of that queue reachable now resolves to
-
1bd1791: Complete the Standard Webhooks detector with the hand-rolled prong (Clerk CVE-2025-53548) and fix a provider-attribution bug it surfaced.
- STDWH-01 hand-rolled prong: a handler that re-implements the Standard Webhooks spec by hand — HMAC-SHA256 over the canonical
{msg_id}.{timestamp}.{body}string — is now graded three ways. With no comparison reachable it isnot-verified(the Clerk CVE-2025-53548 shape, where the signature is computed but never checked); with only an undecidable local compare wrapper (safeCompare()/verifySig()) it ismanual-review; with a recognized constant-time compare it defers. Covers JS/TS (Babel), Python (tree-sitter), and PHP (tree-sitter source-walk). Plan 16 shipped only the library-import prong, so hand-rolled re-implementations were previously missed. multi-signature-mishandled: a new rule for thev1,<sig1> v1,<sig2>rotation list — a manual-HMAC handler with no signature-iteration symbol reachable ismanual-review(it likely breaks the moment a secret is rotated).- Provider-attribution fix: a correctly-verified hand-rolled handler (
crypto.createHmac+crypto.timingSafeEqual) was mis-attributed toanthropic-agent-sdkand graded by the wrong provider's rules. Generic stdlib crypto primitives that some catalog entries list as VAS-01 suppression anchors no longer drive provider attribution; the VAS-01 suppression itself is unchanged.
No
whsec_hardcoded-secret rule is added — the existing Stripe rule already matches it provider-agnostically. Engine purity preserved. - STDWH-01 hand-rolled prong: a handler that re-implements the Standard Webhooks spec by hand — HMAC-SHA256 over the canonical
-
c10427a: v0.8 launch — webhook integrity, from first line to final audit.
This is the stable v0.8 cut of the CLI + engine + rules cluster. It rolls up the
v0.8 milestone surface: the n8n agentic-callback ruleset (detecting unverified
agent/tool webhook sinks, shipped after the Cisco Talos n8n abuse report), the
Anthropic Agent SDK tool-callback ruleset, and thecompliance_mappingsschema
(SOC 2 + ISO 27001 + EU AI Act Annex III + NIST AI RMF) surfaced in
hookwarden --version --verbose, with the v1.1 evidence pack carrying the EU AI
Act Annex III high-risk classification and an embedded offline-verifiable
signing key.The MCP server shipped earlier in the v0.8 cycle and versions independently of
this fixed cluster, so it is intentionally not part of this changeset.
Patch Changes
-
a7424fc: Fix a false-positive
criticalon correctly-verified GitHub webhook handlers. The
github-timing-safe-equalpredicate (backinggithub/missing-timing-safe-equaland
github/timing-unsafe-comparison) returned"verified"on the safe path; because the engine
builds a finding for any non-null verdict and stamps it with the rule's fixedcriticalseverity
and "verification missing" message, a textbook-correct hand-rolled handler
(crypto.createHmac+crypto.timingSafeEqual, exactly per GitHub's docs) surfaced two
false-positive criticals and failed the build. The safe path now returnsnull(no finding) —
the positive signal remains the job of the info-severitygithub/library-verifiedrule, matching
the convention every other provider's critical rules already follow.Also makes
--fail-ongating state-aware so exit codes match the documented summary legend:
verifiedfindings never gate (a correctly-verified handler is not a build failure),
manual-reviewfindings gate only at--fail-on low/info(not the defaulthigh), and
not-verifiedfindings continue to gate by severity. -
ade4609: Cut real-app false positives from provider over-detection / mis-attribution (found scanning dub):
-
Generic HTTP headers no longer drive provider attribution. Postmark's catalog
signature_header
isauthorization(its Basic-Auth scheme), butAuthorizationis read by nearly every
authenticated route — so OAuth token endpoints, cron jobs, and admin routes were attributed to
postmark and flagged as unverified postmark webhooks. A generic-header read (Authorization,
Content-Type, …) is now recorded provider-agnostically; real postmark webhooks are still attributed
by their specific signals (/postmark/*paths, SDK,POSTMARK_*env), and postmark's rules detect
Basic-Auth via reachable symbols, not this header. -
Stripe v2 verify calls recognized.
stripe.parseThinEvent(...)(v2 API / thin events) and
webhooks.constructEventAsync(...)(Edge/Workers async API) are now treated as signature
verification, so correctly-verified v2 webhooks are no longer flagged
stripe/missing-signature-verification.
Combined with the
req.text()raw-body fix, false-positive criticals on the dub codebase dropped
from 20 to 9 (the remaining 9 are genuine unverified webhook routes plus two non-webhook routes that
merely import the Stripe SDK — a separate over-detection class tracked for follow-up). -
-
c7f1046: Add Remix support. Remix
actionroute modules underapp/routes/**receive a Web Fetch API
Request — identical to Next.js App Router — but were undetected, so a real Remix webhook scanned to
0 handlers and silently reported "clean" (a false negative; found scanning documenso, whose Stripe
webhook isapps/remix/app/routes/api+/stripe.webhook.ts). NewremixAdapterdetectsaction
exports and derives the route from the remix-flat-routes filename (api+/stripe.webhook→
/api/stripe/webhook); rules apply to remix via the nextjs equivalence inruleAppliesToFramework
(no per-rule YAML churn).remixadded to the engine Framework union + the rulesapplies_toenum. -
Updated dependencies [8f8c131]
-
Updated dependencies [46c2a97]
-
Updated dependencies [ade4609]
-
Updated dependencies [056ba21]
-
Updated dependencies [c7f1046]
-
Updated dependencies [729c7a1]
-
Updated dependencies [1bd1791]
-
Updated dependencies [c10427a]
- @hookwarden/[email protected]
- @hookwarden/[email protected]
Security Fixes
- CVE-2025-53548
- CVE-2025-53548
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Hookwarden
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]