Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-46552 — Links de Base Compartilhada do NocoDB Podem Convidar Membros Reais da Base e Sobreviver à Revogação de Compartilhamento | Kitploit
Ferramentas/GitHubGitHub/0xmrma/cve-2026-46552
Autenticação e AutorizaçãoAnálise de VulnerabilidadesExploração de Aplicações WebTestes de PenetraçãoPapers e PesquisaAprendizado e Educação
GitHub0xmrma/cve-2026-46552

CVE-2026-46552

Links de Base Compartilhada do NocoDB Podem Convidar Membros Reais da Base e Sobreviver à Revogação de Compartilhamento

Ver Repositório
13há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-46552

Links de Base Compartilhada do NocoDB Podem Convidar Membros Reais da Base e Sobreviver à Revogação do Compartilhamento

Introdução

Encontrei esse problema ao revisar o NocoDB, com uma simples questão de segurança em mente:

Um link público de base compartilhada pode cruzar a fronteira do acesso temporário compartilhado para a associação real autenticada à base?

Neste caso, a resposta foi sim.

Uma sessão de base compartilhada autenticada apenas por xc-shared-base-id foi tratada como um visualizador normal da base para fins de ACL. Como as permissões de visualizador ainda alcançavam endpoints de gerenciamento de membros, um usuário com apenas o UUID da base compartilhada podia enumerar membros existentes da base e convidar um endereço de e-mail arbitrário para a base como membro real.

Esse usuário convidado podia então resgatar o convite através do fluxo normal de cadastro, obter uma conta autenticada padrão e manter o acesso à base mesmo depois que o proprietário desabilitasse o link de base compartilhada.

Esse problema se tornou CVE-2026-46552.

Projeto: NocoDB

Versão afetada validada: 0.301.3

Isso afetou o NocoDB; no site oficial, o NocoDB é apresentado como confiável por 35.000+ organizações, com 20+ milhões de downloads. O site também lista empresas como Accenture, Western Digital, Hyundai, Walmart, PwC, Bosch e American Express.

photo0

Cadeia de Ataque

link público de base compartilhada -> xc-shared-base-id tratado como visualizador normal da base -> ACL de visualizador alcança endpoints de gerenciamento de membros -> atacante lista usuários da base e convida e-mail arbitrário -> usuário convidado resgata token de cadastro normal -> acesso autenticado durável à base sobrevive à revogação do link compartilhado


O que o NocoDB Faz

NocoDB é uma plataforma de colaboração orientada a banco de dados que expõe acesso à base via navegador, compartilhamento, gerenciamento de metadados e fluxos de trabalho de associação de usuários.

Isso significa que seu modelo de compartilhamento é uma fronteira de segurança real.

A questão importante aqui não era se links de base compartilhada podem ler conteúdo compartilhado.

A verdadeira questão era:

Um principal de compartilhamento público pode realizar ações que deveriam pertencer apenas a membros autenticados da base?

Neste caso, podia.


Por que Essa Superfície Valia a Pena ser Examinada

Recursos de compartilhamento público são fáceis de subestimar.

Isso é um erro.

Uma vez que um aplicativo suporta:

  • acesso anônimo ou baseado em link,
  • mapeamento de funções,
  • e APIs comuns de gerenciamento autenticado por trás do mesmo sistema de ACL,

o principal risco não é apenas a exposição de dados.

O risco mais forte é o colapso de fronteira:

  • um principal de menor confiança herda capacidades de maior confiança,
  • ações de gerenciamento tornam-se acessíveis a partir de um contexto de compartilhamento público,
  • e o acesso temporário pode ser convertido em acesso persistente.

Esse era o verdadeiro problema aqui.

Isso não foi um bug na validação de login. Não foi um problema de falsificação de token. Não foi uma falha de redefinição de senha.

Foi uma clássica falha de fronteira de autorização:

  • um principal de link compartilhado foi mapeado em funções normais da base,
  • essas funções ainda incluíam capacidades de gerenciamento de membros,
  • e o estado durável de controle de acesso podia então ser modificado a partir do contexto de compartilhamento público.

