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

Внедрение кода

ПроверилCybersecurity entrepreneur & security researcher

Что такое Внедрение кода?

Внедрение кодаКласс уязвимостей, при которых данные от злоумышленника интерпретируются и выполняются приложением как код, что ведёт к произвольному выполнению.


Внедрение кода (CWE-94) — широкое семейство уязвимостей, при которых недоверенный ввод попадает туда, где приложение позже трактует его как программный код, в результате чего среда выполнения исполняет его. В отличие от внедрения команд (которое достигает шелла ОС), внедрение кода выполняется внутри собственного интерпретатора приложения. Конкретные виды включают eval-инъекции в JavaScript и Python, серверные шаблонные инъекции, инъекции языков выражений (OGNL, SpEL), небезопасную десериализацию с цепочками gadget'ов и динамическую загрузку классов из пользовательских данных. Успешная эксплуатация обычно даёт удалённое выполнение кода с правами приложения, что часто становится трамплином к компрометации хоста или кластера.

Три знаковых случая показывают последствия. Apache Struts CVE-2017-5638 позволяла выполнять выражения OGNL в некорректном заголовке Content-Type; неисправленный экземпляр вызвал утечку Equifax 2017 года, раскрывшую ~147 млн записей. Log4Shell (CVE-2021-44228), CVSS 10.0, превращала любую записанную в лог строку с JNDI-lookup в удалённую загрузку Java-класса. Spring4Shell (CVE-2022-22965) злоупотребляла привязкой данных Spring, манипулируя ClassLoader и размещая веб-шелл.

flowchart TD
  A[Недоверенный ввод] --> B{Достигает ли точки, вычисляющей код?}
  B -->|eval / шаблон / OGNL / десериализация| C[Интерпретатор выполняет код атакующего]
  B -->|Проверен / параметризован| D[Обрабатывается как инертные данные]
  C --> E[RCE с правами приложения]
  E --> F[Компрометация хоста / кластера]
  D --> G[Безопасно]

Защита: никогда не строить код, шаблоны или выражения из ввода; использовать параметризованные API со списками разрешений; отключать или изолировать динамическое вычисление и десериализацию; своевременно обновлять фреймворки; и работать с минимальными привилегиями, чтобы RCE имело наименьший возможный охват.

Примеры

  1. 01

    eval(request.body.expr) выполняет управляемый атакующим JavaScript в Node-сервисе.

  2. 02

    Java-приложение вызывает ScriptEngine.eval над пользовательским скриптом.

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

Что такое Внедрение кода?

Класс уязвимостей, при которых данные от злоумышленника интерпретируются и выполняются приложением как код, что ведёт к произвольному выполнению. Относится к категории Атаки и угрозы в кибербезопасности.

Что означает Внедрение кода?

Класс уязвимостей, при которых данные от злоумышленника интерпретируются и выполняются приложением как код, что ведёт к произвольному выполнению.

Как защититься от Внедрение кода?

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

Какие есть другие названия Внедрение кода?

Распространённые альтернативные названия: Удалённое выполнение кода, Произвольное выполнение кода.

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

См. также