Safeguard
Vulnerability Analysis•

CVE-2025-2691: High SSRF Protection Bypass in nossrf npm Package

nossrf before 1.0.4 can be fooled by a hostname that resolves to a local or reserved IP address. Upgrade the npm package to 1.0.4 or later and retest it.

Safeguard Security Team
3 min read

CVE-2025-2691 is a High severity (CVSS 8.2) server side request forgery bypass in the nossrf npm package before version 1.0.4. A hostname that resolves to a local or reserved address gets past the check. Upgrade nossrf to 1.0.4 or later.

What's affected

Affected: the npm package nossrf, versions before 1.0.4. Fixed: 1.0.4, according to the record and the Snyk entry.

The package exists to protect Node.js code from SSRF, which makes this a case where the guard itself was the weak part. If you rely on nossrf to decide whether a URL is safe to fetch, a bypass means your protection may not hold.

The Snyk page credits a researcher and notes that a proof of concept or detailed explanation exists. That is why you should not delay the upgrade.

How to check if you're exposed

Find it in your project, including as a transitive dependency:

npm ls nossrf
npm explain nossrf

For Yarn or pnpm:

yarn why nossrf
pnpm why nossrf

If any resolved version is below 1.0.4, update it. You can check lock files across many repositories at once by searching for the package name, or paste a manifest into the free in-browser dependency scan.

What to do now

  1. Search every Node.js repository and lock file for nossrf.
  2. Upgrade to 1.0.4 or later with npm install nossrf@latest or by updating the parent package that pulls it in.
  3. Commit the updated lock file and redeploy.
  4. Add a second layer: block outbound requests from the application to internal address ranges at the network level.
  5. Fetch remote URLs through a dedicated egress proxy that enforces an allow list.
  6. Re-test any feature that fetches user supplied URLs, such as webhooks, previews and image imports.

Why it matters

The record lists CWE-918. SSRF means an attacker persuades your server to make a request on their behalf, often to an internal service the attacker cannot reach directly. Typical targets include cloud metadata endpoints and admin interfaces bound to private addresses.

Filters that check a hostname before connecting can be fooled when the name resolves to a private address, because the check and the connection see different things. The record describes exactly that bypass. The CVSS vector rates confidentiality impact as high, which fits: the main danger is reading internal data. The record's KEV flag is false, so it is not in the CISA Known Exploited Vulnerabilities catalog.

The lasting fix is to enforce the rule where the connection is made, so that the resolved address is checked, and to back it up with network controls.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is a library check enough to stop SSRF?

Not on its own. Combine the library with network egress rules and an allow list, since a single check can be bypassed.

Which nossrf version should I use?

1.0.4 or later. Versions before 1.0.4 are affected.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.