---
id: "CVE-2026-115411"
kind: "vulnerability"
aliases: ["CVE-2026-115411"]
title: "crawlseo: SSRF lets authenticated users reach internal hosts and metadata"
severity: "medium"
cvss: 5.3
epss: 0.00214
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["cloud", "crawlseo", "node.js", "package", "self-hosted"]
not_affected_if: ["fixed-target-crawls", "no-internal-network-path"]
published_at: "2026-10-22T14:17:39+00:00"
first_seen_at: "2026-10-23T21:57:31+00:00"
updated_at: "2026-10-25T04:20:20+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-115411", "first_seen_at": "2026-10-23T21:57:31+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-115411", "first_seen_at": "2026-10-24T07:15:51+00:00"}]
---

# crawlseo: SSRF lets authenticated users reach internal hosts and metadata

crawlseo before 0.2.4 fails to block reserved IP ranges and does not pin the validated address for outbound requests, so DNS rebinding can bypass the check. An authenticated user can make the crawler fetch internal services or cloud metadata endpoints and read titles, headings, status codes and links back through the crawl results API.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed crawlseo version with `npm ls crawlseo` or the package's lockfile entry
- Confirm whether crawl jobs accept user-supplied domains with `grep -ri crawlseo` in your application code

## Fix

- Upgrade crawlseo to `0.2.4` or later
- Until upgraded, block crawl targets that resolve to private, CGNAT (100.64.0.0/10) or link-local addresses at the network egress layer

## Timeline

- 2026-10-23T21:57:31+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-115411
- 2026-10-24T07:15:51+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-115411

## From the sources

crawlseo before version 0.2.4 contains a server-side request forgery vulnerability in its crawler engine where isPrivateIp() fails to block reserved IP ranges such as RFC 6598 Carrier-Grade NAT, RFC 6890, TEST-NET ranges and certain IPv6 addresses, and additionally fails to pin the validated address for the actual outbound connection, allowing a TOCTOU DNS rebinding bypass. An authenticated attacker can add a malicious domain that resolves to an internal or restricted address, trigger a crawl to reach internal services or cloud metadata endpoints like 169.254.169.254, and retrieve the fetched page's title, description, headings, status code and links through the crawl results API, enabling internal network reconnaissance.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
