No link http://goo.gl/31uVaD você consegue acessar esse curso GRATUITO EAD de Desenvolvimento Seguro de Software com Professor Alcyon Junior. Você irá desenvolver suas aplicações com mais segurança no código, mitigando risco de possíveis invasores explorarem vulnerabilidades, se tornando um profissional muito mais capacitado.
2. O objetivo deste curso é capacitar os treinandos em Codificação
Segura – Fundamentos, com habilidades e conhecimento em
Secure Programming - Foundation.
Objetivo do Curso
“A revolução começa com a informação e termina
com o resultado."
(Bernardo Morais)
Público-Alvo
Todos que desejam ter conhecimento em Fundamentos de Programação
Segura
Todos que tenham interesse no desenvolvimento de softwares seguros e
auditores que irão trabalhar com o Framework Secure Software.
3. Alcyon Junior
Gestor de Segurança da
Informação no
SEBRAE
Três graduações
Redes de
Computadores
Pós em Redes pela
Cisco | MBA em
Governança de TI |
Pós em
CyberSecurity
Mestrado em
Segurança
Cibernética
Autor de livros
sobre Segurança
Cibernética
EHF | ISO27002
| ITILF | CNAP |
CEH | MVM |
LPIC-1
Instrutor
credenciado
pela EXIN e
Líder da OWASP
BSB
#WHOAMI
6. DISCLAIMER
The information contained in this document may be privileged
and confidential and protected from disclosure. If the reader of
this document is not the intended recipient, or an employee
agent responsible for delivering this document to the
intended recipient, you are hereby notified that any
dissemination, distribution or copying of this communication is
strictly prohibited.
8. Objetivos
Explicar a importância do Princípio de Kerckhoff, Manejo de Chaves e
Aleatoriedade.
Descrever a criptografia de chave pública, ataques de homem do meio e
certificados.
Reconhecer as ameaças a SSL/TLS/HTTPS.
Aplicar HTTPS corretamente.
9. Princípio de Kerckhoff
Um bom algoritmo de criptografia não deve depender do sigilo do próprio algoritmo.
A única parte que precisa ser secreta é a chave.
Auguste Kerckhoffs, 1883
12. Revisão
Criptografia Simétrica e Assimétrica
Chave pública e chave privada
Ataque Homem-do-Meio ou Man-In-The-Midde
Certificado Digital
HTTPS
HSTS
13. Exercício
Como aplicar corretamente o HTTPS? Escolha uma das alternativas:
A. Utilizar sempre a criptografia mais forte possível (CIPHER – CIFRA);
B. Permitir tanto o uso do HTTP quanto do HTTPS;
C. Implementar a verificação do certificado, verificar se a autoridade que emitiu
o certificado não está comprometida, se a chave não está comprometida, se
o certificado não foi revogado;
D. Ignorar os alertas e mensagens de certificado inválido;
15. Objetivos
Identificar requisitos de segurança em falta.
Reconhecer ambiguidades e pressupostos ocultos em determinadas condições e
contextos.
Reconhecer ameaças que são inerentes a uma arquitetura específica.
Reconhecer soluções adequadas a ameaças e as imperfeições nessas soluções.
Reconhecer o escopo, objetivo e vantagens da revisão de código para as práticas
de desenvolvimento.
Lembrar diferentes métodos para testes de segurança.
Reconhecer o melhor teste para um determinado cenário.
Identificar formas de melhorar o desenvolvimento de software e processos de
testes, incorporando resultados de testes.
17. #DICA – STRIDE para Requisito de Seg
S Forjamento de Identidade / Requisito de Segurança Autenticação, uso de senhas
T Adulteração de Dados / Requisito de Segurança Integridade, manipulação ou validação de entrada
R Rejeição / Requisito de Segurança Não rejeição, registro
I Divulgação de Informações / Requisito de Segurança Confidencialidade, criptografia
D Recusa de Serviço / Requisito de Segurança Disponibilidade, limitar o consumo de recursos
E Elevação de Privilégios / Requisito de Segurança Autorização, realizar verificações de autorização
22. Exercício
Quais destes é uma técnica de Teste de Segurança que pode gerar uma
grande quantidade de dados de testes, executar os testes a partir dos
dados gerados, monitorar os resultados e reestabelecer o sistema em
caso de falha?
A. Teste de Penetração
B. Teste de Abuso
C. Teste de Feedback
D. Fuzzing
23. VAMOS PENSAR UM POUCO?
“- aquele que conhece o inimigo e a si mesmo,
lutará cem batalhas sem perigo de derrota;
- para aquele que não conhece o inimigo, mas
conhece a si mesmo, as chances para a
vitória ou para a derrota serão iguais;
- aquele que não conhece nem o inimigo e
nem a si próprio, será derrotado em todas as
batalhas.”
Sun Tzu (A arte da Guerra)
25. Estou pronto?
• Simulado de prova – será disponibilizado no Telegram
• Grupo de dúvidas – t.me/devsecica
Notas do Editor
Page 1
Page 2
Objetivos
Explicar a importância do Princípio de Kerckhoff, Manejo de Chaves e Aleatoriedade.
Descrever a criptografia de chave pública, ataques de homem do meio e certificados.
Reconhecer as ameaças a SSL/TLS/HTTPS.
Aplicar HTTPS corretamente.
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação:
6.2.1 Descrever a Criptografia de Chave Pública, Ataque do Homem-do-Meio e Certificados.
Discutir a simetria e assimetria criptográfica.
Ver as seções 6.1 e 6.2 do Workbook.
- Explicar as Diferenças da Criptografia Simétrica e Assimétrica
- Explicar as Diferenças entre chave secreta e chave pública
- Algoritmo de criptografia.
- Ataque Homem-do-Meio ou Man-In-The-Middle
- Certificado Digital, Assinatura Digital e Autoridade Certificadora
Especificação:
6.3.1 Reconhecer as ameaças ao SSL/TLS/HTTPS.
6.3.2 Aplicar corretamente o HTTPS .
Discutir o HTTPS como uma medida contra acesso não autorizado. Mostrar exemplos de certificados HTTP e discutir autoridades confiáveis.
Veja a seção 6.3 do Workbook.
- Explicar a diferença entre HTTP e HTTPS.
- HTTPS é um protocolo para criptografar uma conexão e autenticar a parte remota, baseado em chave pública.
- Erros do HTTPS
HSTS
- HTTP Strict Transport Security, recorda um certificado de servidor e recusa qualquer comunicação se aquele servidor não for usado.
Especificação:
6.3.2 Aplicar corretamente o HTTPS.
Completar o treinamento com uma atribuição que permite que os candidatos possam mostrar que eles podem aplicar corretamente o HTTPS.
Resposta - C
Objetivos
Identificar requisitos de segurança em falta.
Reconhecer ambiguidades e pressupostos ocultos em determinadas condições e contextos.
Reconhecer ameaças que são inerentes a uma arquitetura específica.
Reconhecer soluções adequadas a ameaças e as imperfeições nessas soluções.
Reconhecer o escopo, objetivo e vantagens da revisão de código para as práticas de desenvolvimento.
Lembrar diferentes métodos para testes de segurança.
Reconhecer o melhor teste para um determinado cenário.
Identificar formas de melhorar o desenvolvimento de software e processos de testes, incorporando resultados de testes.
Especificações
7.1.1 Identificar requisitos de segurança que estão faltando. missing security requirements.
7.1.2 Reconhecer suposições ocultas e ambiguidades em determinados requisitos e contextos.
Discutir que os requisitos de segurança geralmente não são solicitados pelo cliente, mas ainda assim são importantes.
Explicar as fases de Engenharia de Software Seguro:
Requisitos de Software Seguro, fase em que os requisitos de segurança são esquecidos
Projeto
Implementação
Verificação
Discutir utilizando STRIDE para encontrar requisitos de segurança necessários.
S - Forjamento de Identidade / Requisito de Segurança: Autenticação, uso de senhas
T – Adulteração de Dados / Requisito de Segurança: Integridade, manipulação ou validação de entrada
R – Rejeição / Requisito de Segurança: não rejeição, registro
I – Divulgação de Informações / Requisito de Segurança: confidencialidade, criptografia
D – Recusa de Serviço / Requisito de Segurança: disponibilidade, limitar o consumo de recursos
E – Elevação de Privilégios / Requisito de Segurança: Autorização, realizar verificações de autorização
Especificações
7.1.1 Identificar requisitos de segurança que estão faltando. missing security requirements.
7.1.2 Reconhecer suposições ocultas e ambiguidades em determinados requisitos e contextos.
Discutir que os requisitos de segurança geralmente não são solicitados pelo cliente, mas ainda assim são importantes.
Explicar as fases de Engenharia de Software Seguro:
Requisitos de Software Seguro, fase em que os requisitos de segurança são esquecidos
Projeto
Implementação
Verificação
Discutir utilizando STRIDE para encontrar requisitos de segurança necessários.
S - Forjamento de Identidade / Requisito de Segurança: Autenticação, uso de senhas
T – Adulteração de Dados / Requisito de Segurança: Integridade, manipulação ou validação de entrada
R – Rejeição / Requisito de Segurança: não rejeição, registro
I – Divulgação de Informações / Requisito de Segurança: confidencialidade, criptografia
D – Recusa de Serviço / Requisito de Segurança: disponibilidade, limitar o consumo de recursos
E – Elevação de Privilégios / Requisito de Segurança: Autorização, realizar verificações de autorização
Especificações:
7.2.1 Reconhecer as ameaças que são inerentes à determinada arquitetura.
7.2.2 Reconhecer soluções apropriadas para ameaças e as imperfeições dessas soluções.
Discutir sobre o diagrama de fluxo de e os limites de confiança como parte do design seguro.
Veja a seção 7.2 do Workbook.
Explicar o exemplo do DFD – Diagrama de Fluxo de Dados
Retangulo
Setas
Circulo
Especificação
7.3.1 Identificar o escopo, objetivos e vantagens da revisão de código como prática de desenvolvimento.
Discutir os princípios de codificação segura.
Ver a seção 7.3 do Workbook.
Enumeração das Fraquezas Comuns de Projeto - CWE
- CAPEC – ataque comum padrao de enumeração e classificação, possui mais de 500 padrões de ataque
Revisões de Código
- Padrão de Codificação Segura
Ferramentas de Análise Estática
Verificam o fluxo de dados
Precisam de personalização
Especificações:
7.4.1 Relembrar os diferentes métodos para testes de segurança.
7.4.2 Reconhecer o melhor teste para um determinado cenário.
7.4.3 Identificar meios para melhorar o processo de desenvolvimento e testes de software para incorporar descobertas dos testes.
Discutir medidas de teste para o desenvolvimento seguro de software.
Ver a seção 7.4 do Workbook.
Teste de Penetração ou PenTest
Tentar atacar o sistema antes dos invasores tentarem
Teste de Abuso
- Teste de segurança específico de um aplicativo, com um especialista naquela tecnologia do sistema
Varredura de Vulnerabilidade
Uso de ferramentas para identificar ou escanear as vulnerabilidades
Escaneamento para endurecimento e para cross-site-scripting
Economizam tempo, porém não detecta todas as vulnerabilidades, é preciso combinar com outros tipos de testes de segurança
Fuzzing
Recebe uma entrada para ver o comportamento do aplicativo
A entrada de teste pode ser gerada por um gerador, tem um mecanismo para garantir que o sistema processe a entrada
Tem um monitor que observa como o sistema responde
Tem um agente que pode reiniciar o sistema ou recuperar após um incidente
Pode executar por muito tempo e executar muitos casos de teste
Testes de Feedback
- Fornecem redes seguras em diferentes ponto no processo de desenvolvimento de software
Revisar em grupo todos os assuntos e termos deste módulo.
Resposta - D
Revisar de forma estruturada todos os tópicos previstos (dias 1 e 2)
Aplicar e corrigir o simulado (debater os não-acertos e dúvidas)