CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-85740

CVE-2026-85740: Server-Side Request Forgery (SSRF) Guard Bypass via IPv6 Transition Wrappers in LightRAG

Alon Barad
Alon Barad
Software Engineer

Sep 23, 2026·5 min read·19 visits

Executive Summary (TL;DR)

LightRAG before v1.5.5 is vulnerable to SSRF because its image-download validator fails to inspect IPv4 addresses wrapped in IPv6 transition formats, permitting access to local networks and cloud metadata services.

A security vulnerability in HKUDS/LightRAG prior to v1.5.5 allows authenticated attackers to bypass the native markdown image downloader guard. The system fails to normalize IPv6 transition wrappers (such as NAT64, IPv4-compatible, and 6to4 blocks) encapsulating internal IPv4 addresses. Python's ipaddress library evaluates these wrappers as globally routable, but hosting environments running NAT64/DNS64 routing decapsulate and route the requests to internal resources.

Vulnerability Overview

The HKUDS/LightRAG framework is designed to provide fast and simple retrieval-augmented generation (RAG) processes. To support markdown ingestion, the framework parses uploaded files and retrieves external assets, such as images, to integrate them into the knowledge base. This operation exposes a significant attack surface if input URLs are not strictly validated before network resolution.

To defend against Server-Side Request Forgery (SSRF), the framework employs an IP-level validation mechanism. It resolves the hostnames specified in the image tags and validates the resulting IP addresses. This validation relies on checking whether the destination address is globally routable.

A critical security flaw exists in the validation logic within lightrag/parser/markdown/parser.py. The validation routine fails to detect and normalize IPv6 transition wrappers that encapsulate internal or private IPv4 addresses. This allows authenticated users with document upload privileges to circumvent the safety boundary.

Root Cause Analysis

The root cause of the vulnerability lies in the reliance on the standard library's ipaddress package for identifying globally routable IP addresses. When validating a resolved IP, the parser inspects the ip.is_global attribute. The parser permits the request if this attribute evaluates to True or if the address matches an explicitly allowed network subnet.

IPv6 transition technologies, designed to facilitate communication between IPv4 and IPv6 networks, encapsulate 32-bit IPv4 addresses within a 128-bit IPv6 container. Common transition formats include NAT64 well-known prefixes (RFC 6052), IPv4-compatible addresses (RFC 4291), 6to4 tunneling (RFC 3056), and local-use NAT64 prefixes (RFC 8215). These formats represent internal IPv4 destinations, such as 127.0.0.1 or 169.254.169.254, using valid global IPv6 prefixes.

Python's interpreter processes these encapsulated literals as globally routable because the outer prefix block is classified as global. For instance, the library evaluates 64:ff9b::7f00:1 (which embeds the localhost address 127.0.0.1) as globally routable. When the application issues the outbound HTTP request, the hosting environment's dual-stack socket layer decapsulates the prefix and routes the packet to the internal IPv4 target.

Code Analysis

In vulnerable versions of LightRAG, the parser checks destination validity by directly querying the is_global property of the resolved IP object. The relevant code path is located in the _validated_addresses() function within lightrag/parser/markdown/parser.py.

# Vulnerable validation logic
if not (ip.is_global or any(ip in net for net in allow)):
    return []

The patch introduces a normalization wrapper to extract the underlying IPv4 address from known IPv6 transition formats. It also establishes a strict default-deny policy for specific blocks.

# Remediation implementation
_FORCE_NON_GLOBAL_V6 = (ip_network("64:ff9b:1::/48"), ip_network("2002::/16"))
 
def _unwrap_embedded_ipv4(ip):
    if ip.version != 6:
        return ip
    if ip.ipv4_mapped is not None:
        return ip.ipv4_mapped
    b = ip.packed
    if b[:12] == b"\\x00" * 12 and b[12:] not in (
        b"\\x00\\x00\\x00\\x00",
        b"\\x00\\x00\\x00\\x01",
    ):
        return ip_address(b[12:])
    if b[:12] == b"\\x00\\x64\\xff\\x9b" + b"\\x00" * 8:
        return ip_address(b[12:])
    return ip

