Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-78385

CVE-2026-78385: RansomLook PDF Generator SSRF Vulnerability

CVE-2026-78385 is an SSRF vulnerability in RansomLook that allows authenticated attackers to exploit PDF generation to access local files or internal networks. This article covers technical details, exploitation risks, and patches.

Published:

CVE-2026-78385 Overview

CVE-2026-78385 is a server-side request forgery (SSRF) and local file access vulnerability in RansomLook, an open-source ransomware intelligence platform. The flaw resides in the analysis PDF generation feature, which converts Markdown to HTML and passes the output to WeasyPrint for rendering. WeasyPrint uses its default URL fetcher, which resolves arbitrary resource references without restriction. An authenticated attacker who can create or modify an analysis can embed file:// or http:// references. When the PDF renders, WeasyPrint executes those requests using the RansomLook server's privileges and network access.

Critical Impact

Authenticated attackers can read local files, reach internal network services, and bypass network-level access restrictions through the RansomLook server.

Affected Products

  • RansomLook (versions prior to commit 34dc028)
  • Deployments using RansomLook's analysis PDF generation feature
  • Instances relying on WeasyPrint's default URL fetcher

Discovery Timeline

  • 2026-08-24 - CVE-2026-78385 published to NVD
  • 2026-08-26 - Last updated in NVD database

Technical Details for CVE-2026-78385

Vulnerability Analysis

RansomLook renders analyst-authored analyses as PDF documents. The workflow parses Markdown, produces HTML, and hands the HTML to WeasyPrint. WeasyPrint fetches embedded resources such as images, stylesheets, and fonts using its default fetcher. That fetcher accepts any URL scheme, including file://, http://, and https://. This behavior classifies the flaw as SSRF under [CWE-918].

The attacker requires authentication but not administrative privileges. Any account with permission to create or modify an analysis can inject a crafted resource reference. The malicious reference triggers when a user or automation renders the PDF. WeasyPrint issues the request from the RansomLook server process, inheriting its filesystem permissions and internal network reachability.

Root Cause

The root cause is missing resource validation in the PDF rendering pipeline. WeasyPrint was invoked without a custom url_fetcher argument, so it applied its permissive default. HTML produced from user-controlled Markdown was trusted as safe for resource resolution. No allowlist restricted resource schemes, hostnames, or filesystem paths before dispatch.

Attack Vector

An authenticated attacker embeds a resource reference inside analysis Markdown. Example payloads include an <img> tag pointing to file:///etc/passwd, an http://169.254.169.254/ reference to reach a cloud metadata service, or an http://127.0.0.1: URL targeting internal admin endpoints. When PDF generation runs, WeasyPrint fetches each reference. file:// URLs expose any file readable by the RansomLook process, including configuration files, API tokens, and credentials. HTTP URLs let the attacker probe internal services, bypass firewall rules that trust the server's IP, and exfiltrate response data through the rendered PDF.

Refer to the RansomLook patch commit for the fix implementation details.

Detection Methods for CVE-2026-78385

Indicators of Compromise

  • Analysis records containing file://, http://, or https:// references outside the analysis asset directory
  • Outbound HTTP requests from the RansomLook server to internal IP ranges, cloud metadata endpoints, or localhost correlated with PDF generation events
  • Access to sensitive local files by the RansomLook service account during rendering
  • Unexpected DNS lookups originating from the RansomLook host tied to analysis rendering

Detection Strategies

  • Audit stored analysis content for resource references that use disallowed schemes or point outside the permitted asset directory
  • Correlate application logs for PDF generation actions with process-level network and filesystem telemetry
  • Alert on any read attempts by the RansomLook process against paths such as /etc/, ~/.ssh/, or application secrets
  • Monitor for HTTP requests to 169.254.169.254, 127.0.0.1, and RFC1918 addresses from the server

Monitoring Recommendations

  • Capture and retain WeasyPrint fetcher activity, including source URL and requester
  • Log analysis create and update events with the authenticated user and diff of resource references
  • Baseline outbound connections from the RansomLook host and alert on deviations during rendering

How to Mitigate CVE-2026-78385

Immediate Actions Required

  • Update RansomLook to a version that includes commit 34dc028 or later
  • Review existing analyses for embedded external references and remove untrusted entries
  • Rotate credentials, API tokens, and secrets accessible from the RansomLook host if compromise is suspected
  • Restrict analysis authoring privileges to trusted accounts and enforce multi-factor authentication

Patch Information

The upstream fix introduces a dedicated WeasyPrint url_fetcher that only permits data: resources, the RansomLook report logo, and files inside the analysis asset directory. All other network URLs and filesystem paths are rejected. Apply the patch from the RansomLook commit 34dc028.

Workarounds

  • Disable the PDF generation feature until the patched version is deployed
  • Run the RansomLook service under a low-privilege account with no read access to sensitive files
  • Apply egress firewall rules that block the RansomLook host from reaching internal networks, localhost, and cloud metadata endpoints
  • Sanitize analysis Markdown at submission to strip resource references using non-data: schemes
bash
# Example egress restriction using iptables on the RansomLook host
iptables -A OUTPUT -m owner --uid-owner ransomlook -d 169.254.169.254 -j REJECT
iptables -A OUTPUT -m owner --uid-owner ransomlook -d 127.0.0.0/8 -j REJECT
iptables -A OUTPUT -m owner --uid-owner ransomlook -d 10.0.0.0/8 -j REJECT
iptables -A OUTPUT -m owner --uid-owner ransomlook -d 172.16.0.0/12 -j REJECT
iptables -A OUTPUT -m owner --uid-owner ransomlook -d 192.168.0.0/16 -j REJECT

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.