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 de diferentes áreas de aplicação
- Segurança de TI versus codificação segura
- De vulnerabilidades a botnets e crimes cibernéticos
- Natureza das falhas de segurança
- Razões de dificuldade
- De um computador infectado a ataques direcionados
- Classificação de falhas de segurança
- Taxonomia de Landwehr
- Os Sete Reinos Perniciosos
- OWASP Dez melhores de 2013
- OWASP Comparação dos dez melhores 2003 – 2013
- Introdução ao Microsoft® Ciclo de Vida de Desenvolvimento de Segurança (SDL)
- Agenda
- Aplicativos sob ataque...
- Evolução do crime cibernético
- Os ataques estão se concentrando em aplicativos
- A maioria das vulnerabilidades está em aplicativos ISV menores
- Origens do Microsoft SDL...
- Cronograma de segurança em Microsoft...
- Quais aplicativos são necessários para seguir o SDL?
- Microsoft Ciclo de Vida de Desenvolvimento de Segurança (SDL)
- Microsoft Ciclo de Vida de Desenvolvimento de Segurança (SDL)
- Requisitos Pré-SDL: Treinamento de Segurança
- Fase Um: Requisitos
- Fase Dois: Design
- Fase Três: Implementação
- Fase Quatro: Verificação
- Fase Cinco: Liberação – Plano de Resposta
- Fase Cinco: Lançamento – Revisão Final de Segurança
- Fase Cinco: Liberação – Arquivo
- Requisito Pós-SDL: Resposta
- Orientação de processo SDL para aplicativos LOB
- Orientação SDL para Agile Metodologias
- 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 de superfície de ataque
- Redução da superfície de ataque – exemplos
- Privacidade
- Privacidade
- Compreendendo os comportamentos e preocupações dos aplicativos
- Defesa em profundidade
- Princípio Básico do SDL: Defesa em Profundidade
- Defesa em profundidade – exemplo
- Princípio do menor privilégio
- Menor privilégio – exemplo
- Padrões seguros
- Padrões seguros – exemplos
- Superfície de ataque
- Princípios de implementação seguros
- Agenda
- Microsoft Ciclo de Vida de Desenvolvimento de Segurança (SDL)
- Noções básicas de estouro de buffer
- Processadores Intel 80x86 – registros principais
- O layout do endereço de memória
- O mecanismo de chamada de função em C/C++ em x86
- As variáveis locais e o stack frame
- Estouro de pilha
- Estouro de buffer na pilha
- Exercícios – introdução
- Exercício BOFIntro
- Exercício BOFIntro – determine o layout da pilha
- Exercício BOFIntro – uma exploração simples
- Validação de entrada
- Conceitos de validação de entrada
- Problemas inteiros
- Representação de inteiros negativos
- Estouro de número inteiro
- Estouro aritmético – adivinhe a saída!
- Exercício IntOverflow
- Qual é o valor de Math.Abs(int.MinValue)?
- Mitigação de problemas inteiros
- Mitigação de problemas inteiros
- Evitando estouro aritmético – adição
- Evitando estouro aritmético – multiplicação
- Detectando estouro com a palavra-chave verificada em C#
- Exercício – Usando a palavra-chave verificada em C#
- Exceções acionadas por overflows em C#
- Estudo de caso – Estouro de número inteiro em .NET
- Uma vulnerabilidade de estouro de número inteiro do mundo real
- Explorando a vulnerabilidade de estouro de número inteiro
- Vulnerabilidade de passagem de caminho
- Mitigação de passagem de caminho
Dia 2
- Princípios de implementação seguros
- Injeção
- Métodos típicos de ataque de injeção SQL
- Injeção cega e baseada no tempo SQL
- SQL Métodos de proteção contra injeção
- Injeção de comando
- Autenticação quebrada - gerenciamento de senha
- Exercício – Fraqueza das senhas com hash
- Gerenciamento e armazenamento de senhas
- Algoritmos hash de propósito especial para armazenamento de senhas
- Scripting entre sites (XSS)
- Scripting entre sites (XSS)
- CSS injeção
- Exploração: injeção através de outras tags HTML
- Prevenção XSS
- Controle de acesso de nível de função ausente
- Filtrando 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 prática – posse de chave privada
- Erros típicos no gerenciamento de senhas
- Exercício – Senhas codificadas
- Conclusão
- Injeçã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 testes (análise de risco)
- Escopo e coleta de informações
- Partes interessadas
- Ativos
- A superfície de ataque
- Objetivos de segurança para testes
- Modelagem de ameaças
- Modelagem de ameaças
- Perfis de invasor
- Modelagem de ameaças baseada em árvores de ataque
- Modelagem de ameaças com base em casos de uso indevido/abuso
- Casos de uso indevido/abuso – um exemplo simples de loja virtual
- 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 – elementos STRIDE e DFD do MS SDL
- 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 contaminação
- Heurística
- Análise estática de código
- 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
- Testes de segurança manuais versus automatizados
- Teste de penetração
- Testes de estresse
- Confuso
- Testes de segurança automatizados - difusão
- Desafios da difusão
- Verificadores de vulnerabilidade da Web
- Exercício – Usando um scanner de vulnerabilidade
- Verificando e fortalecendo o meio ambiente
- Sistema comum de pontuação de vulnerabilidade – CVSS
- Verificadores de vulnerabilidade
- Bancos de dados públicos
- Estudo de caso – Ignorar autenticação de formulários
- Vulnerabilidade de terminação de byte NULL
- A vulnerabilidade do Forms Authentication Bypass no código
- Explorando o desvio de autenticação de formulários
- Fontes de conhecimento
- Fontes de codificação seguras – um kit inicial
- Bancos de dados de vulnerabilidade
- Diretrizes de codificação segura do .NET no MSDN
- Folhas de dicas de codificação segura .NET
- Livros recomendados – .NET e ASP.NET
Declaração de Clientes (5)
Múltiplos exemplos para cada módulo e grande conhecimento do formador.
Sebastian - BRD
Curso - Secure Developer Java (Inc OWASP)
Máquina Traduzida
Módulo3 Ataques e explorações de aplicações, XSS, injeção SQL Módulo4 Ataques e explorações de servidores, DOS, BOF
Tshifhiwa - Vodacom
Curso - How to Write Secure Code
Máquina Traduzida
Informações gerais sobre o curso
Paulo Gouveia - EID
Curso - C/C++ Secure Coding
Máquina Traduzida
O conhecimento do treinador sobre o assunto foi excelente, e a forma como as sessões foram organizadas para que o público pudesse acompanhar as demonstrações realmente ajudou a consolidar esse conhecimento, em comparação com apenas sentar e ouvir.
Jack Allan - RSM UK Management Ltd.
Curso - Secure Developer .NET (Inc OWASP)
Máquina Traduzida
Nada estava perfeito.
Zola Madolo - Vodacom
Curso - Android Security
Máquina Traduzida