Flowise
NemoGuardrails Node Uses Bare fetch() with User-Controlled URL, Bypassing SSRF Protections
Flowise maintains a dedicated SSRF protection module (httpSecurity.ts) with DNS pre-resolution, private-IP blocking, redirect-chain validation, and IP pinning. It is applied to every outbound HTTP call in the codebase that touches user-influenced URLs — except one. The ChatNemoGuardrails node calls bare fetch() with a user-controlled baseUrl, bypassing all protections. An authenticated user with chatflow creation permissions can reach internal network services and cloud instance metadata endpoints.
The ChatNemoGuardrails component reads baseUrl directly from user input with no validation and passes it to NemoClient. In NemoClient.ts, line 66, the URL is used in a bare fetch() call:
Path 1 — Internal port enumeration
Path 2 — Cloud metadata credential exfiltration
Any internal HTTP service reachable from the Flowise host is accessible: databases, caches, the Kubernetes API server, Ollama, internal admin interfaces. On cloud deployments with IMDSv1 enabled, the redirect-chain attack yields temporary IAM credentials with the permissions of the Flowise host’s role.
Auth required: chatflow creation or edit permissions. In many multi-user Flowise deployments all authenticated users can create chatflows, making the effective attack barrier low.
Flowise acknowledged the finding and thanked Offgrid Security for the report. The fix — replacing fetch( with secureFetch( on line 66 of NemoClient.ts — was merged and shipped. Flowise chose not to publish a public security advisory.
Workarounds until a patched release is available: restrict chatflow creation permissions to trusted users; deploy an egress firewall blocking RFC-1918 and link-local ranges from the Flowise host; enable IMDSv2 (token-required) on cloud instances.
Replace fetch( with secureFetch( from the existing httpSecurity.ts module in NemoClient.ts line 66. No new security logic is required; the infrastructure already exists.
Reported to Flowise. Received thanks; finding acknowledged and patched. No formal security advisory was published. No CVE or GHSA has been assigned.