<?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/"><channel><title>Dssrf (&lt;= 1.0.3) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/dssrf--1.0.3/</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, 30 Jul 2026 21:29:12 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/dssrf--1.0.3/feed.xml" rel="self" type="application/rss+xml"/><item><title>SSRF Protection Bypass in dssrf Library via URL Normalization</title><link>https://feed.craftedsignal.io/briefs/2026-07-dssrf-ssrf-bypass/</link><pubDate>Thu, 30 Jul 2026 21:29:12 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-dssrf-ssrf-bypass/</guid><description>The dssrf library version 1.0.3 contains an SSRF bypass vulnerability in the is_url_safe function caused by improper character removal before URL parsing, allowing attackers to access restricted internal resources.</description><content:encoded><![CDATA[<p>The dssrf library (v1.0.3) is vulnerable to a Server-Side Request Forgery (SSRF) bypass due to an insecure sanitization routine in the <code>is_url_safe</code> function. The function applies a <code>remove_at_symbol_in_string</code> helper to the input URL string before the URL is parsed by the standard <code>new URL()</code> constructor. This process strips the <code>@</code> symbol, which serves as a critical delimiter between the userinfo component and the hostname in a URI.</p>
<p>By removing this delimiter, the resulting hostname is corrupted, causing the internal IP/hostname validation logic to fail to recognize restricted targets. An attacker can craft a URL using the <code>userinfo@internal-ip</code> pattern, which passes the validation logic but is interpreted correctly by downstream HTTP clients (e.g., got, axios) to make requests to internal services, such as cloud metadata endpoints (e.g., 169.254.169.254) or internal network infrastructure. This vulnerability is tracked as CVE-2026-54722 and affects all users of dssrf version 1.0.3 and earlier.</p>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows an attacker to bypass security controls designed to prevent requests to sensitive internal services. This can lead to unauthorized access to internal resources, potential exfiltration of sensitive data, or interactions with cloud metadata services (IMDS) which may contain credentials. The impact is significant for applications relying on dssrf for perimeter security in cloud-native environments.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade to dssrf version 1.0.4 or later immediately to patch the validation logic.</li>
<li>If upgrading is not immediately feasible, modify the <code>is_url_safe</code> function to remove the <code>remove_at_symbol_in_string</code> call.</li>
<li>Implement a check for userinfo components after URL parsing: ensure <code>parsed.username</code> and <code>parsed.password</code> are empty before proceeding with trust decisions.</li>
<li>Review applications using dssrf for logs indicating outbound requests to internal IP ranges (e.g., 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.169.254) initiated by server-side processes.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>ssrf</category><category>validation-bypass</category><category>cve-2026-54722</category></item></channel></rss>