Análise Estática do Framework Demoiselle

836 visualizações

Publicada em

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

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
836
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Análise Estática do Framework Demoiselle

  1. 1. UCB / Universa Lato Sensu – Sistemas Orientados a Objetos Alexandre Menezes Gisele Rodrigues 12/11/09 1
  2. 2. Análise Estática do Framework Demoiselle do Governo Federal com Ênfase em Segurança de Aplicações Web 12/11/09 2
  3. 3. Agenda 1. Introdução 2. Segurança mais que necessidade 3. Segurança no desenvolvimento de software 4. Estudo de caso 5. Conclusão 12/11/09 3
  4. 4. 1. Introdução 12/11/09 4
  5. 5. Dependência de Recursos Tecnológicos 12/11/09 5
  6. 6. Segurança da Informação Assegurar e proteger ativos; Mudança de Cultura e Paradigma; Integridade + Disponibilidade + Confidencialidade. 12/11/09 6
  7. 7. 2. Segurança mais que necessidade 12/11/09 7
  8. 8. Entidades de Segurança 12/11/09 8
  9. 9. Total de Incidentes Reportados ao Cert.br (1999 - 2009) 12/11/09 9
  10. 10. Fatores de Risco nos Sistemas Atuais Conectividade; Extensibilidade; Complexidade. 12/11/09 10
  11. 11. Vulnerabilidades OWASP Top 10 - 2007 A1 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 11
  12. 12. Vulnerabilidades (Softwares) 12/11/09 12
  13. 13. 3. Segurança no Desenvolvimento de Software 12/11/09 13
  14. 14. Sistemas Seguros Secure by design; Secure by default; Secure by deployment. 12/11/09 14
  15. 15. Ferramentas 12/11/09 15
  16. 16. 4. Estudo de Caso 12/11/09 16
  17. 17. Características do Projeto Arquitetura modular; Open Source; Padronização de frameworks especialistas; Interoperabilidade e manutenibilidade. 12/11/09 17
  18. 18. Análise Estática Ferramentas de Análise Estática Ferramenta Número de Alarmes PMD 351 Checkstyle 9304 Ferramentas de Análise Estática com Ênfase em Segurança Ferramenta Número de Alarmes Findbugs 14 LAPSE 2 12/11/09 18
  19. 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 19
  20. 20. Conclusão 12/11/09 20
  21. 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 21
  22. 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 22
  23. 23. Pesquisas Futuras Realizar análise estática das APIs externas utilizadas pelo projeto; Realizar análise binária do framework. 12/11/09 23
  24. 24. Dúvidas? 12/11/09 24
  25. 25. Obrigado! 12/11/09 25
  26. 26. Retorno Inadequado public Object[] getArguments() { return this.arguments; } 12/11/09 26
  27. 27. Sugestão para Tratamento do Retorno Inadequado public Objec[] getArguments(){ Object[]copyOf = Arrays.copyOf(arguments, arguments.length); return copyOf; } 12/11/09 27
  28. 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 28
  29. 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 29
  30. 30. Tratamento Inadequado de Exceção Private Field getFieldByName( A object, String name) throws PersistenceJDBCException { ... } catch (SecurityException e) { return null; } } 12/11/09 30
  31. 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 31
  32. 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 32
  33. 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);} 12/11/09 33

×