Segurança

Como reportar uma vulnerabilidade no cnpj.ia.br, o que está no escopo, como a chave de API deve ser guardada, onde os dados ficam e como funciona a supressão de contatos.

Atualizado em

Esta é a política referenciada pelo security.txt do cnpj.ia.br. Vulnerabilidade se reporta por e-mail para seguranca@cnpj.ia.br, em português ou inglês. Respondemos confirmando o recebimento e acompanhamos até a correção. Não há programa de recompensa em dinheiro. A chave de API vai só no header, nunca em URL, código versionado ou frontend.

Como reportar uma vulnerabilidade?

Escreva para seguranca@cnpj.ia.br com o que for possível reunir:

  • a URL ou o endpoint afetado (cnpj.ia.br, api.cnpj.ia.br, mcp.cnpj.ia.br ou app.cnpj.ia.br);
  • os passos para reproduzir, com a requisição e a resposta observadas;
  • o impacto que você entende que o problema tem;
  • como prefere ser creditado, se quiser crédito público.

Não inclua dados de terceiros nem chaves de API na mensagem. Se precisou de uma chave para reproduzir, use a sua e revogue depois. Confirmamos o recebimento e avisamos quando a correção for publicada; não publicamos prazo em número porque não medimos um ainda. Pedimos que o achado não seja divulgado antes da correção ou de um acordo sobre a data.

O que está no escopo?

Elegível: falhas de autenticação ou autorização na API e no MCP, exposição de dados que o contrato não prevê (em especial qualquer CPF), injeção em qualquer superfície, contorno da supressão por pedido do titular, falhas no portal app.cnpj.ia.br e no site.

Fora do escopo: negação de serviço e testes de carga; força bruta contra o limite de requisições, que é comportamento esperado e responde 429; engenharia social contra o time ou contra clientes; relatórios de varredura automatizada sem prova de conceito; problemas em fornecedores (Google Cloud, Firebase, Cloudflare) que não dependam de configuração nossa; ausência de cabeçalho ou de flag sem impacto demonstrado.

Como cuidar da chave de API?

A chave identifica a conta inteira e autoriza todas as operações do plano. Regras que a própria API impõe e que o cliente deve seguir:

  • Só no header Authorization: Bearer. A API não aceita chave em query string nem em cookie: uma URL com chave acaba em log de proxy, histórico de navegador e sistema de monitoramento.
  • Nunca em código versionado. Variável de ambiente ou cofre de segredos. Uma chave que apareceu em commit, log ou captura de tela deve ser revogada na hora; não existe como “desvazar”.
  • Nunca em frontend. A API nega origem de navegador nos endpoints autenticados; a chamada com chave sai do seu servidor ou do seu agente.
  • Uma chave por sistema. Revogar uma não afeta as outras, e a rotação sem interrupção está descrita em Autenticação.

A equipe nunca pede a chave, por e-mail nem por outro canal. Para suporte, o que precisamos é o request_id da resposta; o roteiro está em Contato.

Onde os dados ficam?

API e banco: GCP southamerica-east1 (São Paulo); site em CDN global do Firebase; MCP em us-central1. O tráfego é sempre por HTTPS, com cabeçalhos de segurança no site e no portal. O site é estático, sem formulário e sem widget de terceiro; a única coleta no site é a de medição, descrita em Privacidade, com opção de recusa.

Como funciona a supressão de contatos?

Quem representa uma empresa pode pedir a remoção dos contatos dela. Com o pedido ativo, a API responde com meta.suppressed: true e omite telefones, e-mail, site, contatos extras e sócios; o mesmo pedido vale para o site. A API nunca retorna CPF de sócio ou de representante, em nenhum perfil. O canal do pedido e os direitos do titular estão em Privacidade; o que a resposta traz e não traz, em Privacidade e uso aceitável.

Onde está o security.txt?

Em /.well-known/security.txt, com o canal de contato, os idiomas atendidos, a data de expiração e o link para esta página. O endereço de contato é o mesmo publicado aqui; quando um mudar, o outro muda no mesmo commit.

Perguntas frequentes

Vocês pagam recompensa por vulnerabilidade?

Não há programa de recompensa em dinheiro. Quem reporta recebe confirmação, acompanhamento até a correção e crédito público se quiser. Reportes fora do escopo descrito nesta página são respondidos, mas não tratados como vulnerabilidade.

Encontrei uma chave de API do cnpj.ia.br exposta. O que faço?

Se a chave é sua, revogue no portal e crie outra; não existe como desfazer o vazamento. Se é de terceiro, escreva para o canal de segurança desta página indicando onde a chave apareceu, sem copiá-la na mensagem; avaliamos e, confirmado o vazamento, revogamos a chave e avisamos o dono da conta.

Posso chamar a API direto do navegador com a minha chave?

Não. Os endpoints autenticados negam origem de navegador, e uma chave em frontend fica visível para qualquer visitante. A chamada com chave sai do seu servidor, da sua automação ou do seu agente; o navegador fala com o seu backend.

Em que idioma posso reportar?

Português ou inglês, os dois declarados no security.txt. A resposta vem no idioma do reporte.

Os dados saem do Brasil?

A região de cada componente (API e banco, site, servidor MCP) está publicada nesta página, na seção sobre onde os dados ficam, e é a fonte única: quando mudar, a página muda. Requisições feitas pelo servidor MCP passam pela região onde ele roda.