Técnicas de Segurança no Desenvolvimento de Sistemas JAVA
Olá pessoal, participei esta semana de um mini-curso sobre Técnicas de Segurança no Desenvolvimento de Sistemas JAVA. Apesar do foco principal ter sido a linguagem JAVA, sabemos que muitos dos conceitos de segurança para WEB, servem para as demais tecnologias, porquê não? Foi então que decidi abrir este espaço afim de contribuir com a comunidade. Vamos lá.
Bom, o curso começou com uma abordagem sobre a entidade O.W.A.S.P. ( Open Web Application Security Project ) como uma iniciativa aberta para tratar de aspectos de segurança em aplicações WEB. Congrega especialistas voluntários, edita documentos , promove o desenvolvimento de ferramentas como foco direcionado para esta questão, dentre outras. No site da entidade é possível acompanhar a Top Ten das dez vulnerabilidades mais comuns e mais sérias. Veja a lista aqui (em inglês).
Segue baixo minha review sobre os ítens da lista de vulnerabilidades
- Cross Site Scripting - XSS
Esta vulnerabilidade permite que o atacante insira scripts maliciosos em sua página, conteúdo hostil e até mesmo controle seu navegador.
- Falhas de Injeção
Permite que o atacante insira códigos SQL, LDAP, HTML, XSTL, XML ou comandos nativos do interpretador de comandos do servidor. O caso mais comum é a inserção de conteúdo inapropriado, roubo de dados e até exclusão dos registros.
- Execução Maliciosa de Arquivo
Como o título descreve, permite que o atacante execute conteúdos externos ao código da sua aplicação, esta é mais comum em linguagens interpretadas.
- Referência Direta ao Objeto
O atacante manipula referências e burla controles de acesso, como por exemplo, um aplicativo que utilize CPF na URL para identificar o usuário. Assim, ele acessa os dados de outros CPFs facilmente.
- Cross Site Request Forgery - XSRF
Permite login na aplicação alvo após o roubo de sessão, leva o usuário ao site do atacante e onde são rodados scripts maliciosos para controle futuro da sessão deste usuário nos demais sites.
- Vazamento de Informações e Tratamento de Erros Inapropriado
Permite que o atacante veja em sua maioria informações de erros que comprometem e expõe a versão das tecnologias utilizadas, tabelas de banco de dados e informações de servidores.
- Furo de Autenticação e Gerência de Sessão
Falha nas informações de credenciais, e falha de proteção de identidades de sessão.
- Armazenamento Criptográfico Inseguro
Acontece quando opta-se principalmente por uso e implementação de script criptográficos caseiros, o que permite a descoberta destas chaves criptográficas deixando assim o sistema pronto para o ataque.
- Comunicações Inseguras
Esta vulnerabiliade expõe o trafego de informações da aplicação, principalmente entre o navegador do cliente e o servidor, recomenda-se o uso de SSL, ou ao menos, sempre re-autenticar o usuário antes de transmitir algum dado sigiloso.
- Restrições de Acesso a URLS
Esta vulnerabilidade permite que o atacante mapeie as informações das páginas internas e force o acesso em páginas que só um usuário autenticado deveria acessar.
Após expor as principais falhas , fomos pontualmente vendo a causa e a solução dos problemas mais corriqueiros. Vimos também, várias ferramentas para realização de testes, muitos deles simulando as reais situações do uso das aplicações varreduras de código e etc. Seguirá abaixo agora uma lista das mesmas, e algumas referências sobre o assunto também obtidas no curso.
Ferramentas para teste de vulnerabilidade WEB:
FindBubs - Verifica o código estaticamente e integra com o Eclipse.
LAPSE - Só funciona no Eclipse e para sistemas WEB, faz uma verificação da validação dos campos.
Paros Proxy - Scaneia vulnerabilidades mais comuns e pode-se usar como proxy, não verifica o seu código
Referências para uma boa leitura sobre o assunto:
Site / Blog do Instrutor Lucas de Carvalho Ferreira - http://java.sapao.net/
Site O.W.A.S.P. - http://www.owasp.org/
É isso ai pessoal, espero ter ajudado ou ao menos contribuído com a comunidade.
Sem comentários »O tempo passa e a novela nos Hostings é sempre a mesma…
Meus amigos, que profissional da Web realmente preocupado com seus clientes, nos quesitos Segurança e Comprometimento, não teve ou tem problemas constantemente com a escolha dos seus servidores de hospedagem?
Infelizmente a cada dia surgem mais e mais, empresas prometendo de tudo neste ramo e nem todas são confiáveis, fuja de promoções do tipo: “Só comece a pagar depois que tudo estiver do jeito que imaginou!”, fuja de ofertas de preços irreais. Lembre-se que em primeiro lugar vem a segurança de seu projeto e de seus clientes, uma falha neste serviço reflete diretamente em sua empresa e não na reputação do servidor hospedeiro, pelo menos não como na sua imagem.
Acreditem se quiser, mas o problema já é antigo, ainda mais se você profissional optar por trabalhar com um ambiente que exija o mínimo de conhecimento do pessoal de suporte como é o caso do Java ou do famigerado ColdFusion. Mesmo tendo um grupo pequeno de empresas aparentemente sérias oferecendo tal serviço, em sua maioria os serviços são precários, o atendimento é falho, confuso, demorado e grosseiro.
Recentemente andei procurando por uma solução mais adequada à realidade do bolso de alguns clientes, de projetos pequenos, que almejam um custo menor, mas não mínimo e encontrei a empresa REGS a mais recomendada pela comunidade JAVA, segundo eles mesmos. No entanto, a empresa simplesmente copiou TODO o conteúdo referente ao JAVA da Locaweb. Mandei um e-mail falando que eu era um cliente em potencial, e etc., mas que pegou mal a questão de terem copiado tudo de outro e segue abaixo a resposta da empresa:
Rafael – REGS Hosting:
“Se pegou mal ou não isso não nos importa, não temos tempo para ficar elaborando conteudos, sendo que nosso tempo usamos para atender nossos clientes e não ficar criticando erros de código ou falhas na implantação de uma aplicação”.
O objetivo deste artigo não é nem de longe criticar a empresa, mas você contrataria este serviço? Você confiaria? O principal objetivo é apenas alertá-lo, seja um cliente, seja um desenvolvedor. Se você se preocupa com sua imagem, se você pretende ter o máximo de qualidade nos serviços que presta, não estenda a responsabilidade a qualquer empresa. Pense nos impactos positivos de um serviço bom, e nos problemas que terá se a infra-estrutura te deixar na mão.
Cuidado com as empresas que se ergueram às custas da comunidade de desenvolvedores, que não permitem barganhas justas e nem parcerias. Tome cuidado com as migrações muito demoradas ou quase que por completas de todos os serviços, isto geralmente indica a venda do servidor hospedeiro e quem lhe atendia lá, não estará mais. Se você é desenvolvedor, redobre os cuidados quanto a isto, pois, possivelmente a indicação foi feita por você aos seus clientes.
Resolvi colocar abaixo uma lista das principais características mais encontradas em servidores que aparentemente irão deixar você na mão:
• Preços muito abaixo do cobrado pelas demais empresas
• Informações confusas sobre planos e serviços
• Página mal feita, falta de cuidado com a imagem da empresa
• Conteúdo copiado ou mal elaborado
• Demora excessivas nas respostas as suas solicitações
• Falta de clareza nas informações prestadas
• Impossibilidade de testes no produto a ser contratado
• Atendimento e suporte muito burocráticos
• Falta de paciência nas respostas aos seus questionamentos