🔍 Validações de Segurança no Código
💡 Nota prática:
Ferramentas como SonarQube, Checkmarx, Kiuwan, Semgrep, Xygeni, Fortify e outras permitem executar validações de segurança diretamente no código, durante o desenvolvimento, nos PRs ou em pipelines CI/CD.
Estas validações automatizadas são complementares à revisão humana e devem ser configuradas com critérios mínimos obrigatórios por projeto.
A sua eficácia depende da integração com práticas de revisão, onboarding técnico e controlo de exceções.
📌 Objetivos
- Identificar vulnerabilidades no código-fonte antes da entrega.
- Automatizar verificações repetitivas e detetar falhas triviais de forma consistente.
- Suportar o processo de revisão com critérios objetivos e rastreáveis.
- Aumentar a maturidade da equipa na deteção e resposta a problemas de segurança.
👥 Quem deve aplicar
- Desenvolvedores: ao escrever e validar código localmente.
- Revisores técnicos: ao aprovar código e releases.
- Equipa de segurança: ao definir regras, métricas e severidade.
⏱️ Quando aplicar
- Durante o desenvolvimento (localmente ou via IDE)
- Ao submeter um pull request
- Antes de cada release (via CI/CD)
- Em auditorias internas ou entregas certificadas
🧱 Requisitos obrigatórios
-
Validações automáticas obrigatórias com ferramentas SAST
- Devem executar em cada PR ou commit.
- O resultado deve ser visível e rastreável.
-
Bloqueio por falhas críticas ou não justificadas
- CWE de alta severidade devem impedir merge sem exceção aprovada.
-
Integração com templates de PR
- Indicar se validação foi executada, qual ferramenta usada, e se existem findings pendentes.
-
Definição de critérios mínimos por severidade
- Ex: rejeitar código com findings "High", permitir "Low" com anotação.
-
Rastreabilidade de findings corrigidos, aceites ou justificados
- Findings devem ter justificativa ou estado claro (aceite, falso positivo, mitigado).
✅ Como validar
- Relatórios gerados automaticamente no CI/CD ou nos PRs.
- Checklists de revisão com referência a findings e sua resolução.
- Marcação explícita em ficheiros afetados ou comentários no PR.
- Links para evidência do scan (ex: output de Semgrep, relatório Kiuwan, painel SonarQube).
🧾 Como evidenciar
- Logs arquivados das ferramentas de SAST/SCA.
- Anotação no PR com findings + resolução.
- Relatório por release com métricas de findings críticos resolvidos vs. justificados.
- Scripts de verificação usados nos pipelines versionados.
🔄 Ligação a outras práticas
| Tema | Ficheiro associado |
|---|---|
| Linters e validações locais | addon/02-linters-validacoes.md |
| Justificação de exceções | addon/05-excecoes-e-justificacoes.md |
| Rastreabilidade e evidência | addon/09-anotacoes-evidencia.md |
| Guidelines de equipa | addon/07-guidelines-equipa.md |
📌 A validação automatizada do código é um dos pilares de maturidade técnica em desenvolvimento seguro.
Deve ser tratada como uma etapa obrigatória do SDLC, com critérios claros, evidência objetiva e integração com processos de revisão.