Invasão de Bugs! Os 3 Vilões Mais Ameaçadores do Mundo do Software

0

Em uma publicação recente do MITRE (*), foram apontados os 25 bugs mais perigosos que vem permeando nos últimos dois anos o universo de software. Segundo a matéria, o que torna esses 25 males em ameaças, são: os impactos que eles podem causar e suas frequentes ocorrências. Vamos esmiuçar, neste artigo, os três primeiros.

#1?—?Out-of-bounds Write 

Liderando a lista de ameaças, está o bug apelidado de Out-of-bounds Write, ou escrita fora de banda. Essa falha, catalogada como CWE-787, permite que um adversário escreva dados fora da área de memória reservada (buffers) para as operações daquele software.

Os buffers são, regiões de memória reservadas para armazenar temporariamente dados durante a execução de um programa. Se os dados escritos excedem a capacidade do buffer, eles irão "transbordar" para os blocos de memória vizinhos, podendo sobrescrever dados importantes. Esse é o conceito de um "buffer overflow".

Já no caso de um Out-of-bounds Write, o código malicioso usado pelo cibercriminoso pode manipular este transbordo a fim de alterar os dados de controle do programa. Assim, o invasor pode modificar o fluxo de execução para rodar o código arbitrário, alterar o comportamento do programa ou provocar uma falha no sistema.

De forma simplista, imagine que você está preso em um congestionamento e quisesse sair da estrada e criar seu próprio caminho. Suponha que você decida fazer um novo trajeto, passando por cima de uma calçada, um jardim, ou até mesmo uma casa! Você pode chegar ao seu destino rapidamente, mas a destruição que causou com esse novo percurso pode ter impactos graves.

De maneira semelhante, um bug de Out-of-Bound Write pode causar uma série de problemas em um sistema de computador, desde corrupção de dados importantes até a criação de uma falha para que invasores injetem código malicioso e tomem o controle do sistema que está executando aquele programa.

Para evitar esses erros, os desenvolvedores precisam garantir que o software sempre verifique o tamanho dos dados antes de tentar escrever na memória. Existem várias técnicas de programação defensiva que podem ser utilizadas para isso. Uma delas é escolher uma linguagem de programação que não permita que essa falha ocorra ou que forneça construções nativas para o gerenciamento de memória. Além disso, é possível utilizar bibliotecas e frameworks que possuam recursos com a missão de evitar essa vulnerabilidade. Outra abordagem é implementar mecanismos de detecção de buffer overflow fornecidos por alguns compiladores.

#2?—?Cross-site scripting 

Em segundo lugar na lista, temos a falha de XSS, ou Cross-site scripting. Catalogada como CWE-79 a vulnerabilidade ocorre em aplicações web e permite que um atacante injete código JavaScript (ou outro script) malicioso em páginas web. Uma vez que este código é executado no navegador do usuário, o atacante pode ganhar controle sobre a interação do usuário com a aplicação, roubar dados sensíveis, ou mesmo manipular o conteúdo do site para o usuário.

Existem três tipos principais de XSS: armazenado, refletido e DOM-based

XSS Armazenado: Este tipo é o líder das falhas de XSS. O script malicioso injetado é permanentemente armazenado no servidor de destino. Quando um usuário visita a página web, o script é carregado diretamente do servidor e executado no navegador do usuário.

XSS Refletido: Aqui o script malicioso reflete de volta ao usuário por meio da página web. Ou seja, o código é incorporado em um campo vulnerável do site, que quando interagido pelo usuário, reflete o script na página web, que é então executado no navegador do usuário.

XSS Baseado em DOM: Por fim, esta falha de XSS envolve a manipulação do Document Object Model (DOM) de uma página web?—?aquelas tags (<href>, <h1>, <img>) que aparecem no código fonte da página. O script malicioso modifica o DOM, permitindo que o ataque ocorra quando a página é renderizada pelo navegador do usuário.

