validando a segurança de software

48
Jerônimo Zucco [email protected] Validando a Segurança de Software Terceira Jornada Acadêmica de Computação e Tecnologia da Informação da UCS:Tendências em TI

Upload: jeronimo-zucco

Post on 29-Jun-2015

130 views

Category:

Technology


1 download

DESCRIPTION

Apresentação sobre segurança em desenvolvimento de software realizada na Terceira Jornada Acadêmica de Computação e Tecnologia da Informação da UCS:Tendências em TI.

TRANSCRIPT

Page 1: Validando a Segurança de Software

Jerônimo Zucco [email protected]

Validando a Segurança! de Software

Terceira Jornada Acadêmica de Computação e Tecnologia da Informação da UCS:Tendências em TI

Page 2: Validando a Segurança de Software

About Me

• Blog: http://jczucco.blogspot.com • Twitter: @jczucco • http://www.linkedin.com/in/jeronimozucco • http://www.owasp.org/index.php/User:Jeronimo_Zucco • Algumas certificações na área de segurança

Page 3: Validando a Segurança de Software

OWASP Open Web Application

Security Project • Uma comunidade aberta dedicada

a ajudar as organizações a desenvolver, comprar e manter aplicações que possam ser confiáveis.

Page 4: Validando a Segurança de Software

OWASP

• Promover o desenvolvimento seguro • Auxiliar a tomada de decisão quanto ao

risco • Oferecer recursos gratuitos • Promover a contribuição e

compartilhamento de informação

4

Page 5: Validando a Segurança de Software

OWASP no RS

5

https://www.owasp.org/index.php/Porto_Alegre

Page 6: Validando a Segurança de Software

Quais os requerimentos mínimos para um

software ser considerado seguro?

6

Page 7: Validando a Segurança de Software

HISTÓRICO

7

Page 8: Validando a Segurança de Software

8

Page 9: Validando a Segurança de Software

9

Page 10: Validando a Segurança de Software

10

Page 11: Validando a Segurança de Software

Segurança de Software

• Anos 90: Java é seguro !

• Bíblia do C: Exemplos com bugs

11

Page 12: Validando a Segurança de Software

12

X

Page 13: Validando a Segurança de Software

Perímetro

13

Page 14: Validando a Segurança de Software

É fácil testar se um recurso de um programa funciona ou

não, mas é muito difícil afirmar se um sistema é

suficientemente seguro para resistir á um ataque malicioso

14

Page 15: Validando a Segurança de Software

Números

• 86% dos sites testados possuem ao menos uma vulnerabilidade grave

• 61% desses problemas foram corrigidos após notificação

• 193 dias em média para a correção ser realizada desde a notificação

15Fonte: Whitehat Stats Report 2013

Page 16: Validando a Segurança de Software

Números

16Fonte: Whitehat Stats Report 2013

Page 17: Validando a Segurança de Software

Vulnerabilidades

17

Fonte: Whitehat Stats Report 2013

Page 18: Validando a Segurança de Software

Vulnerabilidades por Linguagem

18Fonte: Whitehat Stats Report 2014

Page 19: Validando a Segurança de Software

19

Page 20: Validando a Segurança de Software

Segurança

20

Page 21: Validando a Segurança de Software

Defeitos de Software

BUGS x FALHAS

21

Page 22: Validando a Segurança de Software

Defeitos de um Software

• Bug: defeitos na implementação – Buffer overflow – Condições de corrida – Variáveis de ambiente inseguras – Chamadas de sistema inseguras – Entrada de dados não confiáveis

22

Page 23: Validando a Segurança de Software

Defeitos de um Software

• Falhas: defeitos no design – Não uso de criptografia – Problemas de compartimentalização – Falha na proteção de áreas privilegiadas – Falhas de segurança – Auditoria insegura – Controle de acesso quebrado

23

Page 24: Validando a Segurança de Software

6 Estágios de Debbuging

1. Isso não pode acontecer 2. Isso não acontece na minha máquina 3. Isso não deveria acontecer 4. Porque isso acontece? 5. Hum, eu vejo. 6. Como isso sempre funcionou?

24

Page 25: Validando a Segurança de Software

25

Page 26: Validando a Segurança de Software

Revisão de Código

