# /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
