O endpoint `/api/ settings/database` permite a exportação completa do banco de dados (contendo todas as credenciais, chaves API, tokens OAuth e configurações) e a importação completa do banco de dados (sobrescrição completa) sem qualquer requisito de autenticação além da verificação interware `ALWAYS_PROTECED`, que valida apenas o token JWT ou CLI. Combinado com outras vulnerabilidades (por exemplo, senha padrão, exposição ao túnel), isto permite a aquisição completa do banco de dados. O objetivo `/api/settings/database` está listado em ` SALVEYS_PROTEGED` em `dashboardGuard.js` (linha 42 ) que requer um token JWT ou CLI válido. No entanto, esta proteção é insuficiente porque: 1. **GET (Exportação):** Retorna o banco de dados completo, incluindo as chaves API (campo `chave` na tabela `apiKeys`), os tokens OAuth e todas as credenciais do provedor. Linha 80 em `src/lib/db/index.js`: `apiKeys: db.all("SELECIONE * DESDE apiKeys"). map(...)` — o campo `key` contém o valor da chave API de texto simples.
2. ** POST (Importação):** Aceita o JSON arbitrário e executa um limpar e substituir um banco de dados completo em uma transação (linhas) 102 - 163 em `src/lib/db/index.js`. Isto substitui todas as configurações, incluindo o hash da senha, permitindo efetivamente que um atacante defina a sua própria senha. 3. Os dados exportados incluem `apiKeys` com seus valores de `chave` de texto simples, `providerConnections` com todos os símbolos de OAuth e `configurações' com segredos de clientes da OIDC. **Arquivo:** `src/app/api/settings/database/route.js` ```javascript exportar função async GET() { const payload = aguardar exportarDb(); devolver NextResponse.json(payload); }.
Exportar a função async POST(request) { const payload = attente request.json(); aguarde importDb(payload); //... } ``` **Arquivo:** `src/lib/db/index.js` (linhas 96 - 163 ) ``` javascript exportar async function importDb(payload) { db.transaction(() => { // Limpar todas as tabelas db.run(`DELETE DESDE configurações`); db.run(`DELETE DESDE providerConnections`); db.run(`DELETE DESDE providerNodes`); db.run(`DELETE DESDE PROxyPools`); db.run(`DELETE DESDE apiKeys`); db.run(`DELETE DESDE combos`); db.run(`DELETE DESDE KV WHEWE ambito IN (...)`); // Em seguida, insera dados controlados pelo atacante //...}); } ````` A função `exportDb` na linha 80 expõe o texto simples da tecla API: ```javascript apiKeys: db.all(`SELECT * DE apiKeys`).map((r) => ({ id: r.id, key: r.key, nome: r. name,... })), ```.
Passos para Reprodução. 1. Autenticar com qualquer JWT válido (por exemplo, usando a senha padrão " 123456 ") 2. Exportação: `curl - b auth_token= 20128 /api/ settings/ database` 3. Observar: Dump completo do banco de dados com todas as credenciais em texto simples 4. Importar dados maliciosos: `curl -X POST -b auth_token= -H "Content-Type: app/json" -d ' ' 20128 /api/ settings/ database` 5. Todas as configurações, senhas, teclas API são agora substituídas por valores controlados pelo atacante - **Confidencialidade:** Exposição completa de todos os segredos armazenados (chaves API, tokens OAuth, segredos de clientes OIDC) - **Integridade:** Reposição completa de banco de dados com dados controlados pelo atacante - **Disponibilidade:** Limpar banco de dados é possível importando um banco de dados vazio - **Alteração de campo:** Importar novas configurações afeta todos os usuários e serviços a jusante.
1. Requer uma reautenticação para exportação/importação de banco de dados (não apenas uma sessão existente) 2. Teclas API de máscara/redação na exportação (ou requerer opt-in explícito para a exportação de chaves) 3. Adicionar o passo de confirmação para a importação (requer a verificação atual da senha) 4. Implementar backup do banco de dados antes da importação 5. Registrar todas as operações de exportação/importação com trilha de auditoria Registro de aconselhamento: GHSA- qvfm- 67 h 2 - 2 - O que é isso? Identificadores relacionados: CVE- 2026 - 55500.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 06 T 21: 37: 49.000 Z e lista a sua última modificação como 2026 - 07 - 06 T 21: 37: 49.000 Z. Gravidade: Crítico. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H.
Software afetado e informações de versão: pacote npm 9 router — ECOSISTEM: introduzido 0, última afetada 0.4.71. Classificação e evidência: identificadores de fraqueza CWE- 200. O registro contém 2 suporte de referências nestes tipos: WEB, PACKAGE.