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
Reconhecer a tensão entre as exigências do mercado e a segurança
Explicar o jargão de segurança e STRIDE
Descrever questões de segurança HTTP
Explicar o modelo de segurança do navegador
9. Hackers roubaram dados de mais de 2
milhões de clientes da T-Mobile
Dados capturados: nome, e-mail, código postal, número de telefone, e tipo
das contas (pré ou pós-pago).
detectado e contido na segunda-feira, dia 20
3% da base de 77 milhões de clientes foi afetada
hackers – parte de um “grupo internacional” – utilizaram uma API para
acessar o servidor de dados, que foi desativada rapidamente.
houve o comprometimento de um domínio interno de acesso restrito a
funcionários.
O domínio estava respondendo requisições vindas da internet com
informações confidenciais.
Faltava um sistema de controle de borda que validasse as comunicações
10. Causas do Software Inseguro
• Falta de tempo ou falta de dinheiro
• O cliente não solicitou
• Falta de conhecimento
• Más Intenções
• Ninguém vai querer invadir o meu software
11. O que é Segurança?
A Segurança pode ser definida como a proteção contra ameaças
Jargões de Segurança
Fraqueza Uma construção errada que pode prejudicar o sistema e reduzir a segurança.
Vulnerabilidade Uma fraqueza que pode ser explorada.
Explorar Abusar de uma vulnerabilidade específica, tirar proveito com más intenções de alguma falha
específica do sistema.
Ataque Uma tentativa de abusar do sistema, uma tentativa de acesso sem autorização a um sistema.
Ameaça Um potencial ataque.
Mitigar Uma medida para diminuir o impacto da ameaça.
Patch ou Remendo Uma medida para remover a vulnerabilidade de um sistema, corrigir uma falha de um sistema.
Risco Uma potencial perda de valor, usualmente expressada como a probabilidade do impacto de
perder onde se poderia ganhar.
12. Propriedades de Segurança
São propriedades de Segurança
Autenticação Verifica a identidade, se a pessoa ou algo é realmente quem alega ser.
Integridade a informação deve manter as características originais estabelecidas pelo
dono da informação.
Não repúdio impossibilidade de negar a autoria em relação a uma transação feita.
Confidencialidade o acesso deve ser realizado apenas por pessoas autorizadas.
Disponibilidade a informação deve estar sempre disponível a usuários autorizados.
Autorização verifica os privilégios, se a pessoa ou algo tem permissão para acessar
algum recurso ou informação.
13. STRIDE
S Spoofing
Forjamento de
Identidade
Fingir ser alguém ou
algo que você não é
Autenticação
A2-Broken Authentication
and Session Management;
A3-Cross-Site Scripting (XSS)
T Tampering
Adulteração de
Dados
Modificar dados
armazenados ou dados
em trânsito
Integridade
A1-Injection;
A3-Cross-Site Scripting (XSS);
A4- Insecure Direct Object
References;
A6- Sensitive Data Exposure
R Repudiation Rejeição
Negar que fez ou não
fez algo
Não Repúdio
AA2-Broken Authentication and
Session Management;
A10-Unvalidated Redirects and
Forwards
I
Information
Discosure
Divulgação de
Informações
Ver informações que
você não está
permitido a ver
Confidencialidade
A1-Injection;
A3- Cross-Site Scripting (XSS);
A4- Insecure Direct Object
References;
A6- Sensitive Data Exposure
D Denial of Service Recusa de Serviço
Negar um serviço,
deixar o sistema
indisponível.
Disponibilidade
A5-Security Misconfiguration;
A9- Using Components with
Known Vulnerabilities
E
Elevation of
Privilege
Elevação de
Privilégio
Fazer algo sem
permissão
Autorização
A2-Broken Authentication and
Session Management;
A7- Missing Function Level
Access Control;
A8- Cross-Site Request Forgery
(CSRF)
14. Superfície de Ataque e Zonas Confiáveis
Superfície de Ataque Zona de Confiança
Limite de Confiança
Defesa em Profundidade administra o risco, de modo que se uma camada de
defesa é inadequada, outra camada de defesa irá impedir a violação completa.
Falha Segura configura o tratamento de possíveis falhas do sistema que tratam
os possíveis erros que o software venha a ter.
15. Protocolo HTTP
O HTTP é um protocolo que consiste em requisição e resposta.
Possui dois métodos principais que são:
GET: é destinado a operações de leitura
POST: modifica o estado do aplicativo
O padrão HTTP não e claro em certos aspectos. Isso pode levar a equívocos. Este problema é
chamado de Poluição de Parâmetro ou HPP - HTTP Parameter Pollution. São falhas no processo de
validação da entrada de dados
16. Protocolo HTTP
Código 404 – recurso não encontrado
Código 401 – janela de login
Código 403 – acesso proibido
Código 302 – redireciona a página para a URL especificada no cabeçalho
“Location”
Código 200 – tudo ok
As solicitações AJAX funcionam como uma solicitação assíncrona dentro do navegador, usa
o XMLHttpRequest para se comunicar com os scripts do lado do servidor. Enviam o
seguinte cabeçalho:
X-Request-With: XmlHttpRequest
17. GET
http://localhost/insecure/public/Login.jsp?login=admin&pass
admin HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 Gecko/20100101 Firfox/14.0.1
Accept:
text/html,application/xhtml+xml,application/xml;q0.9,*/*;q0
.8
Accept-Language: en-us,en;q0.5
Proxy-Connection: keep-alive
Referer: http://localhost/insecure/public/Login.jsp
Cookie: JSESSIONID=73A4496C2B6C846B5E8D8C9DDDBD9D24
GET é mais rápido, envia somente texto, anexada à própria URL, tem
uma limitação de 255 caracteres
Solicitação GET
18. Cabeçalho de Resposta HTTP
Content-Type
X-Content-Type-Options
Content-disposition
Location
WWW-Authenticate
Set-Cookie
Cache-control
Ataque de
Divisão de
Resposta
HTTP
CRLF é um caractere de
avanço de linha. Uma
CRLF dupla irá incluir uma
linha em branco e pode
permitir um ataque de
injeção de cabeçalho
HTTP
Ataque de
Injeção de
Cabeçalho
HTTP
Técnica maliciosa que
redireciona para
sequestrar a sessão e
roubar a informação ou
ainda injetar códigos no
computador da vítima.
19. SOP – Política de Mesma Origem
Política de Mesma Origem ou Same Origin Policy - SOP
• Descreve sob quais condições scripts e programas em sites
podem acessar o conteúdo em outros sites.
• Os detalhes desta política diferem por navegadores e até por
versão dos navegadores.
20. Revisão
Jargões e Princípios de Segurança
STRIDE
Superfícies de Ataque e Zonas de Ataque
Defesa em Profundidade e Falhar Seguro
GET e POST
HTTP e Códigos de Status
Cabeçalho HTTP
Ataques no Cabeçalho de Resposta HTTP
Política de Mesma Origem
21. Exercícios
A que se refere a letra ‘S’ do acrônimo STRIDE ?
A. Divulgação de Informações
B. Segurança da Informação
C. Forjamento de Identidade
D. Recusa de Serviço
Notas do Editor
Page 1
Page 2
Objetivos
Reconhecer a tensão entre as exigências do mercado e a segurança.
Explicar o jargão de segurança e STRIDE.
Descrever questões de segurança HTTP;
Explicar o modelo de segurança do navegador.
Especificação
1.1.1 Reconhecer a tensão entre as demandas do mercado e segurança.
Discutir as causas do software inseguro:
Falta de tempo ou falta de dinheiro
O cliente não solicitou
Falta de conhecimento
Más Intenções
Ninguém vai querer invadir o meu software
Ver a sessão 1.1.1 do Workbook
1.2.1 Explicar jargões de segurança.
- Segurança é uma proteção contra ataques.
- Ataque é uma tentativa de acesso sem autorização.
Risco é a probabilidade de perder.
Ameaça é um potencial ataque.
Mitigar é realizar uma medida para diminuir o impacto de uma ameaça
Explorar é realizar algo para tirar proveito com más intenções de alguma falha do sistema
Remendo é uma medida para corrigir uma falha do sistema
Vulnerabilidade é uma fraqueza que pode ser realmente abusada
Fraqueza é uma construção errônea que pode reduzir a segurança.
Para fazer um software seguro, precisamos identificar quais ameaças existem e como nos proteger contra estas ameaças.
É praticamente impossível criar uma lista completa de todas as ameaças de um sistema.
Porém, muitas ameaças são conhecidas e podemos conhecer meios de nos proteger.
1.2.1 Explicar jargões de segurança.
- Segurança é uma proteção contra ataques.
- Ataque é uma tentativa de acesso sem autorização.
Risco é a probabilidade de perder.
Ameaça é um potencial ataque.
Mitigar é realizar uma medida para diminuir o impacto de uma ameaça
Explorar é realizar algo para tirar proveito com más intenções de alguma falha do sistema
Remendo é uma medida para corrigir uma falha do sistema
Vulnerabilidade é uma fraqueza que pode ser realmente abusada
Fraqueza é uma construção errônea que pode reduzir a segurança.
Para fazer um software seguro, precisamos identificar quais ameaças existem e como nos proteger contra estas ameaças.
É praticamente impossível criar uma lista completa de todas as ameaças de um sistema.
Porém, muitas ameaças são conhecidas e podemos conhecer meios de nos proteger.
1.2.1 Explicar o STRIDE.
Explicação dos Termos
S
Spoofing ou Forjamento de Identidade
Fingir ser outra pessoa ou outra coisa
T
Tampering ou Adulteração de Dados
Modificar os dados armazenados ou dados em trânsito
R
Repudiation ou Rejeição
Negar que você fez ou não fez algo.
I
Information Disclosure ou Divulgação de Informações
Ver informações que você não está permitido a ver.
D
Denial-of-Service ou Recusa de Serviço
Deixar o sistema indisponível.
E
Elevation of Privilege ou Elevação de Privilégios.
Fazer algo sem permissão.
Discutir sobre o acrônimo STRIDE. Ver a sessão 1.1.3 do workbook.
Uma das condições para o sucesso das explorações de segurança dos atacantes é o acesso à partes vulneráveis de um sistema.
As partes do sistema que o atacante tem acesso é chamado de superfície de ataque.
Diferentes usuários má intencionados podem ter acesso a diferentes partes da superfície de ataque.
Por exemplo: um auxiliar de limpeza pode ter acesso físico ao servidor enquanto que o hacker pode acessar via internet.
Para determinar a superfície de ataque, podemos dividir o sistema entre duas zonas de confiança, em que cada zona representa um degrau de confiança.
As zonas confiáveis são onde exitem maior grau de confiança, probabilidade mínima de falhas de acesso do inimigo.
Os limites de confiança são os defensores das zonas confiáveis.
Existem diversas ferramentas que evitam que sejam realizados ataques nos limites de confiança.
O HTTP
O GET é destinado à operações de leitura, são incluídos no caminho da solicitação, há uma limitação de 255 caracteres, apenas texto.
O POST irá alterar o estado da aplicação, são incluídos no corpo da solicitação, não há limitação de comprimento de mensagem.
O GET E POST são os principais métodos de comunicação HTTP.
Também existem outros métodos.
As solicitações AJAX funcionam como uma solicitação assíncrona dentro do navegador, usa o XMLHttpRequest para se comunicar com os scripts do lado do servidor.
É gerado um código JavaScript que executa neste navegador
Os códigos comunicam como o servidor executou a operação.
São alguns dos códigos de status do HTTP:
200: ocorreu tudo bem.
404: recurso não foi encontrado.
403: acesso proibido.
302: irá redirecionar o navegador a URL que está no cabeçalho de localização
401: irá exibir uma janela de login para autenticar no servidor web
O GET é destinado à operações de leitura, são incluídos no caminho da solicitação, há uma limitação de 255 caracteres, apenas texto.
O POST irá alterar o estado da aplicação, são incluídos no corpo da solicitação, não há limitação de comprimento de mensagem.
O GET E POST são os principais métodos de comunicação HTTP.
Também existem outros métodos.
As solicitações AJAX funcionam como uma solicitação assíncrona dentro do navegador, usa o XMLHttpRequest para se comunicar com os scripts do lado do servidor.
É gerado um código JavaScript que executa neste navegador
Os códigos comunicam como o servidor executou a operação.
São alguns dos códigos de status do HTTP:
200: ocorreu tudo bem.
404: recurso não foi encontrado.
403: acesso proibido.
302: irá redirecionar o navegador a URL que está no cabeçalho de localização
401: irá exibir uma janela de login para autenticar no servidor web
Especificações
1.3.1 Descrever as questões de segurança do HTTP
1.3.2 Explicar o Modelo de Segurança do Browser
Discutir as requisições POST e GET com exemplos. Ver o exemplo do Workbook.
Discutir o que aconteceria e se as pessoas estão cientes do limite de confiança entre o navegador e o servidor.
A política de mesma origem SOP descreve em quais condições os scripts e programas em sites podem acessar conteúdo em outros sites.
Análise do Cabeçalho de Resposta
CRLF
Ataque de Divisão de Resposta HTTP
Política de Mesma Origem
Política de Mesma Origem
Termos de Segurança
Segurança
Ataque
Explorar
Mitigar
Risco
Ameaça
STRIDE
Forjamento de Identidade
Recusa de Serviço
Divulgar Informações
Adulteração de Dados
Superfícies de Ataque
Limites de Confiança
Zonas Confiáveis
GET e POST
Características do GET
Características do POST
HTTP e Códigos de Status
Método HTTP
Cabeçalho
Status 200, 404, 403, 401 e 301