<?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>Linkify-It - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/linkify-it/</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>Tue, 21 Jul 2026 19:08:30 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/linkify-it/feed.xml" rel="self" type="application/rss+xml"/><item><title>Linkify-it Denial of Service via Mailto Validator Quadratic Complexity</title><link>https://feed.craftedsignal.io/briefs/2026-07-linkify-it-dos/</link><pubDate>Tue, 21 Jul 2026 19:08:30 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-07-linkify-it-dos/</guid><description>The JavaScript library linkify-it is vulnerable to a quadratic-complexity Denial of Service (DoS) (CVE-2026-59887) due to an inefficient regular expression in its `mailto:` schema validator, which allows an unauthenticated attacker to block application event loops by supplying specially crafted input with repeated 'mailto:' strings.</description><content:encoded><![CDATA[<p>A high-severity quadratic-complexity Denial of Service (DoS) vulnerability, tracked as CVE-2026-59887, has been identified in the <code>linkify-it</code> JavaScript library, affecting all versions up to and including 5.0.1. This flaw stems from an inefficient regular expression used within the <code>mailto:</code> schema validator and an O(n) string copy operation, leading to O(n²) processing time when handling malicious input. Attackers can exploit this by crafting input text containing a large number of repeated &quot;mailto:&quot; strings, causing applications that use <code>linkify-it</code> (such as <code>markdown-it</code> 14.x for rendering user content) to experience significant delays and potentially block their single-threaded event loops for several seconds to tens of seconds. This unauthenticated attack vector impacts the availability of web applications like comment systems, chat platforms, forums, wikis, and note applications that process arbitrary user-supplied markdown.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An unauthenticated attacker crafts a malicious string containing numerous repetitions of &quot;mailto:&quot;, for example, &quot;mailto:mailto:mailto:...&quot;.</li>
<li>The attacker submits this specially crafted text to an application that uses <code>linkify-it</code> (e.g., via a comment system, forum post, or chat message) to process and render user content, such as <code>markdown-it</code> with linkification enabled.</li>
<li>The <code>linkify-it</code> library begins scanning the input text through its schema-scan loop to identify potential links.</li>
<li>Upon encountering each instance of &quot;mailto:&quot;, the library invokes its <code>mailto:</code> schema validator.</li>
<li>Inside the validator function, a substring operation <code>text.slice(pos)</code> creates an O(n) copy of the entire remaining tail of the input string for each &quot;mailto:&quot; occurrence.</li>
<li>Subsequently, a greedy regular expression <code>self.re.mailto.test(tail)</code> attempts to match against this copied O(n) tail.</li>
<li>Due to the regex's character class <code>src_email_name</code> broadly matching common characters (including those in &quot;mailto:&quot;) and the lack of an <code>@</code> symbol in the crafted string, the regex engine greedily scans the entire O(n) tail before failing.</li>
<li>With N occurrences of &quot;mailto:&quot; in the input, the combined O(n) copy and O(n) regex scan for each occurrence results in a total processing time complexity of N × O(n) = O(n²), blocking the application's event loop and causing a denial of service.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability directly impacts the availability of web applications and services that rely on <code>linkify-it</code> to process and render user-supplied text, particularly markdown-based content. Affected systems include comment systems, chat applications, forums, wikis, and note-taking platforms. Successful exploitation can lead to a significant degradation of service, as processing a relatively small input (e.g., 220 KB) can block the application's single-threaded event loop for approximately 5 seconds, with larger inputs causing tens of seconds of unresponsiveness. The primary consequence is service unavailability, severely hindering user interaction and business operations for affected platforms.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Update <code>linkify-it</code> to a patched version immediately to remediate CVE-2026-59887, which addresses the quadratic complexity issue.</li>
<li>Monitor Node.js application processes for unusual CPU spikes or prolonged execution times, as this could indicate an attempted or successful DoS attack, even without specific Sigma rules for this particular vulnerability.</li>
<li>Implement input validation or length restrictions on user-supplied text fields that are processed by <code>linkify-it</code> to mitigate the impact of excessively long strings containing repeated <code>mailto:</code> patterns.</li>
</ul>
]]></content:encoded><category domain="severity">low</category><category domain="type">advisory</category><category>denial-of-service</category><category>nodejs</category><category>web-application</category><category>vulnerability</category><category>redos</category></item></channel></rss>