This extraction process ensures that the RAG pipeline applies security checks to the actual destination address. By unwrapping these formats, the validation engine correctly recognizes local loops and private subnets hidden inside IPv6 structures.

Exploitation and Proof-of-Concept Analysis

An attack requires document upload privileges within the LightRAG instance. The attacker crafts a malicious markdown document containing image tags referencing wrapped IPv6 transition addresses. When the server processes this document, the image download module is triggered.

The target infrastructure must run a dual-stack configuration or be deployed within an IPv6-only cloud subnet that utilizes NAT64 or DNS64 resolution services. Standard deployments in environments like AWS or Google Cloud commonly incorporate these configurations. The attacker converts the target local or private IPv4 address to its hexadecimal equivalent to structure the payload.

# Document ingestion test
![exfiltrate](http://[64:ff9b::a9fe:a9fe]/latest/meta-data/iam/security-credentials/)

Upon ingestion, the resolved host is verified as safe by the RAG application. The outbound request is dispatched, and the platform network layer strips the prefix. The underlying host routes the request directly to the instance metadata service, returning sensitive IAM credentials or local services.

Impact Assessment

The security impact of CVE-2026-85740 is rated as High, with a CVSS base score of 7.1. This rating reflects the capacity of an attacker to breach logical trust boundaries. The attack allows access to internal systems that are otherwise shielded from public network interaction.

Successful exploitation enables arbitrary request routing to localhost loopbacks, internal development subnets, and cloud management interfaces. Attackers can leverage this access to perform service enumeration, exploit internal endpoints lacking authentication, or harvest cloud metadata credentials. Exposure of credentials from instance metadata services often leads to further cloud infrastructure compromise.

The vulnerability does not directly permit remote code execution on the host without downstream exploitation of target services. Integrity impact is constrained to the state of internal APIs that accept modification commands. The scope is changed because the execution environment can query external trust boundaries.

Remediation and Mitigation

The primary remediation for CVE-2026-85740 is upgrading HKUDS/LightRAG to version 1.5.5 or higher. The fixed version incorporates target normalization of IPv6 transition wrappers before evaluating routability. It also enforces block-level denials for deprecated or ambiguous blocks.

If immediate package upgrades are unfeasible, organizations should implement host-level mitigations. For instance, disabling instance metadata service access or requiring IMDSv2 with a hop limit of one prevents credentials harvesting. Restricting outbound HTTP communication from the container to verified remote domains also reduces the risk.

Additionally, organizations can deploy an explicit outbound proxy. Forcing all outbound RAG connections through a secure forward proxy that strictly filters destinations ensures that any bypassed requests are blocked at the network perimeter.

Technical Appendix

CVSS Score
7.1/ 10
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:N

Affected Systems

HKUDS/LightRAG

Affected Versions Detail

Product
Affected Versions
Fixed Version
LightRAG
HKUDS
< 1.5.51.5.5
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork (AV:N)
Attack ComplexityHigh (AC:H)
Privileges RequiredLow (PR:L)
ScopeChanged (S:C)
ImpactConfidentiality: High, Integrity: Low, Availability: None
Exploit StatusPoC / Non-weaponized
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1005Data from Local System
Collection
CWE-918
Server-Side Request Forgery (SSRF)

References & Sources

  • [1]GitHub Security Advisory GHSA-vv3m-f8x4-7377
  • [2]Fix Commit 9207e7fd
  • [3]Fix Commit a2586217
  • [4]Fix Commit c598545a
  • [5]LightRAG Release v1.5.5

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•GHSA-FMC8-P6Q7-75CC
9.9

GHSA-fmc8-p6q7-75cc: Argument Injection in Canonical LXD Backup Compression Leads to Host Root Code Execution

GHSA-fmc8-p6q7-75cc (associated with CVE-2026-48755) is a critical argument injection vulnerability in Canonical LXD (github.com/canonical/lxd). The vulnerability occurs during instance and storage volume backup operations when processing the user-supplied compression_algorithm configuration parameter. While LXD validates the primary executable token against an allowlist of supported compression binaries, it fails to sanitize or restrict subsequent tokens parsed via shellquote.Split. These additional arguments are passed directly to exec.Command. An authenticated attacker with privileges to trigger backups can inject command-line flags for utilities like zstd to read staged files from a container filesystem and write them to arbitrary paths on the underlying host filesystem, such as /etc/cron.d/, achieving root-level arbitrary code execution on the host.

Amit Schendel
Amit Schendel
6 views•10 min read
•about 2 hours ago•GHSA-PJFF-C2WC-F6JM
9.9

CVE-2026-48769: Arbitrary File Write and Remote Code Execution via Trusted Image Hash in Canonical LXD and Linux Containers Incus

A critical path traversal vulnerability caused by improper input validation (CWE-20) exists in the direct image download handler of Canonical LXD and Linux Containers Incus. When an authenticated user requests an image import using the URL source type, the daemon reads the image fingerprint from an untrusted HTTP response header (`Incus-Image-Hash` or `LXD-Image-Hash`) without validating that it conforms to a SHA-256 format. This unvalidated string is concatenated directly into a filesystem path via `filepath.Join` prior to file creation and cryptographic verification, allowing directory traversal sequences to write arbitrary files on the host filesystem as root.

Alon Barad
Alon Barad
7 views•10 min read
•about 6 hours ago•CVE-2026-9639
6.5

CVE-2026-9639: Authenticated Denial of Service via Nil-Pointer Dereference in Canonical LXD Custom Volume Backup Import

CVE-2026-9639 (GHSA-j93m-3j9p-m5m8) is a null pointer dereference vulnerability in Canonical LXD affecting versions 5.0.0 through 5.21.4 and 6.0 through 6.8. The flaw resides in the (*lxdBackend).CreateCustomVolumeFromBackup method within lxd/storage/backend_lxd.go. An authenticated attacker with the can_create_storage_volumes permission can upload a crafted custom volume backup tarball that omits the expires_at field on a snapshot entry, triggering an unhandled SIGSEGV panic and terminating the LXD daemon.

Amit Schendel
Amit Schendel
6 views•9 min read
•about 7 hours ago•CVE-2026-33050
8.8

CVE-2026-33050: OS Command Injection in GeoNode Vector Upload Handler

An operating system command injection vulnerability (CWE-78) exists in GeoNode versions prior to 5.1.0. The vulnerability occurs in the vector upload processing pipeline when handling user-supplied geospatial files. By supplying a crafted layer name containing shell metacharacters, an authenticated attacker with basic data upload privileges can execute arbitrary commands on the underlying server or container hosting the GeoNode application and Celery worker processes.

Alon Barad
Alon Barad
6 views•9 min read
•about 8 hours ago•CVE-2026-46429
5.5

CVE-2026-46429: Unrestricted File Upload and Validation Bypass in GeoNode

GeoNode versions prior to 5.0.3 contain an unrestricted file upload vulnerability (CWE-434) within the document and dataset ingestion architecture. Authenticated low-privileged users can bypass upload validation via direct REST API interactions, file extension masquerading, metadata mutation via PATCH requests, or malicious archive submissions. This allows attackers to store and serve dangerous file types, alter on-disk file references, or trigger path traversal and resource exhaustion during archive extraction.

Amit Schendel
Amit Schendel
7 views•10 min read
•about 9 hours ago•CVE-2026-55649
6.3

CVE-2026-55649: Stored Cross-Site Scripting in GeoNode Document Metadata Abstract Field

CVE-2026-55649 is a stored Cross-Site Scripting (XSS) vulnerability in GeoNode versions prior to 5.0.3. The flaw exists because document abstract metadata fields are ingested via the metadata management pipeline and stored in the backend database without HTML sanitization or input neutralization. An authenticated attacker with privileges to create or edit document metadata can inject arbitrary HTML and JavaScript payloads into these fields. When another user, such as an administrator, views the affected document page or catalog listing, the unencoded payload is rendered into the Document Object Model (DOM) and executes within the victim's browser session.

Amit Schendel
Amit Schendel
7 views•9 min read