<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 20 Oct 2026 19:17:15 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-111057</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-111057</link>
      <description>&lt;p&gt;Mercury is a Python framework for sharing Jupyter notebooks as web applications and dashboards. From 3.0.0 until 3.2.4, a missing comma in BLOCKED_PATTERNS concatenates the /lab and /api/terminals regular-expression literals. Requests to /api/terminals therefore bypass the anonymous endpoint blocklist and reach Jupyter Server&amp;#39;s terminal API. An unauthenticated attacker can use the resulting interactive operating-system shell to execute commands and access data available to the Mercury process. This issue is fixed in version 3.2.4.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Mercury is a Python framework for sharing Jupyter notebooks as web applications and dashboards. From 3.0.0 until 3.2.4, a missing comma in BLOCKED_PATTERNS concatenates the /lab and /api/terminals regular-expression literals. Requests to /api/terminals therefore bypass the anonymous endpoint blocklist and reach Jupyter Server&amp;#39;s terminal API. An unauthenticated attacker can use the resulting interactive operating-system shell to execute commands and access data available to the Mercury process. This issue is fixed in version 3.2.4.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-111057</guid>
    </item>
    <item>
      <title>GHSA-f8c7-rwf9-fmgm — Mercury: Unauthenticated Remote Code Execution in /api/terminals - access control bypass</title>
      <link>https://db.gcve.eu/vuln/ghsa-f8c7-rwf9-fmgm</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: mercury&lt;/p&gt;
&lt;p&gt;### Summary
A missing comma in `mercury_app/block_handler.py`&amp;#39;s `BLOCKED_PATTERNS` list causes the blocklist to fail to cover the `/api/terminals` endpoint. As a result, any unauthenticated attacker can spawn a full, interactive OS-level shell on the host running Mercury.&lt;/p&gt;
&lt;p&gt;### Details
The blocklist in `mercury_app/block_handler.py` is defined as:
```
BLOCKED_PATTERNS = [
    # JupyterLab UI + API
    r&amp;#34;/lab(?!/(?:extensions/|api/settings(?:/|$)|api/translations(?:/|$)))(?:/.*)?&amp;#34;
    r&amp;#34;/api/terminals(?:/.*)?&amp;#34;,
    r&amp;#34;/api/shutdown(?:/.*)?&amp;#34;,
    r&amp;#34;/files(?:/.*)?&amp;#34;,
]
```
The missing comma between the first and the second line causes Python to merge the rules, therefore the actual list that is blocked looks like this:&lt;/p&gt;
&lt;p&gt;/lab...(?:/.`*`)?/api/terminals(?:/.`*`)? (the first two lines joined together)
/api/shutdown(?:/.`*`)?
/files(?:/.`*`)?&lt;/p&gt;
&lt;p&gt;A direct request to `/api/terminals` does not match any of the 3 blocklist rules and is therefore **not blocked**, reaching Jupyter
Server&amp;#39;s built-in terminal API, which spawns a real OS shell accessible over a WebSocket connection. No authentication, account, session or pre-existing access to Mercury is required.&lt;/p&gt;
&lt;p&gt;### PoC
Testing was performed on a local Docker deployment (https://runmercury.com/deploy/dockerfile/), Mercury version 3.2.3, default
configuration.
 
**Step 1 - spawn a terminal:**&lt;/p&gt;
&lt;p&gt;```
curl -i -X POST http://localhost:8888/api/terminals
```
Response: `{&amp;#34;name&amp;#34;: &amp;#34;1&amp;#34;, &amp;#34;last_activity&amp;#34;: &amp;#34;...&amp;#34;}`&lt;/p&gt;
&lt;p&gt;**Step 2 - connect to the terminal and e…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: mercury&lt;/p&gt;
&lt;p&gt;### Summary
A missing comma in `mercury_app/block_handler.py`&amp;#39;s `BLOCKED_PATTERNS` list causes the blocklist to fail to cover the `/api/terminals` endpoint. As a result, any unauthenticated attacker can spawn a full, interactive OS-level shell on the host running Mercury.&lt;/p&gt;
&lt;p&gt;### Details
The blocklist in `mercury_app/block_handler.py` is defined as:
```
BLOCKED_PATTERNS = [
    # JupyterLab UI + API
    r&amp;#34;/lab(?!/(?:extensions/|api/settings(?:/|$)|api/translations(?:/|$)))(?:/.*)?&amp;#34;
    r&amp;#34;/api/terminals(?:/.*)?&amp;#34;,
    r&amp;#34;/api/shutdown(?:/.*)?&amp;#34;,
    r&amp;#34;/files(?:/.*)?&amp;#34;,
]
```
The missing comma between the first and the second line causes Python to merge the rules, therefore the actual list that is blocked looks like this:&lt;/p&gt;
&lt;p&gt;/lab...(?:/.`*`)?/api/terminals(?:/.`*`)? (the first two lines joined together)
/api/shutdown(?:/.`*`)?
/files(?:/.`*`)?&lt;/p&gt;
&lt;p&gt;A direct request to `/api/terminals` does not match any of the 3 blocklist rules and is therefore **not blocked**, reaching Jupyter
Server&amp;#39;s built-in terminal API, which spawns a real OS shell accessible over a WebSocket connection. No authentication, account, session or pre-existing access to Mercury is required.&lt;/p&gt;
&lt;p&gt;### PoC
Testing was performed on a local Docker deployment (https://runmercury.com/deploy/dockerfile/), Mercury version 3.2.3, default
configuration.
 
**Step 1 - spawn a terminal:**&lt;/p&gt;
&lt;p&gt;```
curl -i -X POST http://localhost:8888/api/terminals
```
Response: `{&amp;#34;name&amp;#34;: &amp;#34;1&amp;#34;, &amp;#34;last_activity&amp;#34;: &amp;#34;...&amp;#34;}`&lt;/p&gt;
&lt;p&gt;**Step 2 - connect to the terminal and e…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-f8c7-rwf9-fmgm</guid>
    </item>
  </channel>
</rss>
