UnratednpmAmendedPublished
Novu has SSRF via conditions filter webhook bypasses validateUrlSsrf() protection
GHSA-4x48-cgf9-q33f
- Affected
- npm @novu/api < 3.15.0
- Fixed in
- 3.15.0· Vendor fix available
- Issue
- The conditions filter webhook at libs/application-generic/src/usecases/conditions-filter/conditions-filter.usecase.ts line 261 sends POST requests to user-configured URLs using raw axios.post() with no SSRF validation. The HTTP Request workflow step in the same codebase correctly uses validateUrlSsrf() which blocks private IP ranges. The conditions webhook was not included in this protection. Root Cause conditions-filter.usecase.ts line 261: No call to validateUrlSsrf(). The webhookUrl comes from the workflow condition configuration with zero validation. Protected Code (for contrast) execute-http-request-step.usecase.ts line 130: This function resolves DNS and checks against private ranges (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16). It exists in the codebase but is not applied to the conditions webhook path. Proof of Concept 1. Create a workflow with a condition step 2. Configure the condition's webhook URL to…
Recommended action: Upgrade to 3.15.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.