<?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>Instatic (&lt;= 0.0.13) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/instatic--0.0.13/</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>Sun, 25 Oct 2026 05:40:26 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/instatic--0.0.13/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>Instatic: Stored XSS via URL sanitization bypass (CVE-2026-103931)</title><link>https://feed.craftedsignal.io/briefs/2026-10-instatic-xss/</link><pubDate>Sun, 25 Oct 2026 05:40:26 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-10-instatic-xss/</guid><description>An incomplete URL sanitization routine in the Instatic isSafeUrl() function allows stored Cross-Site Scripting (XSS) via leading C0 control characters, enabling low-privileged users to achieve administrative account compromise.</description><content:encoded><![CDATA[<p>Instatic version 0.0.13 and earlier are vulnerable to a Stored Cross-Site Scripting (XSS) vulnerability (CVE-2026-103931) within the <code>isSafeUrl()</code> function located in <code>src/core/html-sanitize/index.ts</code>. The sanitization logic fails to correctly filter C0 control characters (U+0000 - U+001F) when checking for malicious URL schemes such as <code>javascript:</code>, <code>vbscript:</code>, or <code>data:</code>. Browsers strip these leading control characters during URL parsing, allowing payloads to bypass the application's security filter and execute in the context of the admin editor's same-origin frame.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker with 'Client' role privileges (or any role capable of editing page content) crafts a malicious URL payload using leading C0 control characters (e.g., <code>\x01javascript:alert(document.domain)</code>).</li>
<li>The payload is submitted via a link <code>href</code>, <code>image</code> source, or custom HTML attribute field.</li>
<li>The <code>isSafeUrl()</code> function attempts to normalize the input but fails to remove the specific C0 control characters, incorrectly marking the payload as &quot;safe&quot;.</li>
<li>The malicious link is stored in the site content database.</li>
<li>An administrator or owner opens the affected page within the admin editor canvas, which is an <code>srcdoc</code> iframe sharing the same origin as the <code>/admin</code> application.</li>
<li>Because the admin interface lacks a strict <code>script-src</code> Content Security Policy (CSP), the browser executes the <code>javascript:</code> payload within the admin origin upon interaction.</li>
<li>The payload executes with the privileges of the authenticated administrator, enabling session hijacking, account creation, or other malicious administrative actions.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows a low-privileged editor to escalate privileges to full administrative compromise by executing arbitrary JavaScript in the admin editor's origin. On published sites, the risk is dependent on the CSP; pages utilizing <code>'unsafe-inline'</code> are vulnerable to execution of these filtered protocols.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade Instatic to a version containing the fix that properly strips the full C0 and space range from URL inputs.</li>
<li>Implement a strict <code>script-src</code> Content Security Policy (CSP) for the admin interface to prevent the execution of inline scripts and <code>javascript:</code> protocol URLs.</li>
<li>Audit existing user-contributed content for links containing non-printable or unexpected control characters.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>xss</category><category>web-security</category><category>cwe-79</category><category>sanitization-bypass</category></item></channel></rss>