Programação Segura em Java Acadêmicos: André Mendes Duarte Deiwys Luciano Grumovski Gustavo Heidrich Grunwald 1-19
Roteiro ●Conceitos ●Linguagem de Programação Java ●Históricos de Aplicações Java ●Normas e técnicas de Segurança em Java ●Conclusões 2-19
Conceitos ●As primeiras versões do Java: - Intenção criar um dispositivo que pudesse ser facilmente programável. - Finalidade o entretenimento doméstico. Posteriormente: - Popularização da Internet. - O foco mudou e diferentes plataformas foram criadas. 3-19
Linguagem de Programação Java Lançado em 1995 pela Sun Microsystems. Não é apenas uma linguagem, mas sim uma plataforma de desenvolvimento. o Criado para desenvolver aplicações para diversos dispositivos diferentes. O Java é uma linguagem e plataforma de computação encontrado em: o Laptops. o Data centers. o Consoles de jogo. o Supercomputadores científicos. o Telefones celulares e até na Internet. Fonte: (JAVA, 2013) 4-19
Históricos de Aplicações Java 1991 Green Team 1991 Start WebRunner 1995 JAVA 1996 JavaOne 1996 JDK / JAVA JSP / JEE / JME 2009 Oracle compra a Sun 5-19
Normas e técnicas de Segurança em Java ITSEC: Normas para certificação de segurança. Criada em 1991 pela Alemanhã, França e Inglaterra. Versão atual: 1.2, publicada em OWASP: Criada para auxiliar o desenvolvimento de software seguro. Gratuíto. 6-19
Normas e técnicas de Segurança em Java Os 10 principais riscos de segurança, segundo o OWASP: Command Injection. Cross-site scripting. Broken authentication e session management. Insecure direct object references. Cross-site request forgery. Security Misconfiguration. Insecure Cryptographic Storage. Failure to Restrict URL Access. Insufficient Transport Layer Protection. Unvalidated Redirects and Forwards. 7-19
Command Injection Objetivo: inserção textos e explora falhas na sintaxe. Exemplo: 8-19
Command Injection 9-19
CROSS-SITE REQUEST FORGERY (CSRF) Objetivo: enviar solicitações maliciosas a outros sites. Exemplo:
CROSS SITE SCRIPTING (XSS) Objetivo: executar scripts não confiáveis no navegador. Exemplo:
BROKEN AUTHENTICATION AND SESSION MANAGEMENT Objetivo: explorar falhas no gerênciamento de sessões. Exemplos:
INSECURE DIRECT OBJECT REFERENCES Objetivo: modificar valores de objetos que nao possuem validação. Exemplo:
SECURITY MISCONFIGURATION Objetivo: explorar falhas na configuração do sistema. Exemplos:
INSECURE CRYPTOGRAPHIC STORAGE Objetivo: explorar falhas no armazenamento criptografado. Exemplo:
FAILURE TO RESTRICT URL ACCESS Objetivo: acessar URLs restritas que nao tiveram seu acesso restringido. Exemplo:
INSUFFICIENT TRANSPORT LAYER PROTECTION Objetivo: explorar falhas na camada de transporte. Exemplo:
UNVALIDATED REDIRECTS AND FORWARDS Objetivo: explorar falhas no redirecionamento de páginas. Exemplo:
Conclusões Este trabalho foi importante para o conhecimento das vulnerabilidades que podem ter em uma aplicação e como isto pode afetar os usuários. Foi possível conhecer e aperfeiçoar o desenvolvimento confiável das aplicações. Com a aplicação das recomendações propostas neste trabalho, será possível identificar e prevenir os dez ataques mais comuns em aplicações Java. Os objetivos iniciais do trabalho foram compridas. Algumas dificuldades ao longo do trabalho foram encontradas, mas a principal foi que alguns capítulos não foram entregues em tempo hábil