0 Compartilhamentos 215 Views

A História do SQL Injection

No Natal desse ano, o SQL Injection vai poder entrar em um bar qualquer e pedir uma bebida.

Talvez ele tenha que mostrar os documentos, mas a grande verdade é que a vulnerabilidade preferida de 11 em 10 hackers irá completar 18 anos em 25 de Dezembro de 2016.

Inicialmente, ela nem mesmo tinha esse nome. Ela sequer tinha nome. Desde aquela época (e até hoje, vale dizer) ela foi subestimada por seus criadores e por desenvolvedores de uma forma geral. Mas ela continua fazendo vítimas, ano após ano, porque é um ataque tão fácil de fazer e automatizar que até uma criança de três anos é capaz de executar. Sem exageros.

O primeiro indício de sua existência foi publicado no e-zine Phrack #54, de 25 de Dezembro de 1998. Um bastião da cultura phreaker, fundada em 1985, a revista/manifesto/site marcou história em diversos momentos, mas naquela edição em especial ela introduziu o SQL Injection para o mundo. Coube a Jeff Forristal, na época conhecido pela alcunha Rain Forest Puppy, a dúbia honra de ser o autor do artigo, com a ajuda de um amigo não identificado.

phrack

Forristal hoje é CTO da empresa de segurança mobile Bluebox. Mas, em 1998, ele queria ver o mundo pegar fogo. Segundo ele escreveu, seu parceiro na descoberta tentou notificar a Microsoft sobre como era fácil injetar comandos em páginas web que faziam consultas a um banco de dados SQL: “ele fez a coisa certa e contou para a Microsoft, e a resposta deles foi, bem, hilária. De acordo com eles, o que vocês estão prestes a ler não é um problema”. Em seguida, Rain Forest Puppy explica em vários parágrafos como usar e abusar da ingenuidade do SQL (e da Microsoft) para obter dados que deveriam ser privados, enviar instruções e outras sabotagens em páginas e formulários sem tratamento para entrada de dados.

Estavam abertos os portões do Inferno.

data

Em 2005, um adolescente invadiu o site de uma revista de segurança da informação em Taiwan e furtou dados de seus assinantes. Usando SQL Injection.

Em 2006, hackers russos invadiram os sistemas do governo do estado norte-americano de Rhode Island e conseguiram dados de cartão de crédito de empresas que fizeram transações online com estatais. Usando SQL Injection.

Em 2007, o site britânico da Microsoft foi comprometido e descaracterizado. Usando SQL Injection.

Em 2009, 130 milhões de números de cartões de crédito foram furtados por três hackers nos Estados Unidos dos sistemas de lojas como 7-Eleven, cadeias de supermercados e financeiras de uma única vez. Usando SQL Injection.

Em 2010, o painel de controle do The Pirate Bay e dados de seus administradores e usuários foram comprometidos por um especialista de segurança. Usando SQL Injection.

Também em 2010, o site oficial da Marinha do Reino Unido foi comprometido e descaracterizado por um hacker da Romênia. Usando SQL Injection.

Em 2011, o próprio site oficial do MySQL foi invadido. Usando SQL Injection.

Em 2015, os sistemas da empresa de telecomunicações britânica TalkTalk foram invadidos e dados de 4 milhões de usuários foram furtados. Usando SQL Injection.

Como se pode ver, a tática de 1998 não apenas se tornou global como  continua ativa mesmo quase duas décadas após sua divulgação inicial. Por quê?

sql-injection

W0rm, pseudônimo do hacker responsável por um ataque ao site do The Wall Street Journal, resume muito bem: “é a forma mais fácil de hackear”. Mustafa Al-Bassam, atualmente um profissional de segurança, mas também um ex-integrante do infame coletivo hacker LulzSec, confirma a afirmação e já conseguiu “ensinar” o método para seu filho de três anos.

