59331217945
Signal-What-is-SQL-injection-Hero

Escrito por Domenic Molinaro
Publicado em June 4, 2021
Este artigo contém
Este artigo contém

    O que é injeção de SQL exatamente?

    A injeção de SQL é um ataque cibernético que engana um banco de dados para permitir o acesso de hackers. Uma injeção de SQL força que um banco de dados desprotegido execute comandos inseguros ao inserir código maligno no SQL do banco de dados, a linguagem mais usada para gerenciamento de banco de dados.

    Embora a injeção de SQL (SQLi) exista há décadas, ela é uma ameaça persistente e representa dois terços de todos os ataques de aplicativo Web atuais. A OWASP, uma empresa sem fins lucrativos líder em conscientização da segurança na web, coloca as injeções no topo da lista de riscos à segurança de aplicativos da Web.

    A vulnerabilidade da injeção de SQL é muitas vezes o resultado de uma API com problemas (interface de programação de aplicativos). Os desenvolvedores de aplicativos da Web às vezes têm dificuldade em perceber os erros que cometem até que sejam descobertos. Por isso, novos produtos são presas fáceis de ataques de dia zero da injeção de SQL.

    E quando não estão usando seus dados, cibercriminosos habilidosos muitas vezes vendem seus dados a data brokers. Os hacks de SQL podem ser lucrativos, relativamente fáceis de serem executados com as habilidades e a experiência certas e são a principal fonte de renda para muitos grupos de hackers.

    O que é SQL?

    SQL ou “Structured Query Language” (linguagem de consulta estruturada) é a linguagem de programação usada em gerenciamento de banco de dados. O SQL é a linguagem mais comumente usada para acessar dados de comunicação e fazer consultas de solicitações de informações a bancos de dados.

    Pense em um banco de dados como o armazém de um aplicativo da Web. Um banco de dados é cheio de tabelas, que são como caixas que contêm os dados, como informações do cliente, itens para venda ou credenciais de login. Ao inserir informações em um aplicativo da Web, o SQL permite que o banco de dados processe a solicitação e retorne as informações solicitadas.

    A sintaxe intuitiva baseada na língua inglesa do SQL fez com que ele se tornasse a linguagem de gerenciamento de banco de dados preferida de muitos programadores de API. Se um banco de dados é o armazém de um aplicativo da Web, uma API é como uma loja sofisticada. É com ela que você realmente interage ao navegar em um site e ao enviar solicitações por meio de uma entrada ou campo de formulário (como pesquisar um item).

    O SQL fica logo atrás da vitrine, recebendo as solicitações e traduzindo-as em código para o banco de dados. Infelizmente, a capacidade do SQL de interpretar a entrada do usuário também o torna um alvo fácil para hackers.

    Você pode pronunciar SQL como “sequel” ou “S-Q-L”. Confira o curso intensivo sobre outros termos de segurança cibernética se precisar de ajuda.

    Como um ataque de injeção de SQL é executado?

    Hackers executam um ataque de injeção de SQL por um campo de entrada, como portal de login, campo de formulário ou barra de pesquisa, em uma API da Web. Ao alterar os dados de entrada com um trecho de código malicioso conhecido como exploit, um cibercriminoso pode enganar um banco de dados não seguro para que ele interprete os dados como um comando.

    Os hackers executam ataques de injeção de SQL por meio de campos de entrada de sites que se comunicam diretamente com APIs.Sites com campos de entrada não seguros podem ser vulneráveis a ataques de SQLi.

    Injeções de SQL repetidas fazem com que os hackers tenham uma boa ideia do grau de vulnerabilidade de um software. Veja um exemplo da execução de um ataque de injeção de SQL:

    1. Você está tentando acessar os dados de usuário em um site, então insere seu nome de usuário: AVGRocks17.

    2. O SQL traduz essa entrada para o banco de dados. Isto é, o SQL transforma sua entrada em algo assim: “Localize AVGRocks17 e retorne os dados dele para mim.” Você precisa apenas digitar “AVGRocks17”, mas o SQL traduz a solicitação em código que informa o que o banco de dados deve fazer. Algo parecido com isto:

    SELECT * FROM users WHERE userID = AVGRocks17;

    O asterisco acima significa “todos os detalhes”, o que pode incluir seu nome real e senha.

    Em vez de filtrar para um usuário específico, uma injeção de SQL de OR 1=1, por exemplo, em uma barra de pesquisa, portal de login ou outro campo de entrada pode forçar o SQL a consultar o banco de dados para todos os detalhes de CADA usuário. Como? O banco de dados recebe:

    SELECT * FROM users WHERE userID = AVGRocks17 OR 1=1;

    O banco de dados interpreta isso como um comando para examinar os dados de cada usuário e retornar todos eles se o ID corresponder a AVGRocks17 ou se 1 for igual a 1. Isso, claro, sempre acontece.

    As injeções de SQL podem alterar, inserir e excluir elementos de um banco de dados ou preparar o terreno para um ataque de negação de serviço. Os hackers também podem instalar backdoors para ter acesso ao servidor indefinidamente.

    Comandos de injeção de SQL comuns permitem que hackers adulterem, roubem ou destruam dados, falsifiquem ou roubem identidades; ou alterem as permissões do banco de dados. Em casos extremos, uma injeção de SQL pode dar controle completo de um banco de dados ao invasor.

    Como os ataques de injeção de SQL funcionam com tanta facilidade? Na verdade, isso não deveria acontecer. As vulnerabilidades de injeção de SQL são frequentemente o resultado de um código ruim de um desenvolvedor da web. As empresas costumam contratar desenvolvedores com pouca experiência ou know-how, e programar a segurança adequada também é mais demorado. Prazos apertados podem levar muitas empresas a diminuir a prioridade da segurança.

    Mas nem tudo é culpa dos humanos. Como a lógica é muito simples, os ataques de SQLi são facilmente automatizados. Mesmo os melhores programadores não são páreo para bots.

    Exemplos de injeção de SQL reais

    Em 2008, o processador de pagamento Heartland Payment Systems foi hackeado por uma injeção de SQL e teve um prejuízo de mais de $ 130 milhões. Os invasores roubaram incríveis 130 milhões de números de cartão de crédito em uma das maiores violações de dados de cartão de crédito da história.

    Em 2014, uma gangue de hackers coletou mais de 1,2 bilhão de combinações únicas de IDs e senhas de mais de 420.000 sites de toda a Internet. O grupo de hackers russos usou injeções de SQL para instruir os bancos de dados a revelar e descarregar o conteúdo.

    A gigante britânica das telecomunicações TalkTalk foi atacada em 2015 por uma segurança web fraca que comprometeu centenas de milhares de informações pessoais de clientes. Embora os riscos de segurança do SQL fossem bem conhecidos na época, a empresa estava impotente contra o ataque.

    Como exemplo de injeção de SQL que diz respeito ao jogador do dia a dia, a Epic Games teve seus fóruns hackeados em 2016 e 800.000 contas de usuário vazaram. As injeções de SQL tinham como alvo o popular software de quadro de mensagem de online vBulletin, que se tornou famoso por sua vulnerabilidade a exploits SQL. Em geral, os ataques de injeção de SQL estão se espalhando pela indústria de jogos como um incêndio descontrolado.

    Ninguém está a salvo de ataques SQLi, seja uma grande empresa, o proprietário de um site ou o usuário médio da internet. A conveniência do SQL praticamente garante que o SQLi continue a ser um vetor de ataque generalizado.

    A melhor maneira de manter seus dados protegidos é usar um software de segurança em tempo real que combate ataques de phishing e invasões de rede. O AVG AntiVirus FREE protege contra vulnerabilidades de segurança, phishing e vazamentos de senha, além de uma grande variedade de malware.

    Tipos de injeção de SQL

    Os três tipos principais de injeção de SQL são SQLi dentro da banda, SQLi fora da banda e SQLi inferencial. Uma injeção de SQL é classificada em diferentes categorias, dependendo da frequência, método de ataque é usado e o dano potencial infligido.

    O que é uma injeção de SQL dentro da banda?

    SQLi dentro da banda é o tipo mais básico de injeção de SQL. Em ataques de SQL dentro da banda, os hackers podem lançar um ataque e recuperar os resultados no mesmo servidor. A injeção de SQL dentro da banda é comumente usada porque é simples de executar.

    O que é uma injeção de SQL fora da banda?

    Ataques de SQLi fora da banda tentam extrair o conteúdo de um banco de dados para um servidor diferente e exigem que o banco de dados possa fazer solicitações DNS ou HTTP. SQLis fora de banda são menos comuns, mas também mais graves.

    O que é uma injeção de SQL (cega) inferencial?

    Uma injeção SQL inferencial (cega) apresenta declarações verdadeiras ou falsas a um banco de dados para tentar inferir sua estrutura. Ao examinar as respostas recebidas, um hacker pode começar a identificar as vulnerabilidades potenciais de um banco de dados.

    Como identificar vulnerabilidades de injeção de SQL

    A melhor maneira de identificar vulnerabilidades de injeção de SQL no seu banco de dados é testá-las. Veja algumas das ferramentas de teste de injeção de SQL mais usadas.

    • O sqlmap é um “testador de infiltração” de código aberto que pode escanear um sistema em busca de vulnerabilidades de segurança. O sqlmap pode despejar o conteúdo de um banco de dados inteiro, mas isso significa que os hackers também podem usá-lo.

    • O suIP.biz é um escaneador online alimentado pelo sqlmap e pode testar injeção de SQL em sistemas de gerenciamento de bancos de dados populares, como MySQL, Oracle ou Microsoft SQL Server.

    • O Hacker Target escaneia se há vulnerabilidades focadas em injeções cegas e baseadas em erro contra solicitações GET de HTTP (um certo tipo de URL). Ele é também alimentado pelo sqlmap.

    • O Vega escaneia se há injeções de SQL e um tipo similar de ataque chamado de injeções Cross-Site Scripting (XSS). Com código aberto e fácil de usar, o Vega é executado em Linux, macOS e Windows.

    Como impedir ataques de injeção de SQL

    Os desenvolvedores da Web podem evitar ataques de injeção de SQL com boas práticas de codificação. Mas também há muito que você pode fazer para proteger seus dados confidenciais contra ataques de SQLi.

    • Verifique se um site é seguro antes de inserir seus dados e monitore as notícias de segurança de tecnologia para que possa alterar sua senha caso algum site que você use seja violado. O AVG BreachGuard podem impedir que seus dados vazem em uma violação.

    • Pratique hábitos de senha forte, como usar senhas exclusivas com pelo menos 12 caracteres, e armazene-as com segurança com um bom gerenciador de senhas.

    • Verifique se alguma de suas contas vazou como resultado de um ataque SQLi ou outra violação com o Avast Hack Check. Se houve um comprometimento, altere sua senha imediatamente.

    Desenvolvedores da Web e proprietários de negócios podem proteger seus bancos de dados contra ataques de SQLi com as dicas abaixo.

    Consultas parametrizadas e higienização de entradas

    A prevenção de ataques SQLi começa com a higienização de entradas, a “limpeza” do código do aplicativo com a configuração de parâmetros para distinguir entre dados de entrada (informações legítimas) e comandos (informações do hacker). A limpeza adequada de entrada é um problema tão difundido que um webcomic xkcd sobre injeção de SQL drop-table se tornou viral.

    Firewall de aplicativo Web (WAF)

    Um firewall de aplicativo da web (WAF) é uma barreira que filtra o software malicioso e o tráfego entre um aplicativo da web e a internet. Os firewalls de aplicativos da Web podem ser ajustados para proteger contra diferentes tipos de injeções de SQL e outras ameaças à segurança.

    Lista de permissões em vez de listas de bloqueios

    A lista de bloqueios evita que os usuários insiram caracteres potencialmente problemáticos, como sinais de igual, ponto e vírgula e aspas. A lista de permissões aprova apenas alguns caracteres, por isso, é mais restritiva e tem maior impacto. Os hackers encontraram maneiras criativas de contornar a lista de bloqueios, mas a lista de permissões deixa pouco espaço de manobra.

    Criptografia de dados

    A criptografia de dados mantém seus dados protegidos até eles retornarem a você. Ao criptografar os dados no banco de dados, os hackers não podem acessar os dados reais, a menos que possam desbloqueá-los.

    Use software de segurança atualizado

    Não importa o quanto você seja vigilante, é difícil bloquear milhões de hackers tentando se infiltrar. O software de segurança para empresas moderno pode corrigir automaticamente para ajudar a proteger contra ameaças de injeção de SQL em evolução.

    Proteja-se contra ameaças e vulnerabilidades com o AVG Antivirus

    Não há muito a fazer se o seu site favorito for atingido pela injeção de SQL, mas você não precisa tolerar uma segurança leniente nos seus dispositivos.

    O software de segurança patenteado da AVG patrulha as ameaças, 24 horas por dia. Escaneie seu dispositivo rapidamente para corrigir as brechas de segurança e vulnerabilidades da rede Wi-Fi. Proteja seu e-mail contra bisbilhoteiros e bloqueie downloads maliciosos, links inseguros e tentativas de phishing.

    Cubra ameaças online de qualquer ângulo, seja protegendo a rede, ejetando software desatualizado ou eliminando malware. Teste o AVG AntiVirus FREE hoje mesmo.

    Proteja seu iPhone contra ameaças com o AVG Mobile Security

    Instalação gratuita

    Proteja seu Android contra ameaças com o AVG AntiVirus

    Instalação gratuita
    Ameaças
    Segurança
    Domenic Molinaro
    4-06-2021