análise estática do framework demoiselle

33
12/11/09 1 UCB / Universa Lato Sensu – Sistemas Orientados a Objetos Alexandre Menezes Gisele Rodrigues

Upload: alemenezes

Post on 06-Jun-2015

693 views

Category:

Technology


1 download

DESCRIPTION

Análise Estática do Framework Demoiselle do Governo Federal com Ênfase em Segurança de Aplicações Web

TRANSCRIPT

Page 1: Análise Estática do Framework Demoiselle

12/11/09 1

UCB / UniversaLato Sensu – Sistemas Orientados a Objetos

Alexandre MenezesGisele Rodrigues

Page 2: Análise Estática do Framework Demoiselle

12/11/09 2

Análise Estática do Framework Demoiselle do Governo Federal com Ênfase em Segurança de

Aplicações Web

Page 3: Análise Estática do Framework Demoiselle

12/11/09 3

Agenda

1. Introdução2. Segurança mais que necessidade3. Segurança no desenvolvimento de software4. Estudo de caso5. Conclusão

Page 4: Análise Estática do Framework Demoiselle

12/11/09 4

1. Introdução

Page 5: Análise Estática do Framework Demoiselle

12/11/09 5

Dependência de Recursos Tecnológicos

Page 6: Análise Estática do Framework Demoiselle

12/11/09 6

Segurança da Informação

Assegurar e proteger ativos;Mudança de Cultura e Paradigma;Integridade + Disponibilidade + Confidencialidade.

Page 7: Análise Estática do Framework Demoiselle

12/11/09 7

2. Segurança mais que necessidade

Page 8: Análise Estática do Framework Demoiselle

12/11/09 8

Entidades de Segurança

Page 9: Análise Estática do Framework Demoiselle

12/11/09 9

Total de Incidentes Reportados ao Cert.br (1999 - 2009)

Page 10: Análise Estática do Framework Demoiselle

12/11/09 10

Fatores de Risco nos Sistemas Atuais

Conectividade;Extensibilidade;Complexidade.

Page 11: Análise Estática do Framework Demoiselle

12/11/09 11

Vulnerabilidades

OWASP Top 10 - 2007A1 XSS

A2 Injection Flaws

A3 Malicious File Execution

A4 Insecure Direct Object

A5 CSRF

A6 Information Leakage and Improper Error Handling

A7 Broken Authentication and Session Management

A8 Insecure Cryptographic

A9 Insecure Communications

A10 Failure to Restrict URL Access

Page 12: Análise Estática do Framework Demoiselle

12/11/09 12

Vulnerabilidades (Softwares)

Page 13: Análise Estática do Framework Demoiselle

12/11/09 13

3. Segurança no Desenvolvimento de Software

Page 14: Análise Estática do Framework Demoiselle

12/11/09 14

Sistemas Seguros

Secure by design;Secure by default;Secure by deployment.

Page 15: Análise Estática do Framework Demoiselle

12/11/09 15

Ferramentas

Page 16: Análise Estática do Framework Demoiselle

12/11/09 16

4. Estudo de Caso

Page 17: Análise Estática do Framework Demoiselle

12/11/09 17

Características do Projeto

Arquitetura modular;Open Source;Padronização de frameworks especialistas;Interoperabilidade e manutenibilidade.

Page 18: Análise Estática do Framework Demoiselle

12/11/09 18

Análise Estática

Ferramentas de Análise EstáticaFerramenta Número de Alarmes

PMD 351Checkstyle 9304

Ferramentas de Análise Estática com Ênfase em Segurança

Ferramenta Número de AlarmesFindbugs 14LAPSE 2

Page 19: Análise Estática do Framework Demoiselle

12/11/09 19

Resultados Constatados

Retorno inadequado;Validação imprópria;Utilização de Statement;Tratamento inadequado de exceção;Utilização inadequada de cookie.

Page 20: Análise Estática do Framework Demoiselle

12/11/09 20

Conclusão

Page 21: Análise Estática do Framework Demoiselle

12/11/09 21

Conclusões

Análise humana é mais eficiente;Ferramentas de análise estática colaboram para identificação de bugs, mas não devem ser a última palavra;Bugs de alto impacto.

Page 22: Análise Estática do Framework Demoiselle

12/11/09 22

Recomendações para Utilização do Projeto Demoiselle

Substituição dos módulos de persistência até que seja sanado os problemas de SQL Injection;Utilizar cookies não persistente por padrão (Secure by default);Rever questões arquiteturais com foco em segurança;Notificar a comunidade os riscos de utilização da implementação padrão;Disponibilizar patches ou fixes para os problemas.

Page 23: Análise Estática do Framework Demoiselle

12/11/09 23

Pesquisas Futuras

Realizar análise estática das APIs externas utilizadas pelo projeto;Realizar análise binária do framework.

Page 24: Análise Estática do Framework Demoiselle

12/11/09 24

Dúvidas?

Page 25: Análise Estática do Framework Demoiselle

12/11/09 25

Obrigado!

Page 26: Análise Estática do Framework Demoiselle

12/11/09 26

Retorno Inadequado

public Object[] getArguments() {return this.arguments;

}

Page 27: Análise Estática do Framework Demoiselle

12/11/09 27

Sugestão para Tratamento do Retorno Inadequado

public Objec[] getArguments(){ Object[]copyOf = Arrays.copyOf(arguments, arguments.length); return copyOf;}

Page 28: Análise Estática do Framework Demoiselle

12/11/09 28

Validação Imprópria

public final int execute(String sql) throws PersistenceJDBCException {

if (sql == null) throw new PersistenceJDBCException("SQL is null");

... Statement st = JDBCUtil.getInstance().getConnection(). createStatement(); result = st.executeUpdate(sql); ...}

Page 29: Análise Estática do Framework Demoiselle

12/11/09 29

Sugestão para Validação Imprópria

public final int execute(String sql) throws PersistenceJDBCException { String trustedQuery = ESAPI.encoder().encodeForSQL( new OracleCodec(), sql); ... PreparedStatement pst = JDBCUtil.getInstance().getConnection(). createStatementPreparedStatement(); result = pst.executeUpdate(sql); ...}

Page 30: Análise Estática do Framework Demoiselle

12/11/09 30

Tratamento Inadequado de Exceção

Private Field getFieldByName( A object, String name) throws PersistenceJDBCException { ...} catch (SecurityException e) { return null;}

}

Page 31: Análise Estática do Framework Demoiselle

12/11/09 31

Sugestão para Tratamento Inadequado de Exceção

Private Field getFieldByName( A object, String name) throws PersistenceJDBCException { ...} catch (SecurityException e) { return SomeException;}

}

Page 32: Análise Estática do Framework Demoiselle

12/11/09 32

Utilização Inadequada de Cookie

public static final void saveCookie(HttpServletResponse response, String cookieName, String cookieValue, String path) { int maxAge = (10000 + 3600) * 24 * 30; saveCookie(response, cookieName, cookieValue, path, maxAge);}

Page 33: Análise Estática do Framework Demoiselle

12/11/09 33

Sugestão para Utilização Inadequada de Cookie

public static final void saveCookie(HttpServletResponse response, String cookieName, String cookieValue, String path) { saveCookie(response, cookieName, cookieValue, path);}