Prévia do material em texto
Ciclo de Desenvolvimento de Software Seguro (SSDLC) 1. 📑 Requisitos de Segurança Esta é a fase crítica onde os objetivos e metas são traduzidos em requisitos funcionais e não funcionais. A segurança deve ser integrada aqui (mentalidade de "segurança em primeiro lugar"), pois vulnerabilidades introduzidas posteriormente são mais custosas para corrigir. Conceito-Chave: Identificar e documentar os requisitos de segurança antes da implementação. Exemplos de Requisitos: o Autenticação e Controle de Acesso: Especificar como os usuários são autenticados e autorizados. o Proteção de Dados: Especificar o uso de criptografia para dados confidenciais. o Registro e Auditoria (Logging): Especificar como a atividade será registrada para detectar incidentes. o Conformidade: Atender a requisitos regulamentares e legais (ex: LGPD). 2. 🏗️ Projeto de Software Seguro (Security by Design) Nesta fase, a arquitetura e as especificações técnicas são definidas. O objetivo é analisar os riscos e vulnerabilidades e projetar o software de forma a mitigá-los, consolidando a segurança no design. Considerações de Segurança: o Validação de Entrada: Projetar para validar a entrada de usuários/sistemas para evitar a exploração de vulnerabilidades (ex: Injeção de SQL, XSS). o Controle de Acesso: Definir mecanismos de controle de acesso (ex: RBAC). o Armazenamento e Transmissão Segura de Dados: Projetar o uso de protocolos seguros (ex: HTTPS) e criptografia. o Tratamento de Erros e Resiliência: Projetar o software para lidar com erros de forma segura, ocultando informações confidenciais do usuário final e garantindo o retorno a um estado seguro para promover a resiliência. 3. 🔨 Desenvolvimento (Codificação) Os desenvolvedores implementam o código, seguindo as práticas de segurança e técnicas de codificação seguras definidas nas fases anteriores. Práticas de Codificação: o Uso de bibliotecas seguras em vez de codificação de segurança do zero. o Validação de Entrada Reforçada com limitação de tamanho para evitar ataques de Buffer Overflow. o Implementação de Tratamento de Erros e Exceções Seguro para evitar a exposição de informações. Verificação: o Revisão de Código por um profissional diferente. o Utilização de Scanners de Código (SAST) para detecção automatizada de problemas. o É essencial treinar o time de desenvolvimento para manter um processo operacional repetitivo de codificação segura. 4. 🧪 Teste O teste é um processo contínuo que garante que o software funcione conforme o planejado e adhira aos requisitos de segurança, identificando vulnerabilidades antes da implantação. Tipos de Teste Importantes: o Teste de Segurança: Busca por vulnerabilidades (ex: testes de penetração, verificação de vulnerabilidades). o Teste de Usabilidade: Garante que o uso inesperado do sistema não comprometa a segurança. o Teste de Desempenho: Assegura a disponibilidade sob estresse. o Software Testing e Quality Assurance (QA): O teste é a execução técnica, enquanto o QA é o processo proativo que garante padrões de segurança e qualidade em todo o ciclo. 5. 🚀 Implantação e Manutenção O software é liberado no ambiente de produção, e a segurança se torna uma atividade contínua. Implantação: Configuração segura da infraestrutura que abrigará o sistema, com especial atenção à Segurança na Nuvem (Cloud Security) para sistemas cloud. Manutenção Contínua: o Atualizações e Patches de Segurança: Aplicar patches regularmente. o Monitoramento e Resposta a Incidentes: Monitorar o software e responder de forma oportuna e eficaz a incidentes de segurança. o Backups de Dados e Recuperação de Desastres: Implementar medidas para garantir a proteção e a restauração dos dados. Este ciclo demonstra que a segurança é uma responsabilidade compartilhada e contínua, integrada em todas as etapas do desenvolvimento.