Web App 4 min de leitura

Porque é que indie hackers, solopreneurs e vibe coders precisam de pentest

Lançou em semanas com IA a escrever o código, Stripe no checkout e auth pronta. O problema: as falhas que deitam abaixo um SaaS pequeno são exatamente as que a IA reproduz. O que testar antes do primeiro cliente pagante.

Também em ESENPT-BR
Porque é que indie hackers, solopreneurs e vibe coders precisam de um pentest

A velocidade não é o problema. O que não vê é que é.

Tirou um produto da ideia para produção em poucas semanas: IA a escrever o código, Supabase ou Firebase no backend, Stripe no checkout, deploy na Vercel. Funciona, tem os primeiros utilizadores, talvez os primeiros pagantes. Parabéns — e é exatamente aqui que o risco aparece.

O problema não é a velocidade. É que as falhas que deitam abaixo um SaaS pequeno são as mais banais — autenticação, autorização, lógica de pagamento — e são precisamente as que um modelo de IA reproduz com confiança, porque aprendeu com milhões de exemplos igualmente inseguros. "Compila e corre" não é "está seguro".

Porque é que o vibe coding herda vulnerabilidades clássicas

Quando pede à IA um endpoint que "devolve os dados do utilizador", ela entrega algo que funciona no happy path. O que quase nunca acrescenta sem que peça explicitamente:

  • verificar que o utilizador autenticado é dono do recurso que está a pedir;
  • validar que o preço veio do servidor, não do frontend;
  • limitar as tentativas de login e de reposição de palavra-passe;
  • verificar que o webhook do Stripe é autêntico antes de dar acesso.

Nada disso aparece na demo. Tudo isso aparece quando alguém — curioso ou mal-intencionado — troca um número no URL.

As cinco falhas que mais deitam abaixo um produto a solo

1. IDOR: o id no URL

GET /api/projects/123 devolve o seu projeto. /api/projects/122 devolve o do vizinho, porque o backend confia no ID sem verificar a propriedade. É a fuga de dados mais comum num SaaS pequeno, e enumerável em minutos.

2. Preço definido no cliente

O checkout envia { "plan": "pro", "price": 4900 }. Se o backend confia no price recebido em vez de o procurar no seu catálogo, o cliente paga o que quiser — incluindo 1 €. Pagamento é lógica de servidor, sempre.

3. Webhook do Stripe sem verificação de assinatura

O endpoint que ativa o plano pago é chamado por um POST. Se não valida a assinatura do webhook, qualquer um envia esse POST e torna-se subscritor premium de graça.

4. Login e reposição de palavra-passe sem limites

Sem rate limit, o login torna-se alvo de força bruta e o "esqueci-me da palavra-passe" torna-se uma ferramenta para enumerar e-mails registados. Barato de explorar, caro de descobrir depois.

5. Segredos no sítio errado

A sua chave da OpenAI, o service_role do Supabase, o token do Stripe — no bundle do frontend, num .env commitado, ou expostos por uma rota de debug. Um service_role revelado é acesso total à base de dados, ignorando qualquer regra de RLS.

E se o seu produto usa IA?

Se acrescentou um chatbot, um agente ou um "pergunte à IA", herdou uma superfície nova: prompt injection, fuga do system prompt, abuso das ferramentas que o modelo pode chamar. Um utilizador pode convencer o seu assistente a fazer o que não autorizou. É um âmbito próprio, e vale a pena testar antes de ligar o modelo a dados ou ações reais.

Não precisa de um pentest enterprise

O instinto do indie hacker é adiar a segurança "até ter escala". Mas o custo de um incidente — fuga de dados de clientes, fraude no pagamento, uma conta comprometida — chega antes da escala, e para um produto a solo pode ser fatal para a reputação. Ao mesmo tempo, não precisa do pacote de auditoria de banco.

O que faz sentido nesta fase é um teste focado e leve: autenticação, autorização, lógica de pagamento, exposição de segredos e, se existir, a camada de IA. Poucos dias, um relatório direto com o que corrigir por ordem de risco, e um reteste depois de corrigir. Suficiente para não cair pelo básico.

Como a Pentest Machine testa isto

Trabalhamos desde o produto a solo até ao enterprise, com âmbito proporcional à sua fase: um pentest focado nas falhas que realmente afetam um SaaS pequeno, com PoC reproduzível, prioridade por risco e reteste incluído — mais cobertura de IA/LLM quando o seu produto tem assistente. Se lançou depressa e agora tem utilizadores reais, é o momento de descobrir o que a IA não o avisou antes que um estranho o descubra.