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
Projeto Aplicado
• Apresentação
• Problema Motivador
• Justificativa
• Objetivos
• Fundamentação Teórica
• Interdisciplinaridade
• Metodologia
• Proposta de Solução
• Conclusão
• Dúvidas
Apresentação
• Integrantes:
– André Andrade
– Diego Marlon
– Heberth Moreira
– Janaína Louback
– Thiago Sinésio
– Tiago Carmo
Problema Motivador
• Juntamente com o crescimento da internet surgiram:
– Riscos do mundo virtual;
– Invasões;
– Fraudes.
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.
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.
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.
Fundamentação Teórica
• Segurança na Web;
• Segurança da Informação;
• SQL Injection;
• Trabalhos Relacionados.
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
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.
Interdisciplinaridade
• Criptografia e Segurança de Sistemas:
– Foco do trabalho (SQL Injection);
– Criptografia de senhas na proposta de solução.
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.
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.
Metodologia
• Pesquisas:
– Periódicos científicos;
– Livros;
– Sites;
– Artigos técnicos.
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.
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
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).
Formulário de login
URL de acesso a notícia
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.
Proposta de Solução
• Teste automatizado:
Havij – Tela inicial
Proposta de Solução
• Teste automatizado:
Havij – Acessando os dados
Proposta de Solução
• Teste manual:
SQL Injection manual – Inserindo código SQL no campo de usuário para acesso privilegiado
a área restrita do sistema
Tela de administração de conteúdo do sistema, onde o hacker conseguiu acesso como
administrador.
Proposta de Solução
• Teste manual: Como funciona?
O sistema considera a consulta SQL válida, ignorando os parâmetros de usuário e senha
...e é retornado um valor do banco de dados, normalmente o primeiro que é o administrador do sistema
Observação: no ambiente de testes com a falha, o campo de senha não é criptografado.
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.
Proposta de Solução
• Teste prático
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.
Dúvidas