O que é um ataque de injeção SQL?
Você pode não saber o que é um ataque de injeção SQL (SQLI) ou como ele funciona, mas com certeza conhece as vítimas. Target, Yahoo, Zappos, Equifax, Epic Games, TalkTalk, LinkedIn e Sony Pictures—essas empresas foram todas hackeadas por cibercriminosos usando injeções SQL.
Um SQLI é um tipo de ataque em que cibercriminosos exploram vulnerabilidades de software em aplicações web com o objetivo de roubar, deletar ou modificar dados, ou ganhar controle administrativo sobre os sistemas que executam as aplicações afetadas.
Pesquisadores de cibersegurança consideram a SQLI como uma das ciberameaças menos sofisticadas e mais fáceis de defender. O Malwarebytes Labs classificou a SQLI como número três no ranking As 5 Ciberameças Mais Idiotas que Ainda Funcionam, citando o fato de que a SQLI é um ataque conhecido e previsível com contramedidas fáceis de implementar.
Os ataques SQLI são tão fáceis que, de fato, atacantes podem encontrar sites vulneráveis usando buscas avançadas no Google, chamadas de Google Dorking. Uma vez que encontram um alvo adequado, os atacantes de SQLI podem usar programas automáticos para efetivamente realizar o ataque por eles. Tudo o que precisam fazer é inserir o URL do site alvo e observar os dados roubados chegando.
E ainda assim, os ataques SQLI são comuns e acontecem todos os dias. Na verdade, se você tem um site ou negócio online, cibercriminosos provavelmente já tentaram usar SQLI para invadir seu site. Um estudo do Instituto Ponemon sobre A Ameaça de Injeção SQL & Recentes Violação de Varejo descobriu que 65% das empresas pesquisadas foram vítimas de um ataque baseado em SQLI.
Aplicações web frequentemente alvo incluem: sites de redes sociais, varejistas online e universidades. Empresas de pequeno a médio porte são especialmente vulneráveis, pois frequentemente não estão familiarizadas com as técnicas que os cibercriminosos usam em um ataque SQLI e, da mesma forma, não sabem como se defender contra tal ataque.
Com isso, vamos dar o primeiro passo na defesa contra uma injeção SQL educando-nos sobre o assunto. Aqui está sua introdução às injeções SQL.
Como funciona uma injeção SQL?
Desenvolvido no início dos anos 70, SQL (abreviação de structured query language) é uma das linguagens de programação mais antigas ainda em uso hoje para gerenciar bancos de dados online. Esses bancos de dados contêm coisas como preços e níveis de estoque para sites de compras online. Quando um usuário precisa acessar informações do banco de dados, SQL é usado para acessar e apresentar esses dados ao usuário. Mas esses bancos de dados também podem conter dados mais sensíveis e valiosos, como nomes de usuários e senhas, informações de cartões de crédito e números de seguridade social. É aí que as injeções SQL entram em ação.
Simplificando, uma injeção SQL é quando hackers criminosos inserem comandos maliciosos em formulários web, como o campo de busca, campo de login ou URL de um site inseguro para obter acesso não autorizado a dados sensíveis e valiosos.
Aqui está um exemplo. Imagine ir ao seu site de roupas online favorito. Você está comprando meias e olhando para um mundo Tecnicolor de meias coloridas, todas disponíveis com um clique do mouse. As maravilhas da tecnologia! Cada meia que você vê existe em um banco de dados em algum servidor. Quando você encontra uma meia que gosta e clica nessa meia, está enviando uma solicitação ao banco de dados de meias, e o site de compras responde com a informação sobre a meia que você clicou. Agora imagine que seu site de compras online favorito é construído de forma descuidada, cheio de vulnerabilidades SQL exploráveis.
Um cibercriminoso pode manipular consultas ao banco de dados de tal forma que uma solicitação de informação sobre um par de meias retorna o número do cartão de crédito de algum cliente infeliz. Repetindo esse processo várias vezes, um cibercriminoso pode explorar o banco de dados e roubar informações sensíveis sobre todos os clientes que já compraram em seu site de roupas online favorito — incluindo você. Levando o experimento mental ainda mais longe, imagine que você é o dono desse site de roupas. Você tem um enorme vazamento de dados em mãos.
Um único ataque de SQLI pode render aos cibercriminosos informações pessoais, e-mails, logins, números de cartões de crédito e números de seguridade social de milhões de consumidores. Os cibercriminosos podem, então, vender essas informações pessoais nos cantos mais obscuros da dark web, para serem usadas para todos os tipos de propósitos ilegais.
E-mails roubados podem ser usados para ataques de phishing e malspam. Ataques de malspam, por sua vez, podem ser usados para infectar vítimas com todos os tipos de malware destrutivo, como ransomware, adware, cryptojackers e Trojans (ex: Emotet), para citar alguns. Números de telefone roubados de dispositivos móveis Android e iOS podem ser alvos de robocalls e spam de mensagens de texto.
Logins roubados de sites de redes sociais podem ser usados para enviar spam de mensagens e roubar ainda mais logins de outros sites. O Malwarebytes Labs já relatou contas hackeadas do LinkedIn sendo usadas para enviar spams a outros usuários com mensagens InMail contendo URLs ruins, disfarçadas ou falsificadas para parecer uma página de login do Google Docs, através das quais os cibercriminosos podem coletar nomes de usuário e senhas do Google.
Qual é a história das injeções SQL?
A exploração de injeção SQL foi documentada pela primeira vez em 1998 pelo pesquisador de segurança e hacker Jeff Forristal. Suas descobertas foram publicadas na antiga revista hacker Phrack. Escrevendo sob o pseudônimo Rain Forest Puppy, Forristal explicou como alguém com habilidades básicas de codificação poderia adicionar comandos SQL não autorizados aos comandos SQL legítimos e extrair informações sensíveis do banco de dados de um site não seguro.
Quando Forristal notificou a Microsoft sobre como a vulnerabilidade afetava seu popular produto SQL Server, eles não viram isso como um problema. Como Forristal colocou, “De acordo com eles [Microsoft], o que você está prestes a ler não é um problema, então não se preocupe em fazer algo para impedir isso.”
O que torna a resposta desleixada da Microsoft tão chocante é o fato de muitas indústrias e instituições dependerem seriamente (na época e agora) da tecnologia de gestão de bases de dados da empresa para manter suas operações funcionando, incluindo varejo, educação, saúde, bancos e recursos humanos. Isso nos leva ao próximo evento na linha do tempo da história do SQLI—o primeiro grande ataque de SQLI.
Em 2007, a maior rede de lojas de conveniência dos Estados Unidos, 7-Eleven, foi vítima de um ataque SQLI. Os hackers russos usaram injeções SQL para hackear o site da 7-Eleven e usá-lo como trampolim para acessar o banco de dados de cartões de débito dos clientes da loja de conveniência. Isso permitiu que os hackers retirassem dinheiro em casa, na Rússia. Ao todo, os culpados levaram dois milhões de dólares, conforme relatou a revista Wired.
Nem todos os ataques SQLI são motivados por ganância. Em outro exemplo notável de 2007, cibercriminosos usaram SQLI para ganhar controle administrativo sobre dois sites relacionados ao Exército dos EUA e redirecionar os visitantes para sites com propaganda antiamericana e anti-israelense.
A violação de dados do MySpace em 2008 figura como um dos maiores ataques a um site de consumidor. Cibercriminosos roubaram e-mails, nomes e senhas parciais de quase 360 milhões de contas. E é por isso que não reutilizamos senhas de um site para outro.
O título de maior falta de segurança vai para a Equifax. A violação de dados da Equifax em 2017 revelou informações extremamente pessoais (ou seja, nomes, números de seguridade social, datas de nascimento e endereços) de 143 milhões de consumidores. Para uma organização que atua como guardiã das informações de todos os americanos, exceto daqueles que vivem fora da rede, você pensaria que eles tomariam precauções contra um ataque básico de SQLI. Antes que a violação dos dados ocorresse, uma empresa de pesquisa em cibersegurança até alertou a Equifax de que eles eram suscetíveis a um ataque de SQLI, mas o bureau de crédito não tomou nenhuma ação até que fosse tarde demais.
Em um caso que se classifica como o hack mais assustador da história, um ataque de SQLI em 2015 ao fabricante de brinquedos Vtech levou a uma violação de quase cinco milhões de pais e 200.000 crianças. Falando com a Motherboard, a publicação multimídia online, o hacker responsável afirmou que não tinha planos para os dados e não publicou os dados em nenhum lugar online. Por outro lado, o hacker também explicou que os dados eram muito fáceis de roubar e alguém mais poderia tê-los obtido primeiro. Um conforto frio, de fato.
Avançando para os dias de hoje, o ataque SQLI ainda é uma realidade. A cada três anos, o Open Web Application Security Project (OWASP) classifica os 10 Principais Riscos Mais Críticos de Segurança de Aplicações Web. Na edição mais recente de 2017, o ataque SQLI ficou em primeiro lugar.
Além da longevidade do ataque SQLI, o que é interessante é que os ataques SQLI não mudaram ou evoluíram de nenhuma maneira. Os ataques SQLI funcionam e continuarão a funcionar até que as pessoas mudem suas atitudes sobre cibersegurança. Seja essa mudança.
Notícias sobre injeções SQL
- O que é um honeypot? Como são usados na cibersegurança
- Entrevista com um caçador de recompensas por bugs: Youssef Sammouda
- Um guia de zero-day para 2020: Ataques recentes e técnicas preventivas avançadas.
- Vulnerabilidades em aplicativos financeiros móveis colocam consumidores e empresas em risco
- Como proteger seu sistema de gerenciamento de conteúdo
- Explicado: Injeção SQL
- OWASP top ten – Segurança chata que compensa
- As 5 ameaças cibernéticas mais idiotas que ainda funcionam
Como as Injeções SQL afetam meu negócio?
Conforme relatado em nosso Relatório de Táticas e Técnicas de Cibercrime, os ataques cibernéticos (de todos os tipos) contra empresas aumentaram 55% na segunda metade de 2018, enquanto os ataques aos consumidores individuais subiram apenas 4%. As estatísticas não são surpreendentes. Empresas com segurança ruim apresentam aos criminosos um alvo fácil, contendo um tesouro de dados valiosos que valem milhões.
Por outro lado, uma empresa no centro de uma violação de dados pode esperar pagar milhões. Um estudo da IBM descobriu que o custo médio de uma violação de dados, incluindo remediação e penalidades, é de $3,86 milhões. A violação de dados do LinkedIn mencionada anteriormente acabou custando à rede de negócios $1,25 milhão em um acordo fora do tribunal.
Após sua violação de dados, a Target foi forçada a pagar o maior valor registrado—$18,5 milhões—para resolver investigações iniciadas por múltiplos estados. Isso foi além dos $10 milhões que a Target pagou para resolver uma ação coletiva ajuizada por consumidores.
Considerando, esses são enormes violações de dados afetando milhões de consumidores. No entanto, empresas de pequeno a médio porte ainda podem esperar pagar $148 para cada registro de consumidor roubado.
Moral da história? Leve sua segurança a sério e evite ser um "Alvo" para cibercriminosos.
Como posso me proteger contra injeções SQL?
Toda essa preocupação de lado, você está aqui porque sabe que as injeções SQL são uma ameaça séria. Agora, vamos fazer algo a respeito. Aqui estão algumas dicas para proteger seu negócio contra ataques de injeção SQL.
Atualize seu software de gerenciamento de banco de dados. Seu software é falho conforme vem do fabricante. Isso é um fato. Não existe software livre de bugs. Cibercriminosos podem tirar proveito dessas vulnerabilidades de software, ou exploits, com um SQLI. Você pode se proteger apenas corrigindo e atualizando seu software de gerenciamento de banco de dados.
Aplique o princípio do menor privilégio (PoLP). PoLP significa que cada conta tem apenas acesso suficiente para realizar seu trabalho e nada mais. Por exemplo, uma conta na web que precisa apenas de acesso de leitura a um determinado banco de dados não deve ter a capacidade de escrever, editar ou alterar dados de qualquer forma.
Use instruções preparadas ou procedimentos armazenados. Em oposição ao SQL dinâmico, as instruções preparadas limitam as variáveis nos comandos SQL entrantes. Desta forma, cibercriminosos não podem adicionar injeções SQL maliciosas em comandos SQL legítimos. Os procedimentos armazenados limitam de forma semelhante o que os cibercriminosos podem fazer, armazenando instruções SQL no banco de dados, que são executadas a partir da aplicação web pelo usuário.
Contrate desenvolvedores competentes e experientes. Ataques SQLI frequentemente resultam de uma codificação descuidada. Deixe seus desenvolvedores de software saberem antecipadamente o que você espera no que diz respeito à segurança.
E se minhas informações pessoais foram roubadas em uma violação de dados? Você deve dar uma olhada em nosso checklist de violação de dados. Lá você aprenderá tudo sobre como limpar e permanecer seguro após uma violação de dados SQLI que o afete.
Visite a OWASP. O Open Web Application Security Project, conhecido como OWASP, é a autoridade líder em aplicações web e eles têm muitas leituras adicionais sobre como prevenir injeções SQL.
E se você não se cansa de injeção SQL na sua vida, visite o blog do Malwarebytes Labs para saber as últimas novidades no mundo das ciberameaças e cibersegurança.