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