CVE-2026-55500
## Summary The `/api/settings/database` endpoint allows full database export (containing all credentials, API keys, OAuth tokens, and settings) and full database import (complete overwrite) without any authentication requirement beyond the `ALWAYS_PROTECTED` middleware check, which only validates JWT or CLI token. Combined with other vulnerabilities (e.g., default password, tunnel exposure), this enables complete database takeover. ## Description The endpoint `/api/settings/database` is listed in `ALWAYS_PROTECTED` in `dashboardGuard.js` (line 42), which requires a valid JWT token or CLI token. However, this protection is insufficient because: 1. **GET (Export):** Returns the complete database including API keys (`key` field in `apiKeys` table), OAuth tokens, and all provider credentials. Line 80 in `src/lib/db/index.js`: `apiKeys: db.all("SELECT * FROM apiKeys").map(...)` — the `key` field contains the plaintext API key value. 2. **POST (Import):** Accepts arbitrary JSON and performs a complete database wipe-and-replace in a transaction (lines 102-163 in `src/lib/db/index.js`). This replaces all settings including the password hash, effectively allowing an attacker to set their own password. 3. The exported data includes `apiKeys` with their plaintext `key` values, `providerConnections` with all OAuth tokens, and `settings` with OIDC client secrets. ### Evidence **File:** `src/app/api/settings/database/route.js` ```javascript export async function GET() { const payload = await exportDb(); return NextResponse.json(payload); } export async function POST(request) { const payload = await request.json(); await importDb(payload); // ... } ``` **File:** `src/lib/db/index.js` (lines 96-163) ```javascript export async function importDb(payload) { db.transaction(() => { // Wipe all tables db.run(`DELETE FROM settings`); db.run(`DELETE FROM providerConnections`); db.run(`DELETE FROM providerNodes`); db.run(`DELETE FROM proxyPools`);
Properties
- severity
- critical
- summary
- 9routers has Exposure of Sensitive Information and Unprotected Database Import/Export, Allowing Complete Credential Theft and Database Takeover
- epss_score
- 0.00387
- cvss_score
- 9.9
- ghsa_published
- 2026-07-06T21:37:49Z
- source_url
- https://github.com/advisories/GHSA-qvfm-67h2-2qfx
- ghsa_updated
- 2026-07-06T21:37:49Z
- ghsa_id
- GHSA-qvfm-67h2-2qfx
- cve_id
- CVE-2026-55500
- cvss_vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
- is_ghsa_only
- false
- epss_percentile
- 0.3213
Related Entities (5)
ENRICHED_BY (1)
VULNERABLE_TO (1)
AFFECTS (1)
HAS_WEAKNESS (1)
REPORTED_BY (1)
Explore deeper with Ninja Signal's threat intelligence graph