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) или ограниченные подпроцессы.
● Примеры
- 01
Python: result = eval(request.form['expr']) — нагрузка __import__('os').system('id').
- 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-инъекция обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Eval-инъекция?
Распространённые альтернативные названия: Инъекция eval(), Инъекция динамического выполнения.