A Fronteira na qual Foquei

Não abordei isso sondando endpoints aleatoriamente na esperança de que algo interessante respondesse.

O caminho mais forte foi identificar primeiro a fronteira de confiança de maior valor.

Para o NocoDB, essa era a fronteira entre:

  • acesso à base compartilhada
  • e associação autenticada à base

Esses dois estados não deveriam ser intercambiáveis.

Um link de base compartilhada deveria representar acesso limitado, revogável e baseado em link. Não deveria ser capaz de criar novos principais de longa duração dentro da base.

Essa é exatamente a fronteira que falhou aqui.


Causa Raiz

A vulnerabilidade veio de como o acesso à base compartilhada foi integrado ao caminho normal de ACL.

No fluxo frontend da base compartilhada, xc-shared-base-id era injetado enquanto cabeçalhos normais de autenticação eram removidos.

Então, no backend, BaseViewStrategy aceitava xc-shared-base-id e traduzia o link compartilhado diretamente em roles / base_roles normais derivados da configuração da base compartilhada.

Esse foi o primeiro problema.

O segundo problema foi que permissões de nível de visualizador ainda incluíam ações de gerenciamento de membros.

Na camada de ACL, ProjectRoles.VIEWER podia alcançar:

  • baseUserList
  • userInvite

Essas permissões guardavam rotas meta normais:

  • GET /api/v2/meta/bases/:baseId/users
  • POST /api/v2/meta/bases/:baseId/users

Portanto, uma sessão de compartilhamento público era efetivamente autorizada a acessar endpoints de associação destinados a participantes reais da base.

O último passo estava no próprio fluxo de convite.

BaseUsersService.userInvite() verificava o poder da função e então criava:

  • uma linha real de usuário com um invite_token
  • uma linha real de associação à base para a base alvo

E para sessões de base compartilhada:

  • invited_by tornava-se null

porque não havia uma identidade real de convidador autenticado por trás da requisição.

Essa é toda a cadeia do bug.

Por que isso é explorável

Porque a posse de um link de base compartilhada era suficiente.

O atacante não precisava de:

  • xc-auth
  • uma conta pré-existente
  • credenciais roubadas
  • ou associação prévia na base

A cadeia de exploração era direta:

  • o atacante obtém um UUID de base compartilhada
  • o UUID é aceito como um principal de visualizador da base
  • a ACL de visualizador alcança endpoints de gerenciamento de membros
  • o atacante lista membros atuais da base
  • o atacante convida um endereço de e-mail arbitrário
  • o usuário convidado resgata o token através do fluxo normal de cadastro
  • a nova conta torna-se um membro real autenticado da base
  • o proprietário posteriormente desabilita o link compartilhado
  • a conta convidada ainda mantém acesso autenticado normal

Isso converte compartilhamento de link revogável em associação durável.


O que Torna Isso um Problema de Segurança, Não Apenas um Comportamento Estranho de Compartilhamento

A distinção importante é a persistência após a revogação.

Isso não era apenas:

"um visualizador podia chamar um endpoint de visualizador"

O principal vulnerável não era um visualizador autenticado normal.

Era uma sessão de compartilhamento público.

Isso importa porque o aplicativo tratava um principal transitório, limitado ao link, como se fosse confiável o suficiente para:

  • enumerar membros reais,
  • alterar o estado de controle de acesso,
  • e criar novos principais duráveis dentro da base

A verdadeira questão não era:

"Um usuário compartilhado pode ler dados compartilhados?"

A verdadeira questão era:

"O acesso de compartilhamento público pode ser convertido em acesso autenticado permanente que sobrevive à revogação do compartilhamento?"

A resposta foi sim.

É por isso que esta é uma vulnerabilidade real de autorização, e não apenas um comportamento surpreendente do aplicativo.


PoC

Validei isso localmente contra:

  • versão do produto: 0.301.3
  • commit: dac49b0122c5ee655fb8f46a1b6e42dfeec1f3ad
  • URL base: http://127.0.0.1:8080

A reprodução foi direta.

Baixar ferramenta