Obrigado por enviar sua consulta! Um dos membros da nossa equipe entrará em contato com você em breve.
Obrigado por enviar sua reserva! Um dos membros da nossa equipe entrará em contato com você em breve.
Programa do Curso
Dia 1
Segurança de TI e codificação segura
- Natureza da segurança
- Termos relacionados à segurança de TI
- Definição de risco
- Diferentes aspectos da segurança de TI
- Requisitos das diferentes áreas de aplicação
- Segurança de TI vs. codificação segura
-
De vulnerabilidades a botnets e cibercrime
- Natureza das falhas de segurança
- Razões da dificuldade
- De um computador infectado a ataques direcionados
-
Classificação de falhas de segurança
- Taxonomia de Landwehr
- Os Sete Reinos Perniciosos (The Seven Pernicious Kingdoms)
- OWASP Top Ten 2013
- Comparação do OWASP Top Ten entre 2003 e 2013
Introdução ao Ciclo de Desenvolvimento Seguro da Microsoft® (SDL)
- Agenda
-
Aplicações sob ataque...
- Evolução do cibercrime
- Os ataques estão focando nas aplicações
- A maioria das vulnerabilidades está em pequenas aplicações de ISVs
-
Origens do SDL da Microsoft...
- Linha do tempo de segurança na Microsoft...
- Quais aplicativos devem seguir o SDL?
-
Ciclo de Desenvolvimento de Segurança da Microsoft (SDL)
- Ciclo de Desenvolvimento de Segurança da Microsoft (SDL)
- Requisitos pré-SDL: Treinamento em Segurança
- Fase Um: Requisitos
- Fase Dois: Design
- Fase Três: Implementação
- Fase Quatro: Verificação
- Fase Cinco: Lançamento – Plano de Resposta
- Fase Cinco: Lançamento – Revisão Final de Segurança
- Fase Cinco: Lançamento – Arquivamento
- Requisito pós-SDL: Resposta
- Orientação do Processo SDL para Aplicações de Negócio (LOB)
- Orientação SDL para Metodologias Ágeis
- O Desenvolvimento Seguro de Software Requer Melhoria de Processos
Princípios de design seguro
-
Superfície de ataque
- Redução da superfície de ataque
- Superfície de ataque – um exemplo
- Análise da superfície de ataque
- Redução da superfície de ataque – exemplos
-
Privacidade
- Privacidade
- Compreendendo Comportamentos e Preocupações da Aplicação
-
Defesa em profundidade
- Princípio Core do SDL: Defesa em Profundidade
- Defesa em profundidade – exemplo
-
Princípio do privilégio mínimo
- Privilégio mínimo – exemplo
-
Padrões seguros
- Padrões seguros – exemplos
Princípios de implementação segura
- Agenda
- Ciclo de Desenvolvimento de Segurança da Microsoft (SDL)
-
Fundamentos do estouro de buffer
- Processadores Intel 80x86 – registradores principais
- Layout do endereço de memória
- O mecanismo de chamada de funções em C/C++ no x86
- As variáveis locais e a estrutura da pilha (stack frame)
-
Estouro de pilha
- Estouro de buffer na pilha
- Exercícios – introdução
- Exercício BOFIntro
- Exercício BOFIntro – determinar o layout da pilha
- Exercício BOFIntro – um exploit simples
-
Validação de entrada
- Conceitos de validação de entrada
-
Problemas com inteiros
- Representação de inteiros negativos
- Estouro de inteiro (Integer overflow)
- Estouro aritmético – adivinhe a saída!
- Exercício IntOverflow
- Qual é o valor de Math.Abs(int.MinValue)?
-
Mitigação de problemas com inteiros
- Mitigação de problemas com inteiros
- Evitando estouro aritmético – adição
- Evitando estouro aritmético – multiplicação
- Detectando estouro com a palavra-chave 'checked' em C#
- Exercício – Usando a palavra-chave checked em C#
- Exceções disparadas por estouros em C#
-
Estudo de caso – Estouro de inteiro no .NET
- Uma vulnerabilidade real de estouro de inteiro
- Explorando a vulnerabilidade de estouro de inteiro
-
Vulnerabilidade de traversia de caminho (Path traversal)
- Mitigação de traversia de caminho
Dia 2
Princípios de implementação segura
-
Injeção
- Métodos típicos de ataque de Injeção SQL
- Injeção SQL cega e baseada em tempo
- Métodos de proteção contra Injeção SQL
- Injeção de comando
-
Autenticação quebrada - gerenciamento de senha
- Exercício – Fraqueza das senhas em hash
- Gerenciamento e armazenamento de senhas
- Algoritmos de hash de propósito específico para armazenamento de senhas
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- Injeção de CSS
- Exploração: injeção através de outras tags HTML
- Prevenção de XSS
-
Controle de acesso ausente ao nível de função
- Filtragem de uploads de arquivos
-
Criptografia prática
- Fornecendo confidencialidade com criptografia simétrica
- Algoritmos de criptografia simétrica
- Cifrades em blocos – modos de operação
- Hash ou resumo da mensagem (message digest)
- Algoritmos de hash
- Código de Autenticação de Mensagem (MAC)
- Fornecendo integridade e autenticidade com uma chave simétrica
- Fornecendo confidencialidade com criptografia de chave pública
- Regra prática – posse da chave privada
- Erros típicos no gerenciamento de senhas
- Exercício – Senhas codificadas no código (hardcoded)
- Conclusão
Princípios de verificação segura
- Teste funcional vs. teste de segurança
- Vulnerabilidades de segurança
- Priorização
- Testes de segurança no SDLC
- Etapas do planejamento de teste (análise de risco)
-
Delimitação e coleta de informações
- Partes interessadas
- Ativos
- A superfície de ataque
- Objetivos de segurança para teste
-
Modelagem de ameaças (Threat modeling)
- Modelagem de ameaças
- Perfis de atacante
- Modelagem de ameaças baseada em árvores de ataque
- Modelagem de ameaças baseada em casos de uso indevido/abuso
- Casos de uso indevido/abuso – um exemplo simples de loja web
- Abordagem STRIDE por elemento para modelagem de ameaças – MS SDL
- Identificando objetivos de segurança
- Diagramação – exemplos de elementos DFD
- Diagrama de fluxo de dados – exemplo
- Enumeração de ameaças – STRIDE da MS SDL e elementos DFD
- Análise de risco – classificação de ameaças
- O modelo de classificação de ameaças/risco DREAD
-
Técnicas e ferramentas de teste de segurança
- Abordagens gerais de teste
- Técnicas para várias etapas do SDLC
-
Revisão de código
- Revisão de código para segurança de software
- Análise de taint (análise de rastreamento)
- Heurísticas
-
Análise estática de código
- Análise estática de código
- Exercício – Usando ferramentas de análise estática de código
-
Testando a implementação
- Verificação manual em tempo de execução
- Teste de segurança manual vs. automatizado
- Teste de penetração (Penetration testing)
- Testes de carga/estresse
-
Fuzzing
- Teste de segurança automatizado - fuzzing
- Desafios do fuzzing
-
Scanners de vulnerabilidade web
- Exercício – Usando um scanner de vulnerabilidades
-
Verificação e endurecimento (hardening) do ambiente
- Common Vulnerability Scoring System – CVSS
- Scanners de vulnerabilidade
- Bases de dados públicas
-
Estudo de caso – Bypass da Autenticação por Formulários (Forms Authentication)
- Vulnerabilidade de terminação com byte nulo
- A vulnerabilidade de bypass da Autenticação por Formulários no código
- Explorando o Bypass da Autenticação por Formulários
Fontes de conhecimento
- Fontes de codificação segura – um kit inicial
- Bases de dados de vulnerabilidade
- Diretrizes de codificação segura do .NET no MSDN
- Cheat sheets de codificação segura do .NET
- Livros recomendados – .NET e ASP.NET
14 Horas
Testemunhos de Clientes (3)
A experiência de compartilhar, o conhecimento do professor e valioso.
Carey Fan - Logitech
Curso - C/C++ Secure Coding
Máquina Traduzida
o conhecimento do instrutor era muito elevado - ele sabia do que estava falando e conhecia as respostas para nossas perguntas
Adam - Fireup.PRO
Curso - Advanced Java Security
Máquina Traduzida
O tópico é atual e eu precisava estar atualizado
Damilano Marco - SIAP s.r.l.
Curso - Secure Developer Java (Inc OWASP)
Máquina Traduzida