O perigo da falha está na possibilidade de roubo de dados sensíveis, como credenciais de login e informações de cartões de crédito. Porém, a possibilidade de o atacante executar qualquer ação que o usuário possa realizar é real, tal como fazer compras em nome do usuário, alterar configurações de conta e até mesmo espalhar ataques de XSS a outros usuários.

Para prevenir ataques de XSS, é importante que o desenvolvedor da aplicação implemente a validação correta das entradas dos usuários a fim de garantir que elas não contenham scripts maliciosos. É válido promover a codificação das saídas para que qualquer script seja exibido como texto e haja a implementação de Políticas de Segurança de Conteúdo (CSP) a fim de evitar a execução de scripts não confiáveis.

Adicionalmente, soluções de SAST, DAST e IAST como as da Synopsys podem ser implementadas para ajudar na mitigação dessas vulnerabilidades.

#3?—?SQL injection 

Em terceiro lugar temos a vulnerabilidade de injeção de SQL (SQL Injection ou SQLi), uma das vulnerabilidades mais antigas e perigosas do mundo. Ela explora falhas na validação de entrada de um aplicativo que utiliza a linguagem SQL para seus acessos a um banco de dados. Em outras palavras, um ataque de SQLi ocorre quando um adversário injeta código SQL malicioso em uma entrada que é posteriormente usada para interagir com o banco de dados.

Vamos a um exemplo: Imagine que você esteja usando o seu aplicativo do banco ao invés de inserir o PIN/senha para entrar no App, você insere uma query SQL. Com esse recurso, você poderia solicitar que o aplicativo mudasse seu saldo, ou buscasse informações sobre outros clientes ou mesmo excluísse todos os dados que o banco tem armazenado?—?embora existam outras medidas de segurança capazes de impedir que isso aconteça no banco.

Isso é o que acontece com um ataque de SQLi: o atacante insere comandos SQL que modificam a consulta original, podendo excluir tabelas, extrair informações sensíveis, ou alterar dados.

Dessa forma, o que torna um ataque SQLi extremamente perigoso é sua capacidade de violar dados. Isso inclui acesso não autorizado a dados confidenciais ou sensíveis (protegidos por lei), como informações pessoais dos usuários, detalhes de cartões de crédito, senhas e outros dados. Em cenários extremos, um ataque de SQLi bem-sucedido pode levar ao controle total do banco de dados por um atacante.

Para se prevenir desse tipo de ataque as maneiras mais eficazes são: sanitizar os campos nos quais o usuário insere dados, parametrizar as consultas SQL, limitação de privilégios de banco de dados e uso de firewalls de aplicativos (WAFs) como os da Imperva.

Conclusão 

Assim, as vulnerabilidades de software, Out-of-Bound Write, XSS e SQLi se destacam como ameaças cibernéticas significativas, cada uma capaz de causar danos consideráveis quando explorada. De corrupção de dados, a quebra de confiança e manipulação de bancos de dados, esses bugs evidenciam a necessidade de uma política de segurança eficaz  – que esteja alinhada com o time de desenvolvimento. A equipe de segurança deve analisar, considerar e adotar soluções de SAST, DAST e IAST, bem como ter gestores e profissionais técnicos capacitados que compreendam a gravidade das falhas e saibam aplicar as devidas medidas de correção.

Filipe Grahl, Cyber Security Analyst da Dfense Security e Ranieri Romera, Security Specialist da Dfense Security.

Referências

(*) MITRE releases new list of top 25 most dangerous software bugs
MITRE shared today this year's list of the top 25 most dangerous weaknesses plaguing software during the previous two…www.bleepingcomputer.com

CYBER SECURITY FORUM

No dia 3 de outubro a TI Inside realizará no WTC-SP o Cyber security forum, principal evento de cibersegurança do país. O evento contará com os principais especialistas do setor, e com grandes empresas expondo suas soluções. Saiba mais em: https://cybersecurityforum.com.br/

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.