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 da TI e codificação segura
- Natureza da segurança
- Termos relacionados à segurança da TI
- Definição de risco
- Aspectos diferentes da segurança da TI
- Requisitos de diferentes áreas de aplicação
- Segurança da 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
- OWASP Top Ten 2013
- Comparação do OWASP Top Ten 2003 – 2013
Introdução ao ciclo de vida de desenvolvimento seguro da Microsoft® (SDL)
- Agenda
-
Aplicações sob ataque...
- Evolução do cibercrime
- Ataques estão focando em aplicações
- A maioria das vulnerabilidades está em aplicativos de pequenas ISVs
-
Origens do SDL da Microsoft...
- Cronologia da segurança na Microsoft...
- Quais aplicações são obrigadas a seguir o SDL?
-
Ciclo de vida de desenvolvimento seguro da Microsoft (SDL)
- Ciclo de vida de desenvolvimento seguro 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 aplicativos LOB
- Orientação SDL para metodologias ágeis
- O desenvolvimento de software seguro 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
- Entendendo comportamentos e preocupações de aplicativos
-
Defesa em profundidade
- Princípio central do SDL: Defesa em Profundidade
- Defesa em profundidade – exemplo
-
Princípio de privilégio mínimo
- Privilégio mínimo – exemplo
-
Configurações seguras por padrão
- Configurações seguras por padrão – exemplos
Princípios de implementação segura
- Agenda
- Ciclo de vida de desenvolvimento seguro da Microsoft (SDL)
-
Fundamentos do estouro de buffer
- Processadores Intel 80x86 – registros principais
- Layout de endereços de memória
- Mecanismo de chamada de função em C/C++ no x86
- Variáveis locais e quadro de pilha
-
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
- 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 acionadas 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 navegação de diretórios
- Mitigação da vulnerabilidade de navegação de diretórios
Dia 2
Princípios de implementação segura
-
Injeção
- Métodos típicos de ataque por 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 senhas
- Exercício – Fraquezas das senhas hasheadas
- Gerenciamento e armazenamento de senhas
- Algoritmos de hash de propósito especial 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 XSS
-
Falta de controle de acesso funcional por nível
- Filtragem de uploads de arquivos
-
Criptografia prática
- Fornecendo confidencialidade com criptografia simétrica
- Algoritmos de criptografia simétrica
- Cifras de bloco – modos de operação
- Hash ou resumo da mensagem
- 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 geral – posse da chave privada
- Erros típicos no gerenciamento de senhas
- Exercício – Senhas hard coded
- Conclusão
Princípios de verificação segura
- Teste funcional vs. teste de segurança
- Vulnerabilidades de segurança
- Priorização
- Teste de segurança no SDL
- Etapas do planejamento de teste (análise de risco)
-
Escopo e coleta de informações
- Stakeholders
- Ativos
- A superfície de ataque
- Objetivos de segurança para o teste
-
Modelagem de ameaças
- Modelagem de ameaças
- Perfis de atacantes
- Modelagem de ameaças baseada em árvores de ataque
- Modelagem de ameaças baseada em casos de uso inadequados/abuso
- Casos de uso inadequados/abuso – um exemplo simples de loja virtual
- Abordagem STRIDE por elemento para modelagem de ameaças – MS SDL
- Identificação de objetivos de segurança
- Diagramação – exemplos de elementos DFD
- Diagrama de fluxo de dados – exemplo
- Enumeração de ameaças – STRIDE e elementos DFD da MS SDL
- Análise de risco – classificação de ameaças
- 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 diferentes etapas do SDL
-
Revisão de código
- Revisão de código para segurança de software
- Análise de contaminação (taint analysis)
- 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
-
Teste da implementação
- Verificação manual em tempo de execução
- Teste de segurança manual vs. automatizado
- Testes de penetração (penetration testing)
- Testes de estresse
-
Fuzzing
- Teste de segurança automatizado – fuzzing
- Desafios do fuzzing
-
Scanners de vulnerabilidades da web
- Exercício – Usando um scanner de vulnerabilidades
-
Verificação e endurecimento do ambiente
- Sistema de pontuação comum de vulnerabilidades – CVSS
- Scanners de vulnerabilidades
- Bancos de dados públicos
-
Estudo de caso – Bypass de Autenticação de Formulários
- Vulnerabilidade de término com byte nulo (NULL byte)
- A vulnerabilidade de bypass de autenticação de formulários no código
- Explorando o bypass de autenticação de formulários
Fontes de conhecimento
- Fontes de codificação segura – um kit inicial
- Bancos de vulnerabilidades
- Diretrizes de codificação segura .NET no MSDN
- Folhas de referência de codificação segura .NET
- Livros recomendados – .NET e ASP.NET
14 Horas
Testemunhos de Clientes (5)
Múltiplos exemplos para cada módulo e grande conhecimento do instrutor.
Sebastian - BRD
Curso - Secure Developer Java (Inc OWASP)
Máquina Traduzida
Módulo 3 Ataques e Explorações em Aplicações, XSS, Injeção SQL Módulo 4 Ataques e Explorações em Servidores, DoS, BOF
Tshifhiwa - Vodacom
Curso - How to Write Secure Code
Máquina Traduzida
O instrutor forneceu informações atualizadas e referências e ferramentas valiosas.
Jose Vicente - EID
Curso - C/C++ Secure Coding
Máquina Traduzida
Nada estava perfeito.
Zola Madolo - Vodacom
Curso - Android Security
Máquina Traduzida
Os laboratórios
Katekani Nkuna - Vodacom
Curso - The Secure Coding Landscape
Máquina Traduzida