Mastodon Mastodon Mastodon Mastodon

SQL-ін’єкція [SQLi]

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

SQL-ін’єкція (SQLi) — атака на вебзастосунок, під час якої шкідливе введення вбудовується в запит до бази даних, і атакувальник читає, змінює або видаляє дані без права доступу до них.

Як працює SQL-ін’єкція

Вразливість виникає, коли застосунок збирає SQL-запит, просто вставляючи в його текст дані користувача. Припустімо, форма входу виконує SELECT * FROM users WHERE name = 'введення'. Тоді введення ' OR '1'='1 змінює логіку запиту.

Різновиди:

  • класична (in-band) — результат видно просто на сторінці (через помилки чи UNION);
  • сліпа (blind) — дані обчислюють за відповідями «так/ні» або за затримками відповіді;
  • позасмугова (out-of-band) — дані надсилаються на сервер атакувальника.

За відповідної СУБД і прав SQLi дає змогу не лише викрасти дані, а й записати файли, аж до віддаленого виконання коду. Пошук і експлуатацію автоматизують інструменти на кшталт sqlmap.

Чому SQL-ін’єкції небезпечні

Це одна з найстаріших вебвразливостей, і вона досі входить до категорії «Ін’єкції» OWASP Top 10. Через SQLi ставалися великі витоки:

  • атака на Heartland Payment Systems 2008 року розкрила понад 100 млн номерів карток;
  • 2023 року угруповання Cl0p через SQL-ін’єкцію в MOVEit Transfer (CVE-2023-34362) викрало дані тисяч організацій.

Як запобігти

  • Використовуйте параметризовані запити (prepared statements) або безпечний ORM. Ніколи не склеюйте введення з SQL.
  • Надавайте обліковому запису застосунку в базі лише необхідні права.
  • Перевіряйте вхідні дані, не показуйте користувачам детальні помилки СУБД, тестуйте код інструментами SAST/DAST.
  • Міжмережевий екран вебзастосунків (WAF) корисний як додатковий шар, але не замінює виправлення коду.
Синоніми:
SQL injection, впровадження SQL-коду