Como funciona a injeção de código?

Cum funcționează injectarea codului?
⏱️ 5 min read

A injeção de código, muitas vezes referida como execução remota de código (RCE), é um ataque perpetrado pela capacidade de um invasor de injetar e executar código malicioso em um aplicativo; um ataque de injeção. Este código estrangeiro é capaz de violar a segurança dos dados, comprometendo a integridade do banco de dados ou propriedades privadas. Em muitos casos, ele pode ignorar o controle de autenticação e, geralmente, esses ataques estão associados a aplicativos que dependem da entrada do usuário para execução.

Geralmente, os aplicativos são mais vulneráveis ​​se o código for executado sem primeiro passar pela validação. Um caso simples de um código vulnerável é mostrado abaixo.

No exemplo acima, a página de informações do PHP é vulnerável e será exibida se o URL http://example.com/?code=phpinfo (); é executado.

Devido ao fato de que a interação do usuário com os aplicativos é cada vez mais uma necessidade no mundo online de hoje, a injeção de código cresceu e se tornou uma ameaça real para muitos recursos online.

Tipos de injeção de código

Existem principalmente quatro tipos de injeções de código: injeção de SQL, injeção de script, injeção de shell e avaliação dinâmica. Todos eles têm o mesmo princípio de funcionamento, ou seja, o código é introduzido e executado por aplicativos, mas os dois que farei o foco são a injeção de SQL e a injeção de script.

Como funcionam as injeções de SQL

No caso de injeção de SQL, o ataque visa corromper uma consulta de banco de dados legítima para produzir dados falsificados. O invasor primeiro precisa localizar uma entrada no aplicativo da Web de destino, incluída em uma consulta SQL.

Este método só é eficaz se o aplicativo da web tiver entrada do usuário incluída em uma instrução SQL. Uma carga útil (uma instrução SQL maliciosa) pode então ser inserida e executada no servidor de banco de dados.

O seguinte pseudocódigo do lado do servidor é um exemplo simples de autenticação que pode ser vulnerável a injeções de SQL.

injeção-exemplo2

No código acima, o invasor pode inserir uma carga útil que alteraria a instrução SQL executada pelo servidor de banco de dados. Um exemplo definiria o campo de senha para:

Isso faz com que a seguinte instrução seja executada automaticamente no servidor de banco de dados:

O que a injeção SQL pode fazer

Este é o tipo mais comum de injeção de código. Considerando o fato de que SQL é a linguagem utilizada para manipular dados armazenados em Relational Database Management Systems (RDBMS), um ataque com o poder de dar e executar instruções SQL pode ser utilizado para acessar, modificar e até mesmo excluir dados.

Ele pode dar ao invasor a capacidade de contornar a autenticação, ter total divulgação dos dados armazenados no banco de dados, comprometer a integridade dos dados e causar problemas de repúdio, alterando saldos e anulando transações.

Como prevenir injeções de SQL

Existem algumas etapas para tornar seus aplicativos menos vulneráveis, mas antes de qualquer uma dessas etapas, é melhor presumir que todos os dados enviados pelo usuário são nocivos e não confiar em ninguém. Então você pode considerar o seguinte:

  • Desative o uso de SQL dinâmico – isso significa não construir consultas de banco de dados com a entrada do usuário. Se necessário, limpe, valide e escape os valores antes de fazer uma consulta com os dados de entrada do usuário.
  • Faça uso de um firewall – Um firewall de aplicativo da web (baseado em software ou aplicativo) ajudará a filtrar dados maliciosos.
  • Compre um software melhor – Isso significa simplesmente que os programadores serão responsáveis ​​por verificar e corrigir as falhas.
  • Criptografar ou hash de senhas e todos os outros dados confidenciais que você possui, isso deve incluir cadeias de conexão.
  • Evite conectar-se ao seu banco de dados com contas com privilégios de administrador a menos que seja absolutamente necessário.

Injeção de script

Esta vulnerabilidade de segurança é uma ameaça que permite a um invasor injetar código malicioso diretamente nas formas da web de sites baseados em dados por meio de elementos da interface do usuário. Esse ataque costuma ser conhecido como Cross-Site Scripting ou XSS. o <script>, <meta>, <html>, <body>, <embed>, <frame>, <frameset>, <img> as tags são as mais direcionadas para injeções de script.

Como evitar injeções de script

As etapas para evitar injeções de script dependem do código de programação que você está usando. Geralmente, você desejará:

  • validar e higienizar a entrada do usuário (qualquer forma de campo de entrada) eliminando ou escapando de conteúdo potencialmente malicioso
  • limpar strings de consulta em URLs
  • validar e higienizar todas as formas de dados, matrizes e objetos antes de executar no servidor

Conclusão

Simplificando, a prevenção é melhor do que a cura. Com as novas atualizações de tecnologia, nossos sistemas estarão expostos a mais ameaças. Para ficar por dentro de tudo, é importante ter os patches e atualizações mais recentes e ficar atento às melhores práticas. Isso torna mais difícil ser vítima desses ataques maliciosos.

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar of Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Você pode gostar...

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x