Post on 15-Apr-2017
1
Desenvolvimento Seguro
2
Conceitos importantes
O Protocolo HTTP (RFC 2616, 2617, 2660)
● TCP/IP (RFC 793/791)
● Header X Payload
● Métodos: GET, POST, HEAD, PUT, DELETE, CONNECT, TRACE,
OPTIONS
● Stateles X Stateful
● Keep-alive X Connection: Close
3
Conceitos importantes
O Protocolo HTTP: Códigos de status
● 1xx - Códigos informativos.
● 2xx - Operações realizadas com sucesso.
● 3xx - Redirecionamento.
● 4xx - Requisições errôneas por parte do cliente.
● 5xx - Respostas errôneas por parte do servidor, diante de requisições
aparentemente válidas.
4
Conceitos importantes
O Protocolo HTTP: Requisição
6
Conceitos importantes
O Protocolo HTTP
● IETF – RFCs...
● IANA – Status code
● SOAP(RFC 4227) x RESTful
● Client side X Server side
7
Conceitos importantes
Criptografia
● Simétrica
● Assimétrica
● Funções de hash
● SSL/TLS(RFC 6101/5246) -> HSTS(RFC 6797)!
● x.509 (RFC 5280)
8
Conceitos importantes
Criptografia: Handshake SSL
9
Conceitos importantes
Criptografia
● JCA/JCE/JSSE/Bouncy Castle
● OpenSSL
● GnuPG
10
Conceitos importantes
Autenticação e autorização
● ACLs
● Whitelists
● Blacklists
11
Conceitos importantes
Modelos de acesso
● RBAC
● DAC
● MAC
12
Conceitos importantes
RBAC
13
Conceitos importantes
Autenticações
● SGBD
● LDAP
● Kerberos
14
Conceitos importantes
Outras formas de autenticação e autorização
● OTP
● Duplo fator
● Biométrica
● OpenID
● Oauth
● SAML
● WS-Security
15
Conceitos importantes
Criando e aplicando patches
● Diff
● diff bug.java sem_bug.java > patch_bug.java
● Patch
● patch -p0 bug.java < patch_bug.java
16
● Blackhats X Whitehats
● Legislação (Lei 12737/2012)
● Comunidade e mercado
Segurança Ofensiva
17
XSS - Cross-Site Scripting
● Client side
● Server side
● Causa
● Consequência
18
XSS - Cross-Site Scripting
● Refletido
● Residente
● DOM Based
● XST - Cross-Site Tracing
● XSHM - Cross-Site History Manipulation
19
CSRF - Cross-Site Request Forgery
● Client side
● Server side
● Causa
● Consequência
20
CSRF - Cross-Site Request Forgery
● Comum
● JSON/JSONP Hijacking
● ClickJacking
● StrokeJacking
● SOP - Same Origin Policy (XMLHttpRequest/CORS)
21
Insecure Cookie Handling
● Client side
● Server side
● Causa
● Consequência
22
SQLi – Sql Injection
● Server side
● Causa
● Consequência
23
SQLi – Sql Injection
● Comum
● Union Inband
● Batched
● Blind
● Error Based
24
LDAP Injection
● Server side
● Causa
● Consequência
25
• XPATH Injection
• XDOS
Segurança Ofensiva
26
* INJECTION
27
Segurança Ofensiva
● Falhas de configuração
28
• RFI – Remote File Inclusion
• LFI - Local File Inclusion
Segurança Ofensiva
29
• RCE – Remote Code Execution
• RCE – Remote Command Execution
Segurança Ofensiva
30
• Unrestricted File Upload
Segurança Ofensiva
31
• Web Crawlers
Segurança Ofensiva
32
• Local File Disclosure/Download
Segurança Ofensiva
33
• Session Fixation
• Session Hijacking
Segurança Ofensiva
34
Segurança Ofensiva
• Corrupção de memória
● Integer/Stack/Heap overflow
● Format Strings
● Race Condition
● Memory Leaks
35
• HTML 5
• Brute Force
• MITM - Man In The Middle
• Shared Hosts
Segurança Ofensiva
36
Livro Covert Java(Java Secreto)
● Descompilando classes
● Ofuscação e desenfuscação
● Reflexão
● JVM Internals
● Hooks
● Código nativo
● Muito mais...
37
Segurança em Camadas
● MVC
● Segregação de função
● Privilegio mínimo sempre
● Execução mínima sempre
● Tenha em mente as perguntas corretas
● Sempre desconfie das respostas!
"No one can guarantee 100% security. But we can work toward 100% risk acceptance."
Bruce Schneier
38
• Como debugar
• Filtragem de dados
• Tokens
• Captchas
• Hardening
• Aplicações de segurança
Segurança Defensiva
39
Debugging
● O Hacker
● O desafio
● Abordagem linear X Insights exponenciais
40
Debugging
● Firebug
● Logs, profiling jmx, print/exit
● Tcpdump/wireshark/valgrind
● Gdb/strace/ltrace
● /var/log/*
41
Filtragem de dados
Sanitização de dados
● Por tipo
● Por tamanho
● Por range
● Realização de quotes escapes
42
Filtragem de dados
Sanitização de dados...
● REGEX – Expressões regulares
● XSD – XML Schema
● Regras de negocio podem ajudar
43
Filtragem de dados
● API Filter
● Trabalhando com exceptions
● extends Exception
● try/catch
● throw
44
Filtragem de dados
● Você deve se preocupar com
● Entrada de dados
● Saída de dados
45
Filtragem de dados
Trabalhando com diretórios
● Proteja-se de path traversal, RFI e LFI
● Utilize métodos para manuseio de diretórios/arquivos
● Utilize constantes que definem os diretórios absolutos da sua
aplicação
● Utilize um método que retorne o separador de diretórios do SO(/
ou \)
● Um simples switch/case pode ajudar muito
46
Filtragem de dados
Executando comandos
● Procure evitar, mas se for necessário então:
● Sanitize os dados de entrada, neste caso, regex pode ajudar muito.
● Utilize metodos para em uma string:
– Escapar qualquer tentativa de injeção de comando: “;” “&&”...
– Escapar qualquer tentativa de injeção de argumentos
47
Cuidado especial com SGBDs
● Desconfie de métodos de escape baseados em encoding padrão e que
não estão nativos no banco de dados
● Sanitize os dados
● Utilize sempre prepared statements
Filtragem de dados
48
Tokens
● Identificação de usuários e/ou recursos
● Formulários
● Downloads de arquivos
49
Captchas
● O objetivo
● Imagens
● Sons
50
Hardening
● Evitar problemas de configuração e fortificar as mesmas
● Configurações do servidor de aplicação
● Configurações SGBD
● Configurações do sistema operacional
● Configurações da infraestrutura envolvida(firewalls...)
51
Aplicações de segurança
● Firewalls
● NIDS
● HIDS
● WAF
● SIEM
● VPN
● DEBUGS TOOLS
52
Manter-se atualizado
● Checagem periódica de integridade
● Politicas e metodologias
● Manter-se atualizado
53
Checagem periódica de integridade
● Arquivos
● Repositórios com o GIT podem te ajudar
● Binários
● Integração continua com o Jenkins também ajuda
● Módulos do kernel
● Tripware/ossec/aide
● Chkrootkit/rkhunter
54
Politicas e metodologias
Segurança da informação em geral
● PCI-DSS
● ISO/IEC 2700*
● SOX
● Bacen 3380
● NIST SP 800-115
● ISSAF
55
Politicas e metodologias
Backups
● Estrategia
● Diário, Semanal, Mensal, Semestral, Anual...
● Mecanismo
● Full, diferencial, incremental
● Ferramentas FOSS
● Bacula, amanda, rsync, tar/gzip/bzip/ftp, shellscript
56
Politicas e metodologias
Senhas
● Os meios de autenticação
● Criptografia durante a autenticação e autorização
– Certificação digital
● Escolha dos algorítimos criptográficos utilizados
● Politicas de acesso
● Qualidade das senhas
● OpenLDAP/PPOLICY
57
Modelos para desenvolvimento de software seguro
SDL Microsoft
OpenSAMM
58
Manter-se atualizado
● SOC / CSIRT
● Pentests
● Softwares
● Honeypots
● Comunidades
● H2HC, OWASP, DEFCON/BLACKHAT, PHRACK
● Checklists