Estudo visando a mitigação do ataque sql injection em aplicações web
1. Estudo visando a mitigação do ataque
SQL Injection em aplicações web
CENTRO UNIVERSITÁRIO UNA / UNATEC
CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
4º PERÍODO NOITE
2. Projeto Aplicado
• Apresentação • Metodologia
• Problema Motivador • Proposta de Solução
• Justificativa • Conclusão
• Objetivos • Dúvidas
• Fundamentação Teórica
• Interdisciplinaridade
5. Justificativa
• Os riscos relacionados à internet cresceram com o avanço da tecnologia;
• Não é possível erradicar todas as vulnerabilidades relacionadas à
Tecnologia da Informação, no entanto, é necessário torná-las
gerenciáveis visando reduzir o impacto que podem causar;
• Dentre as diversas falhas existentes, estima-se que 60% dos sistemas
que são fortemente ligados a um banco de dados são vulneráveis a
ataques de injeção de código, como por exemplo, o SQL Injection.
6. Objetivos
• Objetivo Geral:
– Desenvolver um modelo de solução que demonstre falhas de SQL
Injection, incentivando aos desenvolvedores o uso de boas práticas bem
como a propagação do conhecimento necessário para colaborar com o
aumento da segurança da informação e da segurança na internet.
7. Objetivos
• Objetivos Específicos:
– Desenvolver um artigo relacionado ao SQL Injection ;
– Criar um ambiente de testes que identifique as principais falhas de SQL
Injection em sites e sistemas para web e apresentar suas soluções;
– Aplicar os conhecimentos adquiridos durante o curso.
8. Fundamentação Teórica
• Segurança na Web;
• Segurança da Informação;
• SQL Injection;
• Trabalhos Relacionados.
9. Interdisciplinaridade
• Gerência de Projetos:
– Utilizamos o software
Artia como ferramenta
para o gerenciamento e
distribuição de atividades.
Página de atividades do Artia
10. Interdisciplinaridade
• Engenharia de Requisitos:
– A disciplina de engenharia de requisitos visa demonstrar o levantamento
dos requisitos funcionais e não funcionais de um software;
– Como nosso trabalho não tem por objetivo o desenvolvimento de um
software, levantamos como requisito apenas o objetivo geral do trabalho,
que é demonstrar as melhores práticas para a mitigação de ataques de
SQL Injection.
12. Interdisciplinaridade
• Direito e Ética na Computação:
– Questões éticas da cibercultura englobam o SQL Injection, no entanto no
Brasil, não existe leis que regulamentam os crimes eletrônicos.
13. Interdisciplinaridade
• Arquitetura de Sistemas:
– Na disciplina de arquitetura de sistemas concluímos que é muito
importante que os softwares tenham uma boa proteção contra o SQL
Injection. Devido a segurança da informação que deve ser feita, uma vez
que explorando a falha, podemos obter todas informações da base de
dados, incluindo acesso a alteração e exclusão dos dados;
– Essa proteção abrange os quatro pilares da segurança: confiabilidade,
integridade, disponibilidade e autenticidade.
15. Metodologia
• Ferramentas:
– XAMPP 1.7.3 (Apache 2.2, MySQL 5.1, PHP 5.3, PHPMyAdmin 3.2);
– Windows Seven Professional, versão 6.1 (compilação 7600);
– MySQL Workbench 5.2 CE;
– PHP, HTML, CSS e JavaScript;
– Havij 1.15 free (ITSecTeam Security Research);
– Artia.
16. Proposta de Solução
• Desenvolvemos o modelo do banco de dados necessário para a
implementação do ambiente de testes. A estrutura conta
com uma tabela de usuários e uma de notícias;
• Este ambiente tem falhas propositais para os testes.
Modelo gerado com o MySQL Workbench 5.2 CE
17. Proposta de Solução
• Os testes serão feitos de forma manual pelo método POST
(formulário de login) e automatizada pelo método GET (URL de
acesso a notícia).
URL de acesso a notícia
Formulário de login
18. Proposta de Solução
• Teste automatizado:
– Não é necessário conhecimento sobre SQL Injection;
– A ferramenta utilizada foi o software Havij 1.15 Free;
– Acesso completo e rápido à base de dados.
21. Proposta de Solução
• Teste manual:
Tela de administração de conteúdo do sistema,
onde o hacker conseguiu acesso como
administrador.
SQL Injection manual – Inserindo código SQL
no campo de usuário para acesso privilegiado
a área restrita do sistema
22. Proposta de Solução
• Teste manual: Como funciona?
O sistema considera a consulta SQL válida, ...e é retornado um valor do banco de dados, normalmente
ignorando os parâmetros de usuário e senha o primeiro que é o administrador do sistema
Observação: no ambiente de testes com a falha, o campo de senha não é criptografado.
23. Proposta de Solução
• Boas práticas de desenvolvimento sugeridas pelo The PHP Group:
– Nunca utilizar o super-usuário (root);
– Tratamento de tipos de variáveis;
– Tratamento das entradas do sistema (utilizando métodos de escape);
– Tratamento de mensagens de erro.
25. Conclusão
• A solução para o SQL Injection é muito simples, mas é necessário
que a equipe de desenvolvimento conheça bem como ele funciona e
as possibilidades que a linguagem de desenvolvimento fornece para
evitar esse tipo de ataque.