DEV Community

Gabriel Galdino
Gabriel Galdino

Posted on • Updated on

Explicando o TOP 3 da OWASP "Injection" para desenvolvedores

Dando seguimento a nossa série das principais categorias de riscos do OWASP TOP 10, em terceira posição temos o "Injection".

Neste artigo, apresentarei sobre o que é essa categoria de risco, os tipos de ataques que existem, bem como os cenários em que ela pode ser explorada. Dessa forma, compartilharei informações importantes para ajudar desenvolvedores a protegerem suas aplicações contra essa ameaça.

O que é "Injection"?

Injection é um risco referente à situação quando dados fornecidos pelo usuário não são validados, filtrados ou sanitizados pela aplicação, permitindo que um invasor insira (Injete, por isso a palavração "injeção") comandos maliciosos nas entradas de dados.

Isso pode levar a roubo de informações confidenciais ou a comprometimento do sistema. Invasores aproveitam falhas de validação de entrada, como o formato de dados, caracteres permitidos e quantidade de dados esperados, para desenvolver códigos maliciosos

Anteriormente, era comum associar o ataque "Injection" ao SQL Injection (SQLi), entretanto, o OWASP TOP 10 mas recente (2021) inclui outros diversos tipos de ataques, incluindo o SQLi, nessa categoria.

Saiba por que SQL Injection é tratada como "baratas digitas".

Vamos ampliar um pouco mais sobre os tipos de Injection

SQL INJECTION

Como foi dito anteriormente, é um dos mais conhecidos da categoria e se refere a quando um atacante consegue inserir comandos maliciosos em uma consulta SQL, a fim de manipular ou acessar informações não autorizadas do banco de dados.

CROSS-SITE SCRIPTING

É quando o atacante consegue injetar scripts maliciosos no conteúdo do site alvo, que é então incluído com o conteúdo dinâmico entregue ao navegador da vítima. O navegador da vítima não tem como saber que os scripts maliciosos não são confiáveis e, portanto, os executa.

OS COMMAND INJECTION

Quando uma aplicação permite que um atacante induza uma aplicação a executar comandos do sistema operacional (SO). Também conhecido como injeção de shell.

ORM INJECTION

Se refere a quando um atacante consegue inserir comandos maliciosos em uma consulta ORM.

LDAP INJECTION

Ataque usado para explorar aplicações que constroem declarações LDAP com base na entrada do usuário. Quando uma aplicação falha em sanitizar adequadamente a entrada do usuário, é possível modificar as declarações LDAP usando um proxy local.

EXPRESSION LANGUAGE INJECTION

Ocorre quando uma aplicação incorpora dados controláveis ​​pelo usuário em uma string que é avaliada dinamicamente por um interpretador EL. Se os dados não forem validados, um invasor pode usar a entrada para modificar o código e injetar código malicioso que será executado pelo servidor.

Cenários de ataque

Cenário #1: Uma aplicação usa dados não confiáveis na construção da seguinte chamada SQL vulnerável:

String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") + "'";
Enter fullscreen mode Exit fullscreen mode

Cenário #2: Da mesma forma, a confiança cega de uma aplicação em frameworks pode resultar em consultas ainda vulneráveis (por exemplo, Hibernate Query Language (HQL)):

Query HQLQuery = session.createQuery("FROM accounts WHERE custID='" + request.getParameter("id") + "'");
Enter fullscreen mode Exit fullscreen mode

Em ambos os casos, o invasor modifica o valor do parâmetro 'id' no seu navegador para enviar: ' or '1'='1. Por exemplo:

http://example.com/app/accountView?id=' or '1'='1
Enter fullscreen mode Exit fullscreen mode

Isso altera o significado das duas consultas para retornar todos os registros da tabela accounts. Ataques mais perigosos poderiam modificar ou excluir dados ou até invocar procedimentos armazenados.

Como desenvolvedores podem se prevenir a esse tipo de ataque?

A opção preferencial é usar uma API segura, que evita totalmente o uso do interpretador, fornecendo uma interface parametrizada ou migrando para uso Object Relational Mapping Tools (ORMs).

Utilizar LIMIT e outros controles SQL dentro das consultas para prevenir a divulgação em massa de dados em caso de Injection.

Realizar a validação de entrada do lado do servidor.

Vale lembrar que a OWASP tem uma série de outras medidas importantes que se precisa ter em mente contra esse risco, veja aqui!

Uma das formas mais antigas de ataque e também uma das mais comuns

Ter conhecimento do OWASP Top 10 Injection é importante para nós, desenvolvedores, pois mesmo com vários recursos disponíveis para lidar com esse tipo de ataque, ele ainda é um dos mais comuns.

Ao não validar ou codificar corretamente a entrada de dados do usuário, uma aplicação corre o risco de permitir a execução de código malicioso que pode afetar a segurança de toda a aplicação. Por isso, é crucial que desenvolvedores estejam cientes dos riscos desse tipo de vulnerabilidade e saibam como ser defensivos na hora do desenvolvimento!

Fique por dentro sobre SQL Injection.

Top comments (1)

Collapse
 
dearrudam profile image
Maximillian Arruda

Parabéns pelo artigo!!!! Muito massa!!!