Injeção em eval
O que é Injeção em eval?
Injeção em evalSubcaso 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.
A injeção em eval é o subcaso concreto da injeção de código em que a função de avaliação dinâmica da linguagem — eval ou new Function em JavaScript, setTimeout com string, eval/exec em Python, eval em Ruby, equivalentes em PHP, Application.Run em VBA — é invocada com dados direta ou indiretamente vindos do utilizador. Como estas primitivas interpretam a string como código-fonte completo no processo hospedeiro, a exploração concede RCE ao nível da linguagem: acesso a imports, globais, sistema de ficheiros, ambiente e processos filhos. As mitigações incluem eliminar a avaliação dinâmica, usar parsers seguros (JSON.parse, ast.literal_eval), validadores com lista branca rigorosa para expressões matemáticas, e sandboxes como vm2 ou subprocessos restritos.
● Exemplos
- 01
Python: result = eval(request.form['expr']) — payload __import__('os').system('id').
- 02
Node: new Function('return ' + req.query.f)() — payload process.mainModule.require('child_process').execSync('id').
● Perguntas frequentes
O que é 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. Pertence à categoria Ataques e ameaças da cibersegurança.
O que significa 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.
Como funciona Injeção em eval?
A injeção em eval é o subcaso concreto da injeção de código em que a função de avaliação dinâmica da linguagem — eval ou new Function em JavaScript, setTimeout com string, eval/exec em Python, eval em Ruby, equivalentes em PHP, Application.Run em VBA — é invocada com dados direta ou indiretamente vindos do utilizador. Como estas primitivas interpretam a string como código-fonte completo no processo hospedeiro, a exploração concede RCE ao nível da linguagem: acesso a imports, globais, sistema de ficheiros, ambiente e processos filhos. As mitigações incluem eliminar a avaliação dinâmica, usar parsers seguros (JSON.parse, ast.literal_eval), validadores com lista branca rigorosa para expressões matemáticas, e sandboxes como vm2 ou subprocessos restritos.
Como se defender contra Injeção em eval?
As defesas contra Injeção em eval costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Injeção em eval?
Nomes alternativos comuns: Injeção eval(), Injeção de avaliação dinâmica.
● Termos relacionados
- attacks№ 195
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.
- 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.
- 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.
- 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.
- appsec№ 538
Validação de entrada
Verificação no servidor que confirma se toda entrada não confiável corresponde ao tipo, comprimento, intervalo, formato e conjunto de valores esperados antes do processamento.