Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 392

Eval-инъекция

Что такое Eval-инъекция?

Eval-инъекцияКонкретный подвид внедрения кода, возникающий при передаче недоверенного ввода в примитивы динамического выполнения вроде JavaScript eval() или Python eval/exec.


Eval-инъекция — конкретный подвид внедрения кода, при котором функция динамического выполнения языка — JavaScript eval, new Function, setTimeout со строкой, Python eval/exec, Ruby eval, эквиваленты PHP, VBA Application.Run — вызывается с данными, прямо или косвенно поступившими от пользователя. Поскольку такие примитивы интерпретируют переданную строку как полноценный исходный код в процессе приложения, успешная эксплуатация даёт полный RCE на уровне языка: доступ к импортам, глобалам, файловой системе, переменным окружения и подпроцессам. Меры защиты — полностью отказаться от динамического выполнения, перейти на безопасные парсеры (JSON.parse, ast.literal_eval), использовать строгий белый список при оценке выражений, применять песочницы (vm2) или ограниченные подпроцессы.

Примеры

  1. 01

    Python: result = eval(request.form['expr']) — нагрузка __import__('os').system('id').

  2. 02

    Node: new Function('return ' + req.query.f)() — нагрузка process.mainModule.require('child_process').execSync('id').

Частые вопросы

Что такое Eval-инъекция?

Конкретный подвид внедрения кода, возникающий при передаче недоверенного ввода в примитивы динамического выполнения вроде JavaScript eval() или Python eval/exec. Относится к категории Атаки и угрозы в кибербезопасности.

Что означает Eval-инъекция?

Конкретный подвид внедрения кода, возникающий при передаче недоверенного ввода в примитивы динамического выполнения вроде JavaScript eval() или Python eval/exec.

Как работает Eval-инъекция?

Eval-инъекция — конкретный подвид внедрения кода, при котором функция динамического выполнения языка — JavaScript eval, new Function, setTimeout со строкой, Python eval/exec, Ruby eval, эквиваленты PHP, VBA Application.Run — вызывается с данными, прямо или косвенно поступившими от пользователя. Поскольку такие примитивы интерпретируют переданную строку как полноценный исходный код в процессе приложения, успешная эксплуатация даёт полный RCE на уровне языка: доступ к импортам, глобалам, файловой системе, переменным окружения и подпроцессам. Меры защиты — полностью отказаться от динамического выполнения, перейти на безопасные парсеры (JSON.parse, ast.literal_eval), использовать строгий белый список при оценке выражений, применять песочницы (vm2) или ограниченные подпроцессы.

Как защититься от Eval-инъекция?

Защита от Eval-инъекция обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия Eval-инъекция?

Распространённые альтернативные названия: Инъекция eval(), Инъекция динамического выполнения.

Связанные термины