Noções de segurança
O Bolt é seguro? O que vimos em 1.123 aplicativos Bolt
O Bolt é seguro? Passamos 1.123 aplicativos Bolt no ar por nove verificações. A hospedagem saiu limpa. Os achados: chaves e tabelas abertas nos aplicativos.

Em resumo
- O Bolt é seguro? Em tudo o que o próprio Bolt decide, sim. Em 1.123 aplicativos Bolt no ar encontramos 13 publicando seus source maps, um que deixava qualquer site chamar a sua API e nenhum certificado com defeito.
- 75 desses aplicativos entregavam algo com cara de chave no código que um visitante baixa. A maioria eram chaves do Google, que costumam estar certas. Dez eram chaves da OpenAI, e quem encontra uma pode gastar com ela.
- Dos 35 bancos de dados Bolt que conseguimos de fato consultar, 27 entregaram linhas a uma requisição sem login. Os dois problemas são configurações do seu próprio projeto.
Você construiu algo no Bolt, apertou Publish, e agora ele mora num endereço que
termina em bolt.host. Antes de mandar esse link para clientes de verdade, você
digitou "bolt é seguro" numa busca, e o que voltou foi uma lista de cinco
vulnerabilidades que, pelo que dizem, estão em quase todo aplicativo Bolt, com
um scanner à venda no fim da página.
Eis o erro dessas listas: elas colocam todo risco no mesmo nível, e nos aplicativos Bolt no ar a maioria deles quase não aparece. Source maps, cabeçalhos cross-origin abertos e rotas de API sem proteção aparecem ali de igual para igual com chaves vazadas e tabelas abertas. Nos nossos dados, os três primeiros apareceram em 13, 1 e 4 aplicativos de mais de mil. Os outros dois são onde estavam os achados.
Entre 12 e 14 de agosto de 2026, passamos as mesmas nove verificações externas que qualquer pessoa pode rodar de graça na nossa página inicial por 30.998 aplicativos no ar, e 1.123 deles estavam publicados na hospedagem do próprio Bolt. Isto é o que voltou desses, e é aqui que a nossa visão termina.
O Bolt é seguro?
Em tudo o que o próprio Bolt decide, sim. A hospedagem dele saiu tão limpa quanto a do Lovable, e tudo o que baixou uma nota estava dentro de um aplicativo que o próprio dono construiu.
Pense num aplicativo Bolt como uma loja. O Bolt levanta o prédio: o endereço, o certificado, a hospedagem. Você enche a vitrine, ou seja, cada página, imagem e script que o seu aplicativo entrega a um visitante, e qualquer pessoa que passa na frente pode ler o que está ali. Atrás da loja fica o estoque, o seu banco de dados, com porta e fechadura próprias. "O Bolt é seguro" são, na verdade, três perguntas, uma para cada um.
- O prédio. O Bolt publica o seu aplicativo direito: um certificado válido, um domínio que não vai expirar, nada esquecido num endereço público. Esse é o trabalho do Bolt.
- A vitrine. O que o navegador de um visitante baixa. Uma chave deixada ali pode ser lida por qualquer pessoa que olhe, não importa como ela foi parar ali.
- O estoque. Se o seu banco de dados responde a um desconhecido que dá a volta pelos fundos e pergunta. Isso depende de uma fechadura que você coloca, tabela por tabela.
Nossas verificações leem os três de fora. Nenhuma delas lê o código que o agente do Bolt escreveu do jeito que você leria no editor, e este artigo não tenta adivinhar.
O que encontramos em 1.123 aplicativos Bolt
Nove verificações, feitas de fora, sem login e sem acesso à conta de ninguém. Quando um banco de dados respondia, perguntávamos quantas linhas ele entregaria e parávamos ali; não lemos nenhuma. Nenhum aplicativo é citado aqui nem em nada que publicamos. Cada proporção abaixo é sobre os aplicativos em que aquela verificação respondeu, porque uma verificação que não conseguiu terminar é desconhecida, não aprovada, e é por isso que os denominadores mudam. O método e os dados estão no relatório.
| O que verificamos | Aplicativos Bolt | Quem decide |
|---|---|---|
| Cabeçalhos de segurança do navegador ausentes | 1.121 de 1.123 | A hospedagem do Bolt |
| Algo com cara de chave no código que um visitante baixa | 75 de 1.123 (7 %) | O seu aplicativo |
| Uma tabela do banco legível sem login | 27 de 35 | O seu aplicativo |
| Código-fonte original publicado (source maps) | 13 de 1.123 (1 %) | Uma configuração de build |
| Um bucket de armazenamento que lista seus arquivos | 6 de 901 | O seu aplicativo |
| Uma rota de API que entregou dados a um desconhecido | 4 de 1.120 | O seu aplicativo |
| Qualquer site autorizado a chamar a sua API | 1 de 1.120 | O seu aplicativo |
Um arquivo privado como .env ou .git/config numa URL pública | 0 de 1.109 | O seu aplicativo |
| Certificado expirado ou não confiável | 0 de 1.119 | Bolt |
| Domínio perto de expirar | 0 de 1.123 | Bolt |
As notas: 1.051 A, 33 B, 24 C, 15 D e nenhum F.
Essa primeira linha é decidida por quem serve as suas páginas, e em
yourapp.bolt.host esse é o Bolt, então 1.121 aplicativos receberam a mesma
resposta. Os cabeçalhos valem a pena, e não
são eles que transformam uma nota em D. Tire essa linha e 1.008 dos 1.123
aplicativos Bolt não tinham mais nada. Os 115 restantes são o assunto do resto
deste artigo.
O que o Bolt faz certo
As verificações que dependem do Bolt voltaram quase vazias, e na única configuração de build que medimos o Bolt empata com o Lovable.
Source maps. 13 de 1.123 aplicativos Bolt publicam os arquivos originais por trás do aplicativo, comentários incluídos. É pouco mais de um em cada cem, mais ou menos a mesma taxa dos 225 de 18.553 do Lovable, e um map entrega mais do que as pessoas imaginam.
Cabeçalhos cross-origin. Um aplicativo em 1.120 dizia a qualquer site do mundo que podia chamar a sua API. É o achado que mais facilmente deixa outro site agir como o seu usuário, e no Bolt ele apareceu uma vez.
O prédio em si. O certificado era válido em todos os 1.119 aplicativos em que
conseguimos ler um, nenhum domínio dos 1.123 estava perto de expirar, e nenhum
aplicativo servia um arquivo .env ou um .git/config num endereço qualquer.
Nada disso pediu nada a você, e em alguns outros builders pede.
Do que eram feitas as 75 chaves
A maioria estava certa, e as poucas que não estavam são a coisa mais cara deste artigo.
75 dos 1.123 aplicativos Bolt tinham algo com cara de chave no código que um visitante baixa. Contadas como formas, são 7 % dos aplicativos Bolt "vazando segredos". Contadas pelo que cada chave consegue fazer, elas se dividem assim, com cada aplicativo contado uma vez só, pela coisa mais grave que ele contém:
| O que encontramos no bundle | Aplicativos | O que significa |
|---|---|---|
| Uma chave de API do Google, e nada mais | 38 | Costuma estar certa, depois de restrita ao seu domínio |
| Um segredo que não conseguimos atribuir | 26 | Não conseguimos dizer de qual fornecedor ele é |
| Uma chave da OpenAI | 10 | Cobra na sua conta, diretamente |
| Uma chave da Anthropic | 1 | Cobra na sua conta, diretamente |
As 38 chaves do Google são o motivo de classificarmos cada chave em vez de só procurar um padrão. Uma chave do Google Maps no navegador está onde deveria estar, e a correção é restringi-la ao seu próprio domínio.
As dez chaves da OpenAI são o caso oposto. Uma chave da OpenAI é um bearer token: quem tem a chave pode gastar com ela, de qualquer lugar, e a OpenAI não oferece nenhuma configuração que prenda uma chave ao seu site. Os dez aplicativos tiraram D, porque um único achado crítico põe um teto na nota, não importa o que mais o aplicativo tenha feito certo. O que fazer com uma, na ordem começa por rotacioná-la hoje mesmo.
Este é o número que faz disso o achado do Bolt. Os aplicativos Bolt eram menos de 4 em cada 100 aplicativos escaneados, e carregavam 10 das 33 chaves da OpenAI que encontramos no total. Por aplicativo, dá mais ou menos um aplicativo Bolt em cada 110, contra 18 dos 18.554 aplicativos Lovable, mais ou menos um em mil. Dez aplicativos são uma amostra pequena, e alguns a mais ou a menos mexeriam muito nessa proporção. Ainda assim o Bolt continuaria à frente de todos os outros builders que medimos.
Por que aplicativos Bolt vazam chaves de API?
De fora, não vemos como cada uma dessas dez chaves foi parar lá, e as próprias instruções do Bolt dizem que nenhuma delas deveria estar ali.
A documentação do Bolt descreve o caminho previsto. Peça ao agente para integrar a OpenAI e, nas palavras da documentação, ele vai "terminar o código e depois mostrar uma mensagem pedindo que você adicione o seu secret". Esse secret vai no painel Secrets, onde só uma função de servidor consegue lê-lo. Uma função de servidor roda do lado do Bolt, então o navegador do visitante nunca recebe a chave. Construída assim, a chave fica no estoque.
O desvio que conseguimos apontar é a variável de ambiente. A introdução do Bolt
a bancos de dados diz que variáveis de ambiente mantêm esses valores privados, e
dois dos três nomes que ela lista, VITE_SUPABASE_URL e
VITE_SUPABASE_ANON_KEY, começam com VITE_. Esse prefixo é do Vite, a
ferramenta de build, e a documentação do Vite diz o contrário sobre ele: uma
variável VITE_ é escrita no código que o navegador baixa, e nunca deve conter
uma chave de API. Para esses dois nomes isso não faz mal, porque o endereço de um
projeto e uma chave publicável foram feitos para ser públicos. Copie o mesmo
padrão para VITE_OPENAI_API_KEY e a chave fica na vitrine.
Uma chave colada no chat enquanto você consertava outra coisa também pode acabar escrita direto numa página. Nos dois casos, o resultado é o mesmo arquivo. Como o prefixo funciona explica quais valores cabem atrás dele e quais nunca.
27 de 35: os bancos Bolt que conseguimos consultar
Dos bancos de dados Bolt que nos deram uma resposta utilizável, 27 de 35 entregaram linhas a uma requisição sem login nenhum. É uma contagem, e a base é pequena demais para ser impressa como porcentagem.
Os denominadores importam aqui mais do que em qualquer outro ponto deste artigo. 266 dos 1.123 aplicativos Bolt citavam um projeto Supabase no código que entregam. Só 35 deles responderam bem o bastante para que pudéssemos julgar. Os outros 231 não puderam ser julgados, o que os deixa como desconhecidos, e não os contamos nem como limpos nem como expostos.
Em 4 dos 27, a tabela que respondeu tinha o tipo de nome que as tabelas sobre
pessoas costumam ter, como users ou profiles. Esses quatro e os onze
aplicativos com uma chave da OpenAI ou da Anthropic somam todas as 15 notas D.
Nos outros 23 era uma tabela que não conseguíamos identificar de fora, talvez
uma lista de produtos que sempre deveria ser pública, talvez qualquer outra
coisa.
Por que tudo se decide no banco de dados
Porque o endereço do estoque está impresso na vitrine, e precisa estar.
Quando um aplicativo Bolt lê os dados a partir da página, a página precisa do endereço do banco e de uma chave publicável, então os dois viajam até cada visitante. Essa chave ser pública é o certo; é por ela que o seu próprio aplicativo entra. O que ela recebe de volta é decidido por uma configuração por tabela chamada Row Level Security. Ligada e com uma policy escrita, a chave pública lê só as linhas que a policy permite. Desligada, lê a tabela.
O Supabase liga a Row Level Security por padrão nas tabelas que você cria
clicando no Table Editor. Tabelas criadas rodando SQL não recebem, e rodar
SQL é justamente como um builder cria tabelas para você. Ligar também é só o
primeiro passo, porque a policy que um assistente escreve para se livrar de um
erro de permissão costuma ser using (true), que deixa todo mundo passar
enquanto o painel mostra a tabela como protegida.
A RLS está ligada e a sua tabela continua pública
conta essa história inteira.
A verificação de banco de dados do próprio Bolt procura exatamente isso: a documentação dela a descreve como capaz de encontrar "uma policy de Row Level Security (RLS) faltando ou uma permissão aberta demais". O guia em linguagem simples para esta plataforma é o seu aplicativo Bolt é seguro.
O que a auditoria de segurança do Bolt verifica
Ela lê o seu projeto por dentro, e roda quando você aperta o botão.
O Bolt anunciou a auditoria em 30 de julho de 2026. Num plano pago, ela fica no menu Publish como Run security audit: revisa o seu código e o seu banco de dados, corrige sozinha a maioria dos problemas, aponta o resto e não gasta os seus tokens. Em todos os planos, inclusive o gratuito, as configurações de um banco de dados Bolt têm uma seção Security que roda a verificação de Row Level Security descrita acima.
O nosso escaneamento aconteceu duas semanas depois que esse botão apareceu, então os números acima não conseguem dizer o quanto ele mudou as coisas desde então. O que conseguimos dizer é como as duas visões se encaixam. A auditoria vê o seu projeto por dentro, incluindo tabelas que as suas páginas nunca citam, coisa que um escaneamento de fora nunca consegue. Um escaneamento de fora vê o que um desconhecido recebe do aplicativo publicado. Quando uma auditoria termina, o botão passa a dizer Security audit up to date, e a próxima mudança que você publicar é uma que ela não viu.
Rode a auditoria antes de publicar e olhe de fora depois. Se as duas discordarem sobre uma tabela ser legível, fique com a resposta de fora, porque é essa que um desconhecido recebe.
Como verificar o seu próprio aplicativo Bolt
Cinco coisas para olhar. Use uma janela anônima, para que o seu próprio login não responda por um desconhecido.
- Descubra qual banco de dados você tem. Projetos novos do Bolt usam um banco de dados Bolt por padrão. Se você escolheu o Supabase ao criar o projeto, ou conectou um depois, as suas tabelas moram num projeto Supabase em que você consegue entrar.
- Leia a fechadura de cada tabela. Com um banco Bolt, abra a seção Security nas configurações do banco e rode a verificação. Com o Supabase, abra Authentication → Policies e leia a lista: uma tabela com a Row Level Security desligada pode ser lida por qualquer pessoa que tenha o endereço do seu projeto, e esse endereço está no seu aplicativo. Uma policy que deixa todo mundo passar conta como desligada.
- Procure
VITE_no seu projeto. Cada valor atrás desse prefixo está na vitrine. O endereço de um projeto e uma chave publicável cabem ali. Uma chave que gera cobrança vai no painel Secrets, lida por uma função de servidor. Se alguma já ficou atrás do prefixo, rotacione primeiro no fornecedor, porque o valor antigo continua funcionando até você fazer isso. - Olhe o seu armazenamento. Um bucket marcado como público lista cada arquivo dele para qualquer pessoa que pedir, inclusive os que o seu aplicativo nunca mostra.
- Ou deixe o escaneamento fazer isso. Ele faz isso de fora junto com outras cinco verificações, leva uns 20 segundos, não pede conta e mostra uma nota e o que a causou: escaneie o seu aplicativo de graça.
Para continuar assim depois de publicar
Uma verificação do mês passado descreve o aplicativo do mês passado. No Bolt, publicar é um botão, então uma tabela criada hoje de manhã ou uma chave colada à meia-noite está no ar assim que você aperta.
O Reeve Monitor roda as nove verificações de novo para você:
- as nove verificações a cada hora, em até três aplicativos
- se o aplicativo está no ar, a cada 60 segundos
- uma mensagem quando um resultado muda, para que um achado novo não espere você olhar
- um relatório mensal do que ele viu
O Monitor custa $12 por mês no preço de tabela, com sete dias grátis antes de cobrar. A página de preços às vezes fica abaixo do número daqui e nunca acima.
Se o seu aplicativo Bolt guarda os dados no seu próprio projeto Supabase, o Reeve Care guarda uma cópia deles. Isso vale para um projeto que você conectou desde o início e para um banco Bolt que você reivindicou no Supabase.
- uma cópia criptografada do seu banco Supabase toda noite, guardada onde o seu projeto não alcança
- cada cópia verificada antes de valer, com a contagem das linhas de cada tabela
- uma restauração com um clique quando você precisar
- os seus arquivos enviados também, assim que você conectar uma credencial de Storage
- tudo o que o Monitor faz
O Care custa $49 por mês no preço de tabela para um aplicativo, com os mesmos sete dias grátis.
Uma tabela aberta é algo que um desconhecido pode ler. Uma migração que rodou do jeito errado, ou um agente com acesso ao banco, é algo que pode esvaziá-la, e nenhuma das nove verificações deste artigo traria as linhas de volta. O dia em que um agente de IA apagou um banco de dados de produção mostra como isso fica visto de dentro.
O que fazer esta semana
O que fazer
- Procure
VITE_no seu projeto Bolt e leia cada valor atrás dele. Uma chave que gera cobrança vai no painel Secrets, lida por uma função de servidor. - Se uma chave da OpenAI ou qualquer outra chave paga já esteve nessa lista, rotacione no fornecedor antes de tirá-la do código.
- Rode a verificação de segurança do banco, ou abra Authentication → Policies no Supabase, e leia a fechadura de cada tabela. Uma policy que deixa todo mundo passar deixa a tabela aberta.
- Rode a auditoria do Bolt antes de publicar e depois confira de fora o aplicativo publicado.
- Guarde uma cópia do seu banco onde nem o seu projeto nem o seu agente alcancem, e confira se essa cópia restaura.
Comece pela busca por VITE_, porque é o único achado no Bolt que custa dinheiro
sozinho. Se você ainda está escolhendo entre builders,
qual builder de aplicativos com IA é o mais seguro
coloca os cinco lado a lado.
Perguntas frequentes
O Bolt é seguro de usar?
Na parte que o Bolt controla, nossos números dizem que sim. Em 1.123 aplicativos no ar no bolt.host não encontramos nenhum certificado com defeito nem domínio perto de expirar, 13 aplicativos publicavam source maps e um deixava qualquer site chamar a sua API. O que decide o seu aplicativo está dentro dele: se uma chave que gera cobrança foi parar no código que os visitantes baixam, e se as suas tabelas respondem a um desconhecido. São duas configurações que você mesmo pode conferir.
Os aplicativos Bolt são seguros por padrão?
O que o Bolt publica por você saiu limpo no nosso escaneamento. O resto depende do que aconteceu no chat. O Bolt deveria guardar uma chave de API paga no painel Secrets, atrás de uma função de servidor, e tem uma verificação de banco de dados que procura Row Level Security faltando. Nenhuma das duas roda sozinha: a auditoria do projeto é um botão no menu Publish dos planos pagos, e a verificação do banco é uma seção que você abre. Em agosto de 2026, 75 de 1.123 aplicativos Bolt tinham algo com cara de chave no front end, e 27 dos 35 bancos que conseguimos consultar responderam a um desconhecido.
Por que aplicativos Bolt vazam chaves de API?
De fora, não vemos como cada chave chegou lá. O caminho que conseguimos apontar é a variável de ambiente. Uma variável cujo nome começa com VITE_ é escrita no JavaScript que todo visitante baixa, e o Vite, a ferramenta de build por trás desse prefixo, diz que essas variáveis nunca devem conter uma chave de API. Para o endereço de um projeto ou uma chave publicável, isso não faz mal. Para uma chave da OpenAI, é uma fatura. Dez dos 1.123 aplicativos Bolt que escaneamos entregavam uma.
Meus dados do Supabase estão seguros num aplicativo Bolt?
Depende de uma configuração por tabela. Quando um aplicativo Bolt fala com o Supabase a partir da página, ele usa uma chave publicável feita para ser pública, então só a Row Level Security decide o que um desconhecido recebe. Conseguimos pedir linhas a 35 bancos Bolt sem login, e 27 entregaram. É uma contagem, e a base é pequena demais para virar porcentagem. As suas próprias policies você lê em poucos minutos.
O Bolt é mais seguro que o Lovable?
Do lado da plataforma, ficaram empatados: 13 de 1.123 aplicativos Bolt e 225 de 18.553 aplicativos Lovable publicavam source maps, pouco mais de um em cada cem nos dois casos, e nenhum tinha problema de certificado ou de domínio. A diferença foram as chaves. Dez dos 1.123 aplicativos Bolt traziam uma chave da OpenAI, contra 18 de 18.554 no Lovable. Dez é um número pequeno, então leia isso como uma direção. A comparação completa dos cinco builders está num artigo à parte.