• Análise estática: Análise de código sem execução. Pode gerar falso positivos, integrado com IDE (eclipse, (Ex: Coverity, Fortify (HP), FindBugs (Opensource)

• Análise dinâmica: Análise de programa durante sua execução

26

Page 27: Validando a Segurança de Software

Análise de Risco da Arquitetura

• Exemplos: Dados críticos sem proteção: web service sem autenticação ou controle de acesso

• Ativo, Risco, Ameaça, Contramedida, Impacto

• STRIDE (Microsoft), ASSET (Automated Security self-Evaluation Tool), OCTAVE (Operational Critical Threat, Assset and Vulnerability Evaluation), COBIT (ISACA)

27

Page 28: Validando a Segurança de Software

Pentesting

• Varreduras • Ferramentas • Spiders • Fuzzers • Ataques maliciosos • Validação de Controles • Blackbox, Whitebox

28

Page 29: Validando a Segurança de Software

Casos de Abuso

!• Testes de segurança baseado no risco • Casos de abuso: – Tampering Attack

• Requerimentos de segurança • Operações de segurança

29

Page 30: Validando a Segurança de Software

Microsoft SDL Security Development Lifecycle

30

https://www.microsoft.com/security/sdl/default.aspx

Page 31: Validando a Segurança de Software

OWASP Top Ten 2013

31

Page 32: Validando a Segurança de Software

OWASP Top 10

• Top 10 Vulnerabilidades em Apps. Web – Atualizado a cada 3 anos. – Baseado em dados obtidos de aplicações

na Internet – Aceitação crescente pela indústria

• Um bom começo para criação de práticas seguras de desenvolvimento nas organizações

32

Page 33: Validando a Segurança de Software

Top 10 2010 -> 2013

33

Page 34: Validando a Segurança de Software

IEEE Top 10 Software Security Design Flaws

• Earn or give, but never assume, trust • Use an authentication mechanism that

cannot be bypassed or tampered with • Authorize after you authenticate • Strictly separate data and control

instructions, and never process control instructions received from untrusted sources

• Define an approach that ensures all data are explicitly validated 34

Page 35: Validando a Segurança de Software

IEEE Top 10 Software Security Design Flaws

• Use cryptography correctly • Identify sensitive data and how they

should be handled • Always consider the users • Understand how integrating external

components changes your attack surface

• Be flexible when considering future changes to objects and actors

35

Page 36: Validando a Segurança de Software

OWASP ASVS Application Security Verification

Standard Project

• Authentication Verification • Session Management Verification • Access Control Verification • Malicious Input Handling Verification • Cryptography at Rest Verification • Error Handling and Logging Verification • Data Protection Verification

36

Requisitos:

Page 37: Validando a Segurança de Software

OWASP ASVS Application Security Verification

Standard Project

• Communications Security Verification • HTTP Security Verification • Malicious Controls Verification • Business Logic Verification • Files and Resources Verification • Mobile Verification Requirements

37

Requisitos:

Page 38: Validando a Segurança de Software

• Níveis ASVS:

38

OWASP ASVS Application Security Verification

Standard Project

Page 39: Validando a Segurança de Software

OWASP Testing_Guide v4

• Information Gathering • Configuration and Deployment

Management Testing • Identity Management Testing • Authentication Testing • Authorization Testing • Session Management Testing

39

Page 40: Validando a Segurança de Software

OWASP Testing_Guide v4

• Input Validation Testing • Testing for Error Handling • Testing for weak Cryptography • Business Logic Testing • Client Side Testing

40

Page 41: Validando a Segurança de Software

Desenvolvedores

• Requisitos de segurança de aplicações; • Arquitetura de aplicações seguras; • Controles de segurança padrões; • Ciclo de vida de desenvolvimento (SDL) • Educação sobre segurança de

aplicações • Uso de componentes seguros • Projetos OWASP

41

Page 42: Validando a Segurança de Software

Considerações

• Não inicie com pessoas da área de segurança de rede

• Segurança de software exige esforço multidisciplinar

• Treine sua equipe de desenvolvimento • Determine o que é suficiente • Sem medir, não sabemos onde estamos

e nem se estamos evoluindo 42

Page 43: Validando a Segurança de Software

Considerações

Saber que você possui um problema, normalmente é um bom primeiro passo.

43

Page 44: Validando a Segurança de Software

Considerações

"All software sucks. Make sure yours sucks less."

44

Page 45: Validando a Segurança de Software

Referências

• Software Security: Gary McGraw (2005) • WhiteHat Statistics Security Report (2013 e 2014) • OWASP Top Ten Project: https://www.owasp.org/

index.php/Category:OWASP_Top_Ten_Project • OWASP Application Security Verification Standard

Project: https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project

• OWASP Testing Project: https://www.owasp.org/index.php/OWASP_Testing_Project

45

Page 46: Validando a Segurança de Software

Referências

• IEEE Top 10 Software Security Design Flaws: http://cybersecurity.ieee.org/center-for-secure-design/avoiding-the-top-10-security-flaws.html

• Bill Gates 2002 memo: http://news.microsoft.com/2012/01/11/memo-from-bill-gates/

• Microsoft Security Development Lifecycle: http://www.microsoft.com/security/sdl/default.aspx

• BSIMM - Building Security in Maturity Model: http://www.bsimm.com

• Open Source Security Testing Methodology Manual (OSSTMM): http://www.isecom.org/research/osstmm.html 46

Page 47: Validando a Segurança de Software

Livros Recomendados

47

Page 48: Validando a Segurança de Software

Perguntas?

48

[email protected] !

https://www.owasp.org/index.php/Porto_Alegre