<?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>MLJAR - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/mljar/</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>Mon, 19 Oct 2026 20:10:37 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/mljar/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>Unauthenticated Remote Code Execution in Mercury via /api/kernels</title><link>https://feed.craftedsignal.io/briefs/2026-10-mercury-rce/</link><pubDate>Mon, 19 Oct 2026 20:10:37 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-10-mercury-rce/</guid><description>The Mercury server defaults to unauthenticated access and uses an ineffective blocklist mechanism, enabling remote, unauthenticated attackers to execute arbitrary Python code via the /api/kernels websocket endpoint.</description><content:encoded><![CDATA[<p>Mercury, a framework for converting Jupyter notebooks into web applications, is vulnerable to unauthenticated remote code execution due to its default insecure configuration. By default, the application runs without requiring authentication tokens or passwords and disables XSRF checks. While Mercury attempts to restrict access to sensitive endpoints via a hardcoded blocklist, the <code>/api/kernels</code> endpoint is omitted to maintain core functionality. A flaw in the <code>patch_kernel_websocket_handler</code> function fails to filter or validate incoming WebSocket messages, specifically <code>execute_request</code> packets. Consequently, any unauthenticated network attacker can bypass intended security boundaries to provision kernels and execute arbitrary Python commands with the privileges of the Mercury server process. This vulnerability, tracked as CVE-2026-111058, affects all versions up to and including 3.2.5. This issue is distinct from previously patched terminal-based vulnerabilities and highlights a fundamental architectural risk in the reliance on blacklisting for securing Jupyter-based environments.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker performs reconnaissance to identify a network-exposed Mercury instance running with default (unauthenticated) settings.</li>
<li>Attacker sends an HTTP POST request to <code>/api/kernels</code> to request a new kernel session.</li>
<li>The Mercury server returns a 201 Created response containing a new kernel ID, as the endpoint is not covered by the security blocklist.</li>
<li>Attacker initiates a WebSocket connection to the <code>/api/kernels/&lt;id&gt;/channels</code> endpoint associated with the created kernel.</li>
<li>Attacker transmits an <code>execute_request</code> message over the established WebSocket connection containing malicious Python payloads.</li>
<li>The <code>patch_kernel_websocket_handler</code> intercepts the message to perform idle-timeout tracking but fails to inspect or block the execution request content.</li>
<li>The server processes the malicious payload, resulting in arbitrary code execution under the context of the Mercury application service account.</li>
<li>Final objective achieved: unauthorized host or container compromise, allowing for data exfiltration or lateral movement.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation leads to full remote code execution on the server hosting the Mercury instance. Because the application typically runs with service-level privileges, this allows attackers to access sensitive environment variables, secrets, application data, and potentially pivot to underlying host systems or adjacent cloud infrastructure. All default deployments of Mercury versions 3.2.5 and earlier are considered critically exposed.</p>
<h2 id="recommendation">Recommendation</h2>
<p>Prioritized actions for security teams:</p>
<ul>
<li>Immediately restrict network access to the Mercury service using firewall rules or ingress controllers, allowing only known, authorized IP ranges.</li>
<li>Patch Mercury instances or migrate to a configuration that mandates robust per-request authentication (tokens or passwords) by default, as the existing blocklist architecture is fundamentally insufficient.</li>
<li>Review web server access logs for anomalous POST requests to <code>/api/kernels</code> from unauthorized external source IPs.</li>
<li>Monitor for unexpected child processes spawned by the Mercury service user (e.g., shells, network utilities, or scripts) using EDR telemetry.</li>
<li>Verify that XSRF protections are enabled in the application configuration, as they are disabled by default in tokenless deployments.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>remote-code-execution</category><category>web-application-vulnerability</category><category>jupyter</category></item></channel></rss>