Embora o SQL Injection possa ser feito “no braço”, com o próprio hacker digitando os comandos e pesquisando sites vulneráveis a essa abordagem, atualmente o processo pode ser fortemente automatizado com ferramentas amplamente disponíveis para quem quiser pesquisar sobre o tema. De acordo com Al-Bassam, uma dessas ferramentas “vasculha as páginas de um site, de forma similar a um robô de mecanismo de busca, procura por entradas de dados de formulários no site, e envia os formulários com entradas que podem causar um erro de sintaxe de MySQL”. Basta digitar a URL para iniciar a busca por vulnerabilidades.

De posse desses programas, basta preparar uma lista de endereços e aguardar os resultados. É um processo tão simples para quem está começando sua “carreira” pelo hacking que o pesquisador de segurança gravou um vídeo onde mostra seu filho de três anos conseguindo explorar o universo do SQL Injection.

Outro fator para a perenidade do SQL Injection é a desinformação ou desleixo por parte dos administradores de bancos de dados. Quase tão antiga quanto a vulnerabilidade são os métodos para se evitá-la. E, ainda assim, ano após ano, os ataques continuam. Troy Hunt, fundador do haveibeenpwned.com, já viu dezenas de vazamentos de dados em sua carreira e alerta: “SQL Injection sempre é o risco número um”.

Al-Bassam sugere o uso de bibliotecas já existentes de SQL para limpar a entrada de dados. Mas, para o pesquisador, o problema pode estar na cultura das empresas: “qualquer programador sério deveria sobre SQLi, mas há uma escassez maciça de programadores, então as empresas contratam qualquer um mesmo que eles não tenham o treinamento correto ou a experiência para neutralizar vulnerabilidades básicas”. E denuncia: “eles são frequente colocados sob pressão por seus gerentes para desenvolver software funcional ao invés de software seguro”.

Embora a facilidade da aplicação do SQL Injection não possa ser revertida, aquilo que a Microsoft considerou lá atrás “não ser um problema”, as defesas dos bancos de dados podem e devem ser fortalecidas. Enquanto não houver uma mudança nesse cenário, aquela Caixa de Pandora aberta e 1998 ainda continuará entre nós por muitos e muitos anos.

Confira nossas dicas para não fazer parte dessa história:

  1. Evite SQL Injection usando Prepared Statements no PHP
  2. Proteção contra SQL Injection no ASP.NET
  3. Função para evitar o SQL Injection no ASP
  4. Proteção contra SQL Injection com PHP

Você pode se interessar

Promoções de Jogos do Final de Semana (19/07)
Notícias
21 visualizações
Notícias
21 visualizações

Promoções de Jogos do Final de Semana (19/07)

Carlos L. A. da Silva - 19 de julho de 2019

Confira as melhores ofertas de jogos de PC para o final de semana.

Como ativar o DNS-over-HTTPS (DoH) no Firefox
Dicas
13 visualizações
Dicas
13 visualizações

Como ativar o DNS-over-HTTPS (DoH) no Firefox

Carlos L. A. da Silva - 18 de julho de 2019

Protocolo aumenta a segurança da navegação de seus dados e navegador da Mozilla por enquanto é o único com suporte oficial.

Autenticação através do GitHub com JavaScript e OAuth
Códigos
17 visualizações
Códigos
17 visualizações

Autenticação através do GitHub com JavaScript e OAuth

Redação - 17 de julho de 2019

Veja como criar de forma simples um botão social de login com Github usando OAuth. Neste guia Javascript com códigos que funcionam você aprende como. Confira o passo a passo e crie o seu.

Mais publicações

SEO // Dicionário do Programador
Vídeos
16 visualizações
16 visualizações

SEO // Dicionário do Programador

Thais Cardoso de Mello - 15 de julho de 2019
Promoções de Jogos do Final de Semana (12/07)
Notícias
18 visualizações
18 visualizações

Promoções de Jogos do Final de Semana (12/07)

Carlos L. A. da Silva - 12 de julho de 2019
Conheça Astaroth: o Cavalo de Troia que se alastra no Brasil
Artigos
30 visualizações
30 visualizações

Conheça Astaroth: o Cavalo de Troia que se alastra no Brasil

Carlos L. A. da Silva - 11 de julho de 2019