Logo da CarameloSec - Plataforma de análise de segurança automatizada

Configuration File Information Leakage

Checker ID: #24

v1.0.0-alpha

Configuration File Information Leakage

Descrição

Alguns arquivos precisam existir no servidor — como documentação, configurações e arquivos de log. O problema não é tê-los, é o que está escrito dentro deles. Este checker abre cada um desses arquivos e verifica se eles contêm informações que não deveriam estar visíveis: senhas esquecidas, modo de depuração ativado, rotas internas expostas ou documentação de API sem proteção.

Importância

É muito comum que desenvolvedores deixem pequenos 'descuidos' em arquivos de configuração — uma senha de teste que virou senha de produção, um modo de debug que nunca foi desativado, um arquivo de log que registra os dados dos usuários. Cada um desses descuidos, sozinho, pode ser suficiente para um atacante entrar no sistema. Este checker age como um revisor que lê cada arquivo em busca exatamente desses erros antes que alguém mal-intencionado o faça.

Requisitos de Sucesso
  • • Nenhum arquivo monitorado deve conter configurações inseguras, senhas reais ou informações que facilitem um ataque.

  • • O checker reporta problemas em cinco níveis de gravidade, do mais ao menos crítico: CRITICAL, HIGH, MEDIUM, LOW e INFO.

Cenários de Teste
Cenário Aprovado: Arquivo de configuração do servidor sem problemas:
server {
    listen 80;
    root /var/www/html;
    autoindex off;
}
Cenário Reprovado: Aplicação rodando em modo de depuração em produção (HIGH):
# settings.py
DEBUG = True
ALLOWED_HOSTS = ['*']
Cenário Reprovado: Senha real deixada em arquivo de pipeline de deploy (CRITICAL):
# .travis.yml
env:
  MYSQL_ROOT_PASSWORD: xK9#mQ2p!zL7vR4wN8sT3uY
Cenário Reprovado: Documentação da API pública sem definição de autenticação (HIGH):
{
  "swagger": "2.0",
  "info": { "title": "Minha API" },
  "paths": { "/usuarios": {} }
}
Cenário Reprovado: Arquivo robots.txt entregando o mapa interno da aplicação (LOW):
User-agent: *
Disallow: /admin
Disallow: /api/interno
Disallow: /config