Mastodon Mastodon Mastodon Mastodon

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

Обновлено: · CyberSecureFox Editorial Team

Внедрение кода (code injection) — класс атак, при которых злоумышленник передаёт входные данные, ошибочно исполняемые приложением как программный код.

Как работает внедрение кода

Корень проблемы — смешивание данных и кода. Если приложение собирает код из пользовательского ввода — например, передаёт его в функцию eval() в PHP, JavaScript или Python или вставляет в шаблон, — атакующий может добавить собственные инструкции. Слабость описана как CWE-94. Родственные варианты:

  • Внедрение команд ОС (CWE-78) — ввод попадает в команду системной оболочки.
  • Инъекция в серверные шаблоны (SSTI) — ввод исполняется шаблонизаторами вроде Jinja2 или Twig.
  • Инъекция в языки выражений — например, OGNL-инъекция в Apache Struts, из-за которой в 2017 году взломали Equifax.
  • SQL-инъекция и межсайтовый скриптинг, где внедряется запрос к базе данных или скрипт для браузера.

Ошибка Shellshock в Bash (2014) показала масштаб проблемы: специально сформированные переменные окружения заставляли Bash выполнять команды на веб-серверах, роутерах и других устройствах.

Почему это важно

Успешное внедрение кода обычно означает удалённое выполнение кода с правами приложения: кражу данных, веб-шеллы, майнеры или плацдарм для шифровальщика. Инъекции входят в OWASP Top 10 с первого издания и остаются любимой целью автоматических сканеров. Близкий родственник — небезопасная десериализация, которая тоже превращает данные в исполняемый код.

Как предотвратить

  • Никогда не передавать пользовательский ввод в функции типа eval и в оболочку; использовать безопасные API и параметризованные запросы.
  • Проверять ввод по строгим белым спискам и экранировать вывод с учётом контекста.
  • Запускать приложения с минимальными правами и изолировать шаблонизаторы.
  • Использовать статический анализ и тестирование безопасности, чтобы находить точки внедрения заранее.
Синонимы:
инъекция кода, code injection