Skip to main content

crawlseo EUVDEUVD-2026-108164

| CVE-2026-115411 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-22 VulnCheck GHSA-rvhf-6hhm-xg6w
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to crawlseo application
  2. Delivery
    Add site domain resolving to internal IP
  3. Exploit
    Trigger crawl via API
  4. Execution
    SSRF reaches internal service or metadata
  5. Impact
    Read harvested page data via results API

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated crawlseo account with permission to add or edit a site/domain and trigger a crawl (PR:L); it is not exploitable by an unauthenticated outsider. No non-default configuration is needed - the flaw is in the default crawler engine's isPrivateIp() allowlisting, which failed to block RFC 6598 CGNAT, RFC 6890, TEST-NET-1/2/3 and several reserved IPv6 ranges, and in the engine not pinning the pre-flight-validated address for the outbound connection (enabling DNS rebinding). The attacker-controlled target must resolve to the desired internal/restricted address, and to reach cloud metadata the crawlseo instance must itself be deployed somewhere that can route to 169.254.169.254 or internal hosts. Limiting factors: required authentication, and the data returned to the attacker is restricted to the page's title, description, headings, status code and links rather than arbitrary response content.

Impact

This is a medium-severity SSRF (CVSS 4.0 base 5.3, vector AV:N/AC:L/AT:N/PR:L/UI:N) whose impact is confined to subsequent-system confidentiality (SC:L) with no integrity or availability effect (VI:N/VA:N/SI:N/SA:N) and no impact on the crawlseo host itself (VC:N). The attack vector is network and complexity is low, but PR:L means an attacker must first hold an authenticated application account that can add a site and trigger a crawl, which materially narrows the exposure versus an unauthenticated SSRF. No EPSS score was supplied, so exploitation probability cannot be quantified here, and the vulnerability is NOT present in the CISA KEV catalog, so there is no evidence of active exploitation; a public PoC reference exists (a gist) but it is not verified as working exploit code. The vendor-assigned priority is 'this_month' rather than act_now/emergency, which is consistent with a real-but-not-urgent issue. The genuine concern is reachability of cloud metadata (169.254.169.254) and internal services, which in some environments can expose credentials; however, the data returned to the attacker is limited to the fetched page's title, description, headings, status code and links, so exfiltration of raw metadata content is constrained by whatever the crawler's HTML parser extracts rather than returning arbitrary response bodies - defenders should weigh this limiting factor rather than treating it as a full read-anything SSRF. Net: a legitimate patch-this-cycle item for anyone running crawlseo with multi-tenant or lower-trust authenticated users, not a drop-everything emergency.

Exploit ScenarioDerived

An authenticated crawlseo user registers a site whose domain resolves to an internal or restricted address (or uses DNS rebinding to flip the answer after validation), then triggers a crawl so the engine fetches a cloud metadata endpoint such as 169.254.169.254 or an internal service. The attacker then reads the harvested title, description, headings, status code and links through the crawl results API to perform internal reconnaissance. A public PoC reference (a gist) exists but is not verified as working exploit code.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 22, 2026

Server-side request forgery in crawlseo before 0.2.4 lets an authenticated user with site-edit and crawl-trigger permission point the crawler at internal services and cloud metadata endpoints by registering a domain whose DNS answer falls in a reserved range or is rebound after validation. The crawler's isPrivateIp() blocklist omits RFC 6598 CGNAT, RFC 6890, TEST-NET-1/2/3 and several reserved IPv6 ranges, and the pre-flight-validated address is not pinned to the outbound socket, so a TOCTOU DNS-rebinding answer is accepted at connect time. Exfiltration is constrained to what the crawl results API returns for the fetched page (title, description, headings, status code and links), making this a reconnaissance-grade leak of subsequent-system data with no integrity or availability impact; no confirmed working exploit code is public at time of analysis, though a researcher gist describing the issue is referenced.

RemediationAI

Vendor-released patch: crawlseo 0.2.4 - upgrade to that release (https://github.com/crawlseo/crawlseo/releases?page=1#release-v0.2.4), which rewrites the blocklist to cover RFC 6598 CGNAT, RFC 6890, TEST-NET-1/2/3, IPv4-translated SIIT, local-use NAT64, Teredo, benchmarking, documentation and deprecated site-local ranges, and funnels both the pre-flight check and pinnedLookup through a single lookup(hostname, { all: true }) helper so the validated address set is pinned for the outbound connection rather than re-resolved, closing the DNS-rebinding TOCTOU. Reviewers can audit the exact change in commit 76e4e693. If the upgrade cannot be scheduled immediately, the interim option is to narrow who holds crawl-trigger and site-edit rights, since the attack is only reachable from an authenticated account that can add or edit a domain and start a crawl - the trade-off is that this removes legitimate crawl functionality for those users and does not repair the underlying blocklist or address-pinning gap, so it is a stopgap only. Deployments that can route to 169.254.169.254 or internal hosts from the crawlseo instance should treat the window before upgrade as an exposed reconnaissance path.

Affected VersionsENISA

crawlseo 0.1.0 <0.2.4

Affected Packages

euvd crawlseo fix: 0.2.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

CWE-918: the crawler engine in lib/crawler/engine.ts implements an address allowlisting routine, isPrivateIp(), backed by a table of [network, prefix] pairs, plus a pinnedLookup LookupFunction handed to the HTTP client so the resolved address is meant to be reused for the actual connection. Two defects combined. First, the table was incomplete: as shown in commit 76e4e693, 192.0.0.0/24 (IETF protocol assignments), 192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24 (TEST-NET-1/2/3), ::ffff:0:0:0/96 (IPv4-translated SIIT, which embeds an IPv4 address), 64:ff9b:1::/48 (local-use NAT64), 2001::/32 (Teredo), 2001:2::/48 (benchmarking), 3fff::/20 (documentation) and fec0::/10 (deprecated site-local) were missing alongside RFC 6598 100.64.0.0/10 CGNAT, so a domain resolving into those ranges passed validation. Second, the pre-flight check called Node's dns.lookup() in single-address form while the connection performed its own resolution, so a name that answered with a public address at check time could answer with 127.0.0.1 or 169.254.169.254 at connect time - a classic TOCTOU DNS-rebinding window. The fix refactors a publicAddresses() helper that calls lookup(hostname, { all: true }) and rejects the name if any returned record is private or reserved, and applies the same rule both to the pre-flight check and to pinnedLookup, so the validated answer set is the one the connection uses; the accompanying tests assert refusal when a name gains a private record after the pre-flight check.

Know when Crawlseo gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N
vuln.today AI 5.0 MEDIUM

Authenticated user supplies the crawl target (PR:L); the reserved-range bypass is trivial (AC:L); SSRF reads limited internal data across a trust boundary, so S:C with confidentiality-only impact (C:L).

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Rare
obscure open-source SEO crawler, negligible production or enterprise footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy