análise estática do framework demoiselle

Post on 06-Jun-2015

693 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

12/11/09 1

UCB / UniversaLato Sensu – Sistemas Orientados a Objetos

Alexandre MenezesGisele Rodrigues

12/11/09 2

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

Aplicações Web

12/11/09 3

Agenda

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

12/11/09 4

1. Introdução

12/11/09 5

Dependência de Recursos Tecnológicos

12/11/09 6

Segurança da Informação

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

12/11/09 7

2. Segurança mais que necessidade

12/11/09 8

Entidades de Segurança

12/11/09 9

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

12/11/09 10

Fatores de Risco nos Sistemas Atuais

Conectividade;Extensibilidade;Complexidade.

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

12/11/09 12

Vulnerabilidades (Softwares)

12/11/09 13

3. Segurança no Desenvolvimento de Software

12/11/09 14

Sistemas Seguros

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

12/11/09 15

Ferramentas

12/11/09 16

4. Estudo de Caso

12/11/09 17

Características do Projeto

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

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

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.

12/11/09 20

Conclusão

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.

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.

12/11/09 23

Pesquisas Futuras

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

12/11/09 24

Dúvidas?

12/11/09 25

Obrigado!

12/11/09 26

Retorno Inadequado

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

}

12/11/09 27

Sugestão para Tratamento do Retorno Inadequado

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

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); ...}

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); ...}

12/11/09 30

Tratamento Inadequado de Exceção

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

}

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;}

}

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);}

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);}

top related