Внедрение кода
Что такое Внедрение кода?
Внедрение кодаКласс уязвимостей, при которых данные от злоумышленника интерпретируются и выполняются приложением как код, что ведёт к произвольному выполнению.
Внедрение кода — широкое семейство уязвимостей, при которых недоверенный ввод попадает туда, где приложение позже трактует его как программный код, конфигурацию или разметку, в результате чего среда выполнения исполняет его. Конкретные виды включают eval-инъекции в JavaScript и Python, серверные шаблонные инъекции, инъекции выражений (OGNL, SpEL), небезопасную десериализацию с цепочками gadget'ов и динамическую загрузку классов из пользовательских данных. Успешная эксплуатация обычно даёт удалённое выполнение кода с правами приложения, что часто становится трамплином к компрометации хоста или кластера. Защита включает запрет на построение кода из ввода, параметризованные API, ограничение динамических возможностей и применение принципа минимальных привилегий с песочницей.
● Примеры
- 01
eval(request.body.expr) выполняет управляемый атакующим JavaScript в Node-сервисе.
- 02
Java-приложение вызывает ScriptEngine.eval над пользовательским скриптом.
● Частые вопросы
Что такое Внедрение кода?
Класс уязвимостей, при которых данные от злоумышленника интерпретируются и выполняются приложением как код, что ведёт к произвольному выполнению. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает Внедрение кода?
Класс уязвимостей, при которых данные от злоумышленника интерпретируются и выполняются приложением как код, что ведёт к произвольному выполнению.
Как работает Внедрение кода?
Внедрение кода — широкое семейство уязвимостей, при которых недоверенный ввод попадает туда, где приложение позже трактует его как программный код, конфигурацию или разметку, в результате чего среда выполнения исполняет его. Конкретные виды включают eval-инъекции в JavaScript и Python, серверные шаблонные инъекции, инъекции выражений (OGNL, SpEL), небезопасную десериализацию с цепочками gadget'ов и динамическую загрузку классов из пользовательских данных. Успешная эксплуатация обычно даёт удалённое выполнение кода с правами приложения, что часто становится трамплином к компрометации хоста или кластера. Защита включает запрет на построение кода из ввода, параметризованные API, ограничение динамических возможностей и применение принципа минимальных привилегий с песочницей.
Как защититься от Внедрение кода?
Защита от Внедрение кода обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Внедрение кода?
Распространённые альтернативные названия: Удалённое выполнение кода, Произвольное выполнение кода.
● Связанные термины
- attacks№ 392
Eval-инъекция
Конкретный подвид внедрения кода, возникающий при передаче недоверенного ввода в примитивы динамического выполнения вроде JavaScript eval() или Python eval/exec.
- attacks№ 202
Внедрение команд
Атака, при которой пользовательский ввод без фильтрации передаётся в системный шелл, и приложение выполняет команды, заданные злоумышленником.
- attacks№ 1084
SQL-инъекция
Атака внедрения кода, которая встраивает управляемый злоумышленником SQL в запрос к базе данных, позволяя читать, изменять или уничтожать данные.
- attacks№ 1009
Инъекция серверных шаблонов
Атака, при которой синтаксис шаблонизатора попадает в недоверенный ввод и приводит к выполнению кода на сервере при рендеринге шаблона.
- vulnerabilities№ 539
Небезопасная десериализация
Уязвимость, при которой приложение десериализует недоверенные данные, позволяя атакующему создавать произвольные объекты и часто получать удалённое выполнение кода.
● См. также
- № 808Эксплойт через PDF