Вплив впровадження SQL
SQL-ін’єкція (SQLi) дозволяє зловмиснику втручатися в запити, які програма робить до своєї бази даних [S1]. Основний вплив включає несанкціонований доступ до конфіденційних даних, таких як паролі користувачів, дані кредитної картки та особиста інформація [S1].
Крім крадіжки даних, зловмисники часто можуть змінювати або видаляти записи бази даних, що призводить до постійних змін у поведінці програми або втрати даних [S1]. У випадках високої серйозності SQLi може бути посилено, щоб скомпрометувати серверну інфраструктуру, увімкнути атаки на відмову в обслуговуванні або створити постійний бекдор до систем організації [S1][S2].
Основна причина: небезпечна обробка введення
Основною причиною впровадження SQL є неправильна нейтралізація спеціальних елементів, які використовуються в команді SQL [S2]. Це відбувається, коли програма створює SQL-запити, об’єднуючи зовнішні вхідні дані безпосередньо в рядок запиту [S1][S2].
Оскільки вхідні дані належним чином не ізольовані від структури запиту, інтерпретатор бази даних може виконувати частини введених користувачем даних як код SQL, а не розглядати їх як літеральні дані [S2]. Ця вразливість може виявлятися в різних частинах запиту, включаючи оператори SELECT, значення INSERT або оператори UPDATE [S1].
Конкретні виправлення та пом'якшення
Використовуйте параметризовані запити
Найефективнішим способом запобігання впровадження SQL є використання параметризованих запитів, також відомих як підготовлені оператори [S1]. Замість конкатенації рядків розробники повинні використовувати структуровані механізми, які забезпечують розділення даних і коду [S2].
Принцип найменших привілеїв
Програми повинні підключатися до бази даних, використовуючи найнижчі привілеї, необхідні для виконання їхніх завдань [S2]. Обліковий запис веб-програми не повинен мати адміністративних привілеїв і повинен бути обмежений певними таблицями або операціями, необхідними для його функціонування [S2].
Перевірка введення та кодування
Хоча перевірка вхідних даних не замінює параметризацію, вона забезпечує глибокий захист [S2]. Програми повинні використовувати стратегію «прийняти-відомо-добре», перевіряючи відповідність вхідних даних очікуваним типам, довжині та форматам [S2].
Як FixVibe перевіряє це
FixVibe уже охоплює SQL-ін’єкції через закритий модуль сканера active.sqli. Активне сканування запускається лише після підтвердження та атестації права власності на домен. Перевірка сканує кінцеві точки GET того самого походження з параметрами запиту, встановлює базову відповідь, шукає логічні аномалії, характерні для SQL, і повідомляє про знахідку лише після підтвердження часу для кількох тривалостей затримки. Сканування сховища також допомагає виявити першопричину раніше за допомогою code.web-app-risk-checklist-backfill, який позначає необроблені виклики SQL, створені за допомогою інтерполяції шаблону.
