# /security-audit - Template de Relatório e Ferramentas ## Template Relatório de Segurança ```markdown # RELATORIO DE SEGURANCA **Sistema:** [Nome do Sistema/Aplicação] **Data:** [YYYY-MM-DD] **Auditor:** Security Compliance Specialist - Descomplicar® **Scope:** [Frontend | Backend | Infra | Full Stack] --- ## EXECUTIVE SUMMARY [2-3 parágrafos resumindo estado de segurança global] **Score Global:** [X]/100 **CVSS Médio:** [X.X] **Breakdown:** - Críticos: [N] findings - Altos: [N] findings - Médios: [N] findings - Baixos: [N] findings --- ## FINDINGS ### CRITICOS ([N] findings) #### FINDING-001: SQL Injection em Login - **Severidade:** CRÍTICO (CVSS 9.8) - **Componente:** `login.php` linha 45 - **Categoria OWASP:** A03 - Injection **Descrição:** Parâmetro `username` não sanitizado, permitindo SQL injection. **Evidência:** ```php $sql = "SELECT * FROM users WHERE username = '" . $_POST['username'] . "'"; ``` **Proof of Concept:** ```bash curl -X POST https://site.com/login \ -d "username=' OR '1'='1&password=anything" ``` **Impacto:** - Acesso total à base de dados - Bypass de autenticação - Exfiltração de dados de clientes **Remediação:** ```php $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?"); $stmt->execute([$_POST['username']]); ``` **Prazo:** IMEDIATO **Status:** OPEN --- ## OWASP TOP 10 COMPLIANCE | # | Categoria | Status | Findings | |---|-----------|--------|----------| | A01 | Broken Access Control | Parcial | 2 médios | | A02 | Cryptographic Failures | OK | 0 | | A03 | Injection | Falha | 1 crítico, 1 alto | | A04 | Insecure Design | Parcial | 1 médio | | A05 | Security Misconfiguration | Atenção | 3 altos | | A06 | Vulnerable Components | Parcial | 5 baixos | | A07 | Auth Failures | OK | 0 | | A08 | Data Integrity | OK | 0 | | A09 | Logging Failures | Parcial | 1 médio | | A10 | SSRF | OK | 0 | --- ## COMPLIANCE GDPR - [ ] Consentimento explícito capturado - [ ] Direito ao esquecimento implementado - [ ] Portabilidade de dados possível - [ ] Retenção de dados definida - [ ] Encriptação de dados sensíveis - [ ] Logging de acessos activo **Score GDPR:** 75/100 (Parcialmente Conforme) --- **Confidencial - Descomplicar® Crescimento Digital** ``` --- ## Checklist GDPR Completo ### Consentimento - [ ] Opt-in explícito (não pré-seleccionado) - [ ] Linguagem clara - [ ] Granular (newsletter ≠ tracking) - [ ] Fácil de retirar ### Direitos do Titular - [ ] Direito ao acesso (exportar dados) - [ ] Direito à rectificação (editar dados) - [ ] Direito ao esquecimento (delete account) - [ ] Direito à portabilidade (formato standard) - [ ] Direito à oposição (opt-out processing) ### Segurança - [ ] Encriptação em trânsito (HTTPS) - [ ] Encriptação em repouso (BD sensível) - [ ] Passwords com hash forte (bcrypt) - [ ] Logs de acesso a dados pessoais - [ ] Notificação de breach (<72h) ### Documentação - [ ] Privacy policy actualizada (última 12 meses) - [ ] Cookie policy clara - [ ] Terms of service - [ ] Data processing agreement (DPA) --- ## Ferramentas de Análise ### Análise Estática (SAST) ```bash # PHP - PHPStan phpstan analyse --level=max src/ # PHP - Psalm psalm --show-info=true # PHP - Security Checker local-php-security-checker # JavaScript - ESLint eslint --ext .js,.jsx src/ # Python - Bandit bandit -r project/ ``` ### Análise Dinâmica (DAST) ```bash # OWASP ZAP (headless) zap-cli quick-scan -s all https://site.com # Nikto nikto -h https://site.com # SQLMap sqlmap -u "https://site.com/page?id=1" --batch # Nmap nmap -sV -sC site.com # WPScan (WordPress) wpscan --url https://site.com --api-token YOUR_TOKEN ``` --- ## Hardening Checklist ### Sistema Operativo (Linux) - [ ] Firewall activo (iptables/firewalld) - [ ] SELinux/AppArmor activado - [ ] SSH com key-based auth (não password) - [ ] SSH não permite root login - [ ] Fail2ban instalado e configurado - [ ] Automatic security updates - [ ] Portas desnecessárias fechadas ### Web Server (Nginx/Apache) - [ ] Server tokens desactivado - [ ] Directory listing desactivado - [ ] Security headers configurados - [ ] SSL/TLS configurado (A+ SSL Labs) - [ ] Apenas TLS 1.2+ (não SSL, TLS 1.0, 1.1) - [ ] HTTP/2 activado ### PHP - [ ] `display_errors = Off` em produção - [ ] `expose_php = Off` - [ ] `open_basedir` configurado - [ ] `disable_functions` configurado - [ ] File uploads limitados - [ ] OPcache activado ### MySQL - [ ] Bind apenas localhost (se possível) - [ ] Root sem acesso remoto - [ ] Passwords fortes - [ ] `skip-name-resolve` - [ ] Slow query log activado --- ## Severidade de Findings ``` CRÍTICO (Score 9-10) Exploração imediata possível, dados em risco RCE, SQL Injection, Authentication Bypass → Corrigir IMEDIATAMENTE (<24h) ALTO (Score 7-8.9) Vulnerabilidade significativa XSS Stored, CSRF, Insecure Deserialization → Corrigir em 24-48h MÉDIO (Score 4-6.9) Risco moderado XSS Reflected, Information Disclosure, Missing Headers → Corrigir em 7 dias BAIXO (Score 1-3.9) Melhoria recomendada Weak Password Policy, Verbose Errors, Outdated Libraries → Corrigir em 30 dias ``` **Cálculo CVSS v3:** https://www.first.org/cvss/calculator/3.1