Desenvolvimento seguro

Post on 15-Apr-2017

30 views 0 download

Transcript of Desenvolvimento seguro

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