Skip to content

Diário de Bordo – Henrique Camelo Quenino

Disciplina: Gestão de Configuração e Evolução de Software
Equipe: OWASP (Red Team)
Comunidade/Projeto: EJ-Application
Sprint 5 – 12/11/2025 – 03/12/2025


Resumo da Sprint

Durante a Sprint 5, implementei hardening de segurança em HTTP headers (CSP, HSTS, X-Content-Type-Options) e consolidei uma biblioteca reutilizável de scripts PoC para o Red Team. As vulnerabilidades identificadas na Sprint 4 foram mitigadas via Issue #1512 e MR #398, reduzindo o CVSS de 5.9 (Medium) para 2.0 (Low).


Atividades Realizadas

Data Atividade Tipo Resultado
26/11/2025 Análise de headers faltando em produção Auditoria CSP, HSTS, X-Content-Type-Options ausentes
29/11/2025 Implementação de 3 headers HTTP Desenvolvimento Código adicionado em src/ej/settings/security.py
03/12/2025 Criação de Issue #1512 e MR #398 Documentação Links: #1512 e #398
03/12/2025 Consolidação de biblioteca de scripts PoC Desenvolvimento Arquivo: poc-scripts.md criado

Detalhamento das Atividades Principais

1. HTTP Security Headers (Issue #1512 / MR #398)

Problema Identificado:

curl -I https://www.ejplatform.org | grep -E "CSP|HSTS|X-Content-Type-Options"
# Resultado: APENAS X-Frame-Options presente

Impacto de Segurança: - CVSS Score: 5.9 (Medium) → 2.0 (Low) após implementação - Vulnerabilidades Mitigadas: - CWE-79: XSS (sem CSP) - CWE-295: HTTPS Downgrade (sem HSTS) - CWE-430: MIME Sniffing (sem X-Content-Type-Options)

Solução Implementada:

Adicionado em src/ej/settings/security.py:

HTTP_CONTENT_SECURITY_POLICY = env(
    "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; ...",
    name="{attr}",
)
HTTP_STRICT_TRANSPORT_SECURITY = env("max-age=31536000; includeSubDomains; preload", name="{attr}")
HTTP_X_CONTENT_TYPE_OPTIONS = env("nosniff", name="{attr}")

Resultado: ✅ CVSS reduzido em 66% | Branch pronta para review | Awaiting Blue Team approval


2. Biblioteca de Scripts de Segurança poc-scripts.md

Motivação:

Na Sprint 4, os testes foram realizados manualmente com curl e scripts ad-hoc. Na Sprint 5, consolidei uma biblioteca reutilizável e didática para:

  • 🎯 Evitar duplicação de esforço
  • 🎯 Padronizar metodologia de testes
  • 🎯 Facilitar onboarding de novos membros do Red Team
  • 🎯 Automatizar auditorias periódicas
  • 🎯 Ser utilizável em CI/CD (futuro)

Scripts Desenvolvidos:

  1. test_security_headers.sh - Valida CSP, HSTS, X-Content-Type-Options bash ./test_security_headers.sh https://www.ejplatform.org

  2. test_xss_reflected.py - Testa XSS com múltiplos payloads bash python3 test_xss_reflected.py https://www.ejplatform.org /conversations/tags/promoted search_text

  3. test_sqli.py - Testa SQL Injection com detecção de erros bash python3 test_sqli.py https://www.ejplatform.org /conversations/tags/promoted search_text

  4. test_rate_limit.sh - Valida proteção contra brute force bash ./test_rate_limit.sh https://www.ejplatform.org/api/v1/users/login/ 10

  5. run_security_audit.sh - Script master que executa todos os testes e gera relatório

Documentação: Veja poc-scripts.md para detalhes completos, exemplos de uso e roadmap de melhorias.


Vulnerabilidades Mitigadas

ID Vulnerabilidade CVSS Mitigação Status
S5-CSP XSS via headers 6.5 Content-Security-Policy
S5-HSTS HTTPS downgrade 5.9 Strict-Transport-Security
S5-MIME MIME sniffing 5.3 X-Content-Type-Options

Avanços e Aprendizados

Avanços: - Implementação completa e configurável de 3 headers críticos - CVSS reduzido de 5.9 para 2.0 (66% melhoria) - Biblioteca de scripts reutilizável e didática - Rastreabilidade via Git (branches, commits, MRs com referências)

Aprendizados: - Framework Boogie Configurations abstrai bem configuração multi-ambiente - HTTP headers são primeira linha de defesa contra XSS, HTTPS downgrade, MIME sniffing - Scripts automatizados economizam tempo em futuras auditorias - Documentação padronizada (Issue + MR + PoC scripts) melhora ciclo de segurança


Referências

  • Issue #1512: https://gitlab.com/pencillabs/ej/ej-application/-/issues/1512
  • MR #398: https://gitlab.com/pencillabs/ej/ej-application/-/merge_requests/398
  • PoC Scripts: poc-scripts.md (neste repositório)
  • Relatório Técnico Completo: sprint5-http-headers-report.md