/

CVE-2026-18647

Severity:

HIGH RISK

(7.3)

Server-Side Request Forgery (CWE-918) in Jina Reader

CVE-2026-18647

Deferred

Vulnerability type

Category:

Server-Side Request Forgery

CWE:

CWE-918

Impact:

Backend can be abused as a proxy to access internal or external resources, potentially exposing sensitive services and data.

Severity:

HIGH RISK

(7.3)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A server-side request forgery (SSRF) vulnerability in the Jina AI reader crawler component allows crafted URLs to bypass domain validation and trigger arbitrary outbound requests from the backend service.

When an attacker can influence the URLs processed by the crawler's isValidTLD logic, they may pivot through the server to reach internal or restricted network resources.

Affected context

This vulnerability appears in deployments that use the Jina AI reader's Puppeteer-based crawler implemented in crawler.ts, specifically the isValidTLD function used for URL validation.

It becomes relevant when user-supplied or otherwise untrusted URLs are passed into the crawler, and the top-level domain validation is relied upon as a primary safety check for outbound requests.

Environments where the crawler runs with network access to internal APIs, metadata services, or other sensitive infrastructure are more exposed, but exact reachable targets depend on individual network layouts and firewall rules.

Exploit preconditions

  • Attack surface: HTTP or API endpoints that accept URLs or link targets and forward them to the crawler/Puppeteer workflow.
  • Required access: Ability to submit or control URLs processed by isValidTLD (e.g., as a regular user via a public or authenticated endpoint).
  • Trigger point: Invocation of the crawler where the provided URL passes domain validation and is fetched from the backend environment.
  • Why exploitation is possible: The isValidTLD function's validation logic is insufficient to reliably distinguish safe external domains from attacker-controlled or internal targets, allowing crafted input to direct the crawler to arbitrary hosts.

Why this happens

The underlying issue is incomplete server-side validation of URLs before initiating outbound requests from trusted backend infrastructure, aligning with CWE-918: Server-Side Request Forgery.

The isValidTLD function attempts to enforce safety through top-level domain checks, but this approach is inherently fragile: it can be bypassed by subdomains, mis-parsed hostnames, special cases like IP literals, or other URL forms that slip through naive filters.

Conceptually, the bug class is reliance on syntactic checks of URL components rather than enforcing strict allowlists, network segmentation, and contextual policies about what the backend is permitted to contact.

Potential impact

  • An attacker may cause the backend to send requests to internal services not directly exposed to the internet.
  • The crawler could be used to probe internal network topology and discover reachable hosts.
  • Sensitive metadata or configuration endpoints (such as cloud instance metadata services) could be queried from within the environment.
  • The backend can be abused as a proxy to circumvent IP-based access controls or firewall rules.
  • Depending on accessible services, SSRF may lead to data exfiltration, privilege escalation, or further compromise of infrastructure.

General mitigation guidance

Effective mitigation focuses on removing trust from user-supplied URLs and constraining where backend services can connect.

Useful defensive patterns include:

  • Enforcing strict allowlists of permitted hostnames or domains for outbound crawler requests, rather than relying on general TLD checks.
  • Implementing layered URL validation that parses hosts and schemes robustly, rejects ambiguous or unsupported formats, and forbids direct access to IP addresses or private network ranges when not explicitly required.
  • Isolating crawler functionality in a dedicated network segment with carefully scoped egress rules, ensuring it cannot reach sensitive internal systems or metadata endpoints.
  • Applying least-privilege to the infrastructure that performs HTTP requests, including restricted credentials and limited access tokens so that any SSRF is less likely to yield high-value responses.
  • Designing crawler workflows to avoid reusing highly privileged network contexts or credentials for handling untrusted URLs.

How teams detect issues like this

Organizations can approach detection through a combination of code-level and operational strategies:

  • Static analysis or linting rules that flag direct use of HTTP client libraries with user-supplied URLs, particularly when domain or TLD checks are the only protection.
  • Code review practices that scrutinize URL validation utilities like isValidTLD, looking for patterns such as naive string matching, incomplete parsing, or lack of explicit allowlists.
  • Security policies that require outbound request components to declare allowed destinations and network scopes, enforced via configuration checks or CI pipeline gates.
  • Runtime monitoring of outbound traffic from crawler or Puppeteer services, including alerts for requests to internal IP ranges, metadata endpoints, or other atypical locations.
  • Use of automated application security testing tools or SSRF-focused scanners to exercise endpoints that accept URLs and observe backend request behavior.

Sources

SourceLink
github.comgithub.com/orionyan520/cve_report/issues/8
vuldb.comvuldb.com/cve/CVE-2026-18647
vuldb.comvuldb.com/submit/855011
vuldb.comvuldb.com/vuln/385566
vuldb.comvuldb.com/vuln/385566/cti

Frequently asked

questions

Exploitability depends on how widely the crawler endpoint is exposed and what URLs an attacker can influence. In many deployments, regular users or external clients may be able to submit URLs that the crawler processes, which makes the issue remotely exploitable where such interfaces exist.

The attacker typically needs the ability to provide or control URLs that are passed into the crawler workflow. This may be through a public web form, an authenticated API, or any feature that triggers link fetching or preview generation on the backend.

The most robust fix is to strictly control outbound destinations using allowlists and network segmentation. Rather than attempting to validate TLDs or rely on heuristic checks, the backend should only contact a curated set of domains or services and deny or ignore all other targets.

Prevention relies on treating outbound connections triggered by user input as high-risk. Adopt standardized URL validation libraries, enforce host allowlists, separate high-privilege network contexts from untrusted workflows, and integrate SSRF-focused reviews and tests into development and CI/CD processes so unsafe patterns are caught early.

Find out what's already
exploitable in your codebase.