<?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>Client-Side-Vulnerability — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/client-side-vulnerability/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 05 May 2026 18:28:32 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/client-side-vulnerability/feed.xml" rel="self" type="application/rss+xml"/><item><title>Anonymous GitHub Vulnerable to XSS via Unsanitized GitHub Repository Content</title><link>https://feed.craftedsignal.io/briefs/2024-01-03-anonymous-github-xss/</link><pubDate>Tue, 05 May 2026 18:28:32 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-03-anonymous-github-xss/</guid><description>The @tdurieux/anonymous_github application is vulnerable to cross-site scripting (XSS) because it renders unsanitized content from GitHub repositories, allowing a malicious GitHub repository to execute arbitrary JavaScript in the Anonymous GitHub origin.</description><content:encoded><![CDATA[<p>The @tdurieux/anonymous_github application is vulnerable to cross-site scripting (XSS) due to its unsafe handling of GitHub repository content. Specifically, the application fetches README files from GitHub repositories and renders them without proper sanitization. The vulnerability lies in the client-side rendering process, where markdown is parsed using <code>marked</code> with the <code>sanitize: false</code> option and then injected into the DOM via <code>$sce.trustAsHtml()</code> and <code>ng-bind-html</code>, effectively bypassing AngularJS&rsquo;s built-in XSS protection. An attacker can exploit this vulnerability by creating a malicious GitHub repository containing a specially crafted README file that executes arbitrary JavaScript code within the context of the Anonymous GitHub origin. This issue affects version 2.2.0 of @tdurieux/anonymous_github.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker creates a malicious GitHub repository.</li>
<li>The attacker crafts a <code>README.md</code> file within the repository containing malicious JavaScript embedded within HTML tags, such as <code>&lt;img src=x onerror=&quot;alert(document.domain)&quot;&gt;</code>.</li>
<li>A user navigates to the Anonymous GitHub application.</li>
<li>The user enters the URL of the attacker&rsquo;s malicious repository into Anonymous GitHub to anonymize it.</li>
<li>Anonymous GitHub fetches the <code>README.md</code> file from the attacker&rsquo;s repository via GitHub&rsquo;s REST API.</li>
<li>The application renders the <code>README.md</code> using <code>marked</code> with <code>sanitize: false</code> and injects the resulting HTML into the DOM via <code>$sce.trustAsHtml()</code> and <code>ng-bind-html</code> without sanitization.</li>
<li>The embedded JavaScript within the <code>README.md</code> executes in the user&rsquo;s browser within the Anonymous GitHub origin.</li>
<li>The attacker can then steal authentication tokens and session cookies or access other users&rsquo; anonymization configurations and private repository data.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this XSS vulnerability allows an attacker to execute arbitrary JavaScript code within the Anonymous GitHub origin. This can lead to several critical impacts, including account takeover through stealing authentication tokens and session cookies. Additionally, the attacker could potentially exfiltrate sensitive data, such as other users&rsquo; anonymization configurations and private repository data via the <code>/api/user</code> and <code>/api/repo/list</code> endpoints. The application is vulnerable to Stored XSS.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Implement proper sanitization of markdown output using DOMPurify before rendering, leveraging the existing but unused dependency.</li>
<li>Modify the server configuration to serve HTML files with the <code>Content-Disposition: attachment</code> header or render them within a sandboxed iframe on a separate origin to prevent XSS.</li>
<li>Replace the usage of <code>$sce.trustAsHtml()</code> with proper <code>ngSanitize</code> usage for safe HTML binding in AngularJS.</li>
<li>Apply the following remediation steps outlined in the advisory: HTML-escape filenames and paths in directory listing templates, and add Content Security Policy headers.</li>
<li>Deploy the Sigma rule &ldquo;Detect Anonymous GitHub XSS via Unsanitized Markdown&rdquo; to detect potential exploitation attempts.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>xss</category><category>github</category><category>unsanitized-input</category><category>client-side-vulnerability</category></item></channel></rss>