Páginas de erro detalhadas e stack traces em produção
Quando uma exceção não tratada ou uma sondagem de rota inexistente aciona a tela de erro de debug de um framework em produção, ela pode entregar a um atacante um mapa do seu servidor: caminhos de arquivos, números de linha, versões de bibliotecas e, às vezes, variáveis de ambiente. A correção é retornar respostas de erro genéricas aos usuários e registrar os detalhes completos apenas num serviço do lado do servidor que a sua equipe controla.
O que é
Todo framework web vem com uma tela de erro de debug embutida — a página amarela de exceções do Django, a tela Ignition do Laravel, o overlay de desenvolvimento do Next.js, o dump de exceções padrão do Express. Elas são valiosíssimas durante o desenvolvimento, mas são desativadas de propósito nos builds de produção. O risco está nas páginas de erro do framework que continuam ativas porque o modo debug não foi desligado, ou em handlers de erro personalizados que retornam objetos de exceção brutos direto no corpo da resposta.
O AppSafe detecta erros detalhados requisitando um caminho que não deveria existir no seu site. Se o corpo da resposta corresponder a padrões comuns de páginas de erro de frameworks — tracebacks do Python, dumps de exceção do Node.js, detalhes de exceção do .NET, caminhos Rails.root ou semelhantes —, o achado é reportado com severidade média em Tratamento de erros e resiliência.
Por que importa
Um stack trace expõe a linguagem e a versão do framework, a estrutura interna de diretórios do seu app, o arquivo e a linha exatos que falharam e a cadeia de chamadas que levou até ali. Combinada com uma base de CVEs, essa informação encurta o tempo entre a descoberta e um exploit direcionado — especialmente para vulnerabilidades conhecidas em versões específicas de frameworks ou bibliotecas.
Páginas de debug também podem incluir dados da requisição, variáveis de ambiente parciais ou fragmentos de SQL na saída renderizada, vazando sem querer entradas de usuários ou valores internos do servidor que nunca deveriam chegar a um navegador.
Como corrigir
Em rotas de API e Route Handlers do Next.js, capture as exceções explicitamente, registre o erro completo no servidor e retorne um status genérico a quem chamou.
// app/api/example/route.ts
export async function GET() {
try {
// ... handler logic ...
} catch (err) {
console.error(err); // logs stack trace to your server/monitoring only
return new Response("Internal Server Error", { status: 500 });
}
}O Next.js renderiza pages/500.tsx (ou app/error.tsx no App Router) para erros não tratados em produção. Preencha-a com uma mensagem amigável — sem detalhes técnicos — e conecte um serviço de monitoramento de erros como o Sentry para capturar a exceção real.
Para qualquer erro que escape da camada da aplicação, o nginx pode substituir todas as respostas 5xx por uma página estática antes que cheguem ao navegador.
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
internal;
}FAQ
O Next.js mostra stack traces em builds de produção?
O overlay de desenvolvimento já é suprimido em produção. O risco real são Route Handlers ou rotas de API personalizados que capturam uma exceção e a serializam direto na resposta — algo que o framework não vai impedir sozinho.
Como o AppSafe sonda erros detalhados?
Ele requisita uma URL que não existe no seu site e analisa o corpo da resposta em busca de frases como 'Traceback (most recent call last)', 'Stack trace:', 'Unhandled Runtime Error', 'Exception Details:' e marcadores semelhantes de frameworks Python, Node.js, PHP, Java, Ruby e .NET.
Minha página 404 não mostra stack trace, mas o AppSafe a sinalizou mesmo assim. Por quê?
O scanner procura um conjunto amplo de padrões, alguns dos quais aparecem em respostas de erro parciais ou censuradas. Verifique se nomes de classes de exceção, caminhos internos de arquivos ou identificadores do framework aparecem em algum lugar do corpo da sua resposta 404 ou 500 — mesmo num comentário ou num elemento oculto.
Seu app está afetado?
O AppSafe verifica isso e dezenas de outros problemas em um único escaneamento grátis.
Escanear meu app grátisGuias relacionados
Source maps em produção vazam o seu código-fonte
Arquivos .map publicados entregam o seu código original.
Métodos HTTP perigosos: como TRACE, PUT e DELETE são anunciados
Uma resposta OPTIONS que lista TRACE ou DELETE revela mais do que deveria.
Introspecção pública do GraphQL: por que é um problema e como desativá-la
Uma única query retorna o seu schema inteiro. Desative em produção.