Curso Developing Secure Software
20 horasVisão Geral
Este curso capacita desenvolvedores a integrar a segurança em todas as fases do ciclo de vida do desenvolvimento de software (SDLC), transformando a segurança de um item pós-produção em um pilar fundamental da qualidade do código. Do ponto de vista técnico, os participantes aprenderão a identificar, mitigar e prevenir vulnerabilidades comuns em aplicações, como as listadas no OWASP Top 10. O curso abordará princípios de design seguro, práticas de codificação defensiva, segurança de dados em trânsito e em repouso, gerenciamento de autenticação e autorização, e a importância de testes de segurança automatizados e manuais. Serão exploradas estratégias agnósticas a linguagens, permitindo que os conceitos sejam aplicados em qualquer stack tecnológica. o desenvolvimento de software seguro é um diferencial competitivo e uma necessidade crítica para todas as organizações. Violações de segurança resultam em custos financeiros exorbitantes, danos irreparáveis à reputação e perda de confiança do cliente. Este curso equipa as equipes de desenvolvimento com o conhecimento e as habilidades para reduzir o risco de vulnerabilidades, acelerar a conformidade regulatória e entregar produtos mais confiáveis e resilientes. Investir na segurança do software desde o início resulta em economias a longo prazo (prevenir é mais barato que remediar) e na construção de uma cultura de segurança que beneficia toda a empresa, minimizando a superfície de ataque e protegendo ativos críticos.
Objetivo
Após realizar este Developing Secure Software: Práticas Essenciais para Desenvolvedores, você será capaz de:
- Compreender os princípios fundamentais da segurança de software e as principais ameaças.
- Identificar e prevenir as vulnerabilidades mais comuns, como as do OWASP Top 10.
- Aplicar práticas de codificação defensiva em seu dia a dia de desenvolvimento.
- Implementar mecanismos seguros de autenticação, autorização e gerenciamento de sessões.
- Proteger dados sensíveis em trânsito e em repouso utilizando criptografia e hashing.
- Compreender e mitigar riscos relacionados a injeções de código e falhas de validação de entrada.
- Utilizar ferramentas e técnicas de teste de segurança (SAST, DAST, SCA) em seu processo de desenvolvimento.
- Integrar considerações de segurança em todas as fases do SDLC (Secure SDLC).
- Promover uma cultura de segurança proativa dentro da equipe de desenvolvimento.
Publico Alvo
- Desenvolvedores de Software: Iniciantes, intermediários e seniores em qualquer linguagem ou plataforma.
- Engenheiros de Qualidade (QA): Que desejam aprofundar seus conhecimentos em testes de segurança.
- Arquitetos de Software: Interessados em projetar sistemas com segurança por design.
- Engenheiros de DevOps/DevSecOps: Que buscam integrar segurança nas pipelines de CI/CD.
- Líderes Técnicos: Que precisam guiar suas equipes em práticas de desenvolvimento seguro.
- Qualquer profissional de TI: Envolvido no ciclo de vida do software e preocupado com a segurança das aplicações.
Pre-Requisitos
- Conhecimento intermediário em programação em qualquer linguagem (Python, Java, C#, JavaScript, Go, etc.).
- Familiaridade com conceitos básicos de redes e sistemas operacionais.
- Compreensão de lógica de programação e estruturas de dados.
- Noções básicas de desenvolvimento web (HTTP, cliente-servidor) são úteis, mas não obrigatórias.
Materiais
Inglês/Português/Lab PráticoConteúdo Programatico
Módulo I: Fundamentos de Segurança de Software e Mentalidade (4 horas)
- 1.1. O Cenário das Ameaças Modernas (1.5h)
- O que é segurança de software e por que é importante.
- Ataques comuns e suas consequências (financeiras, reputacionais, legais).
- O Ciclo de Vida de Desenvolvimento de Software Seguro (Secure SDLC).
- Introdução ao OWASP Top 10: as vulnerabilidades mais críticas.
- 1.2. Princípios de Design Seguro (1.5h)
- Segurança por Design: incorporando segurança desde o início.
- Princípio do Privilégio Mínimo (Least Privilege).
- Princípio da Defesa em Profundidade (Defense in Depth).
- Não confiar na entrada do usuário ("Never trust user input").
- Padrões de segurança em arquitetura (e.g., Threat Modeling introdução).
- 1.3. A Criptografia para Desenvolvedores (1h)
- Fundamentos de Criptografia: hashing, criptografia simétrica e assimétrica.
- Uso correto de algoritmos criptográficos (quando usar o quê).
- Gerenciamento de chaves e segredos.
- Prática: Uso de bibliotecas de hashing e criptografia em exemplos de código.
Módulo II: Vulnerabilidades Comuns e Prevenção - OWASP Top 10 Parte 1 (6 horas)
- 2.1. Injeções (A01:2021-Injection) (2h)
- SQL Injection, NoSQL Injection, Command Injection, LDAP Injection.
- Prevenção: Prepared Statements, Stored Procedures, ORMs, Validação de Entrada.
- Prática: Demonstrar SQL Injection e aplicar medidas de prevenção.
- 2.2. Falhas de Autenticação e Autorização (A07:2021-Identification and Authentication Failures, A01:2017-Broken Access Control) (2h)
- Autenticação: Senhas fracas, credenciais expostas, falhas de MFA.
- Autorização: IDOR (Insecure Direct Object References), escalada de privilégios.
- Melhores práticas de autenticação (SSO, MFA), gerenciamento de sessões, controle de acesso baseado em funções (RBAC/ABAC).
- Prática: Implementar autenticação e autorização seguras em uma aplicação de exemplo.
- 2.3. Validação de Entrada e Saída (2h)
- Validação de entrada robusta (whitelist, sanitização).
- Cross-Site Scripting (XSS - A03:2021).
- Prevenção de XSS: Escapamento de saída, CSP (Content Security Policy).
- Prática: Demonstrar XSS e implementar validação de entrada/escapamento de saída.
Módulo III: Vulnerabilidades Comuns e Prevenção - OWASP Top 10 Parte 2 (6 horas)
- 3.1. Falhas de Design de Segurança (A04:2021-Insecure Design) (2h)
- Foco em ameaças como lógica de negócios falha, design de API vulnerável.
- Modelagem de Ameaças (Threat Modeling) como ferramenta de prevenção.
- Padrões de design seguro (e.g., Circuit Breaker, Gateway).
- Prática: Realizar um Threat Modeling simplificado para um módulo de aplicação.
- 3.2. Falhas de Configuração de Segurança (A05:2021-Security Misconfiguration) (2h)
- Configurações padrão inseguras, erros de deployment, exposição de dados.
- Gerenciamento de segredos (Key Vaults, Secrets Managers).
- Hardening de servidores, contêineres e serviços.
- Prática: Identificar e corrigir misconfigurações em um ambiente simulado.
- 3.3. Outras Vulnerabilidades Críticas (A08, A09, A10) (2h)
- Injeção de Logs, Upload de Arquivos Maliciosos.
- SSRF (Server-Side Request Forgery - A10:2021).
- Vulnerabilidades de serialização (A08:2021-Software and Data Integrity Failures).
- Requisição de Falsificação entre Sites (CSRF).
- Prática: Demonstrar e mitigar CSRF em um formulário web.
Módulo IV: Teste de Segurança e Práticas de DevSecOps (4 horas)
- 4.1. Ferramentas de Teste de Segurança de Aplicações (2h)
- SAST (Static Application Security Testing): Análise de código-fonte.
- DAST (Dynamic Application Security Testing): Teste de aplicações em execução.
- SCA (Software Composition Analysis): Análise de dependências de terceiros.
- IAST (Interactive Application Security Testing).
- Fuzzing (conceito).
- Prática: Utilizar ferramentas SAST/SCA básicas em um projeto de exemplo.
- 4.2. Integrando Segurança no CI/CD (DevSecOps) (1.5h)
- Automatizando verificações de segurança nas pipelines de CI/CD.
- "Shift Left": Encontrando vulnerabilidades mais cedo.
- Git Hooks para validações de segurança.
- Prática: Adicionar um passo de SAST ou SCA a um pipeline de CI/CD.
- 4.3. Cultura de Segurança e Próximos Passos (0.5h)
- Construindo uma cultura de segurança na equipe de desenvolvimento.
- Treinamento e conscientização contínua.
- Recursos adicionais: certificações, comunidades, blogs de segurança.