<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Cpe:2.3:a:unstructured:unstructured:*:*:*:*:*:*:*:* - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/cpes/cpe2.3aunstructuredunstructured/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 03 Sep 2026 18:03:56 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/cpes/cpe2.3aunstructuredunstructured/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Server-Side Request Forgery in Unstructured URL Partitioning</title><link>https://feed.craftedsignal.io/briefs/2026-09-unstructured-ssrf/</link><pubDate>Thu, 03 Sep 2026 18:03:56 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-unstructured-ssrf/</guid><description>The Unstructured library is vulnerable to unauthenticated full-read Server-Side Request Forgery (SSRF) via the partition(), partition_html(), and partition_md() functions, allowing attackers to access internal network services and cloud metadata endpoints.</description><content:encoded><![CDATA[<p>The <code>unstructured</code> Python library, widely used for URL ingestion in agent frameworks such as LangChain and LlamaIndex, contains a critical Server-Side Request Forgery (SSRF) vulnerability. The flaw exists in the <code>partition()</code>, <code>partition_html()</code>, and <code>partition_md()</code> functions, which utilize <code>requests.get()</code> to fetch remote content without performing host validation, URL filtering, or restricting requests to private/loopback IP spaces.</p>
<p>This vulnerability allows an attacker to provide an arbitrary URL to these functions, which the application then requests. Because the library returns the response body as text, it facilitates a full-read SSRF. This enables attackers to reach sensitive internal services, such as administrative APIs, databases, and microservices, or to query cloud instance metadata services (IMDS). The vulnerability has existed since version 0.4.7 (February 2023) and remains present in versions up to 0.24.0. The lack of timeouts in <code>partition_md()</code> further introduces potential denial-of-service risks via slow-loris patterns.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies an internet-facing application that uses the <code>unstructured</code> library to process user-provided URLs (e.g., an LLM agent feature or link-preview generator).</li>
<li>Attacker crafts a malicious URL pointing to an internal resource (e.g., <code>http://127.0.0.1:80</code> or <code>http://169.254.169.254/latest/meta-data/</code>).</li>
<li>Attacker submits the crafted URL to the target application's ingestion endpoint.</li>
<li>The application passes the URL to <code>unstructured.partition.auto.partition()</code>.</li>
<li>The library performs an unvalidated HTTP GET request to the target internal host using the server's identity.</li>
<li>The target internal service processes the request and returns sensitive data (e.g., IMDS credentials or admin dashboard HTML) to the library.</li>
<li>The library parses the returned sensitive data as document text and embeds it into the LLM context or application output.</li>
<li>Attacker views the output containing the exfiltrated sensitive data.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows attackers to perform reconnaissance on internal networks, gain access to sensitive internal HTTP services (e.g., Redis, Consul, Kubernetes API), and exfiltrate cloud instance credentials from metadata endpoints that permit unauthenticated GET requests. Organizations leveraging this library within agentic frameworks are at significant risk of unauthorized internal access, as the vulnerability resides within the ingestion layer, making every downstream implementation potentially susceptible.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade the <code>unstructured</code> library to version 0.24.0 or later immediately to patch CVE-2026-71428.</li>
<li>If an immediate upgrade is not possible, implement strict URL validation logic at the application layer to block requests to private IP ranges (e.g., <code>10.0.0.0/8</code>, <code>172.16.0.0/12</code>, <code>192.168.0.0/16</code>, <code>127.0.0.0/8</code>) and the cloud metadata link-local address (<code>169.254.169.254</code>).</li>
<li>Restrict egress traffic from servers running document ingestion workflows using host-based firewalls or network egress filtering to prevent unauthorized internal connectivity.</li>
</ol>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>ssrf</category><category>library-vulnerability</category><category>python</category></item></channel></rss>