Injeção de Código
O que é Injeção de Código?
Injeção de CódigoClasse de vulnerabilidades em que dados fornecidos pelo atacante são interpretados e executados como código pela aplicação, levando a execução arbitrária no seu contexto.
A injeção de código é a família ampla de falhas em que entrada não confiável é incorporada a algo que a aplicação trata posteriormente como código, configuração ou marcação, fazendo com que o runtime a execute. Exemplos concretos incluem injeções baseadas em eval em JavaScript e Python, injeção de templates do lado do servidor, injeções de linguagens de expressão (OGNL, SpEL), desserialização insegura que dispara cadeias de gadgets e carregamento dinâmico de classes a partir de dados do utilizador. A exploração bem-sucedida geralmente concede execução remota de código com a identidade da aplicação, frequentemente o trampolim para comprometer o host ou cluster. As defesas incluem nunca construir código a partir da entrada, APIs parametrizadas, bloquear recursos dinâmicos e aplicar privilégio mínimo com sandboxing.
● Exemplos
- 01
eval(request.body.expr) executando JavaScript controlado pelo atacante num serviço Node.
- 02
Aplicação Java a chamar ScriptEngine.eval sobre um script fornecido pelo utilizador.
● Perguntas frequentes
O que é Injeção de Código?
Classe de vulnerabilidades em que dados fornecidos pelo atacante são interpretados e executados como código pela aplicação, levando a execução arbitrária no seu contexto. Pertence à categoria Ataques e ameaças da cibersegurança.
O que significa Injeção de Código?
Classe de vulnerabilidades em que dados fornecidos pelo atacante são interpretados e executados como código pela aplicação, levando a execução arbitrária no seu contexto.
Como funciona Injeção de Código?
A injeção de código é a família ampla de falhas em que entrada não confiável é incorporada a algo que a aplicação trata posteriormente como código, configuração ou marcação, fazendo com que o runtime a execute. Exemplos concretos incluem injeções baseadas em eval em JavaScript e Python, injeção de templates do lado do servidor, injeções de linguagens de expressão (OGNL, SpEL), desserialização insegura que dispara cadeias de gadgets e carregamento dinâmico de classes a partir de dados do utilizador. A exploração bem-sucedida geralmente concede execução remota de código com a identidade da aplicação, frequentemente o trampolim para comprometer o host ou cluster. As defesas incluem nunca construir código a partir da entrada, APIs parametrizadas, bloquear recursos dinâmicos e aplicar privilégio mínimo com sandboxing.
Como se defender contra Injeção de Código?
As defesas contra Injeção de Código costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Injeção de Código?
Nomes alternativos comuns: Execução remota de código, Execução arbitrária de código.
● Termos relacionados
- attacks№ 392
Injeção em eval
Subcaso concreto de injeção de código causado por passar entrada não confiável a primitivas de avaliação dinâmica como eval() de JavaScript ou eval/exec de Python.
- attacks№ 202
Injeção de Comandos
Ataque em que a entrada do utilizador é passada sem sanitização a um shell do sistema, levando a aplicação a executar comandos fornecidos pelo atacante.
- attacks№ 1084
Injeção SQL
Ataque de injeção de código que insere SQL controlado pelo atacante numa consulta à base de dados, permitindo ler, alterar ou destruir dados.
- attacks№ 1009
Injeção de Template no Lado do Servidor
Ataque que injeta sintaxe de motor de templates em entradas não confiáveis, provocando execução de código no servidor quando o template é renderizado.
- vulnerabilities№ 539
Desserialização insegura
Vulnerabilidade em que uma aplicação desserializa dados não confiáveis, permitindo ao atacante instanciar objetos arbitrários e, com frequência, conseguir RCE.
● Veja também
- № 808Exploit em PDF