<?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>Cline-Hub - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/cline-hub/</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, 24 Sep 2026 20:04:43 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/cline-hub/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>Cross-Origin WebSocket Hijacking in Cline Hub Dashboard</title><link>https://feed.craftedsignal.io/briefs/2026-09-cline-cswsh/</link><pubDate>Thu, 24 Sep 2026 20:04:43 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-cline-cswsh/</guid><description>The Cline Hub dashboard fails to validate Origin headers and bypasses authorization when no secret is configured, allowing malicious websites to hijack local WebSocket connections to execute arbitrary code.</description><content:encoded><![CDATA[<p>The Cline Hub dashboard server ('@cline/cline-hub'), typically initiated via the <code>cline dashboard</code> CLI command, contains a critical security flaw involving Cross-Origin WebSocket Hijacking (CSWSH). In its default configuration, the dashboard binds to <code>127.0.0.1</code> without requiring a <code>ROOM_SECRET</code>. Under these conditions, the server's <code>isAuthorizedBrowserRequest()</code> function returns <code>true</code> for all requests and performs no validation of the HTTP <code>Origin</code> header during the WebSocket upgrade process.</p>
<p>This vulnerability allows any malicious website visited by a developer running the Cline dashboard to open a WebSocket connection to <code>ws://127.0.0.1:8787/browser</code>. Once connected, the attacker can interact with the Cline session as if they were a legitimate user. This includes the ability to inject malicious MCP server configurations, modify tool approval policies, and command agent sessions to perform unauthorized actions such as file system manipulation or arbitrary command execution on the host machine. Because dashboard sessions default to auto-approving tools, this process requires no victim interaction beyond simply visiting a compromised page.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>The victim starts <code>cline dashboard</code> locally, which defaults to <code>127.0.0.1:8787</code> without a <code>ROOM_SECRET</code>.</li>
<li>The attacker lures the victim to a malicious website containing a cross-origin WebSocket payload.</li>
<li>The victim's browser initiates a WebSocket connection request to <code>ws://127.0.0.1:8787/browser</code>.</li>
<li>The Cline Hub dashboard server receives the request, identifies the missing secret, and unconditionally approves the connection, ignoring the <code>Origin</code> header.</li>
<li>The attacker's script sends a <code>desktopCommand</code> frame of type <code>upsert_mcp_server</code> over the established WebSocket.</li>
<li>The server processes the frame and writes a malicious <code>stdio</code> MCP server entry to <code>$CLINE_DATA_DIR/settings/cline_mcp_settings.json</code>.</li>
<li>Upon the next invocation or activation of the MCP server by the Cline agent, the injected command is executed with the privileges of the victim's local user account.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation allows for full command execution on the developer's local machine, potential exfiltration of sensitive session tokens or API keys, and persistent compromise via the injection of malicious MCP server entries into the developer's configuration files. This impacts any environment where developers use the default dashboard settings, posing a significant risk to individual workstations and the local development ecosystem.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Ensure that the <code>ROOM_SECRET</code> environment variable is always explicitly set for any instance of the Cline dashboard to enforce mandatory authentication.</li>
<li>Implement local firewall rules or browser security extensions to restrict WebSocket connections to <code>127.0.0.1</code> to authorized origins only.</li>
<li>Regularly audit <code>$CLINE_DATA_DIR/settings/cline_mcp_settings.json</code> for unexpected entries or suspicious <code>stdio</code> commands.</li>
<li>Avoid running the <code>cline dashboard</code> in environments where untrusted browser activity is expected.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>web-vulnerability</category><category>remote-code-execution</category><category>websocket-hijacking</category></item></channel></rss>