FixVibe
Covered by FixVibecritical

Впровадження SQL: запобігання несанкціонованому доступу до бази даних

Впровадження SQL (SQLi) є критичною вразливістю, через яку зловмисники втручаються в запити до бази даних програми. Впроваджуючи зловмисний синтаксис SQL, зловмисники можуть обійти автентифікацію, переглянути конфіденційні дані, такі як паролі та дані кредитної картки, або навіть скомпрометувати основний сервер.

CWE-89

Вплив впровадження 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, створені за допомогою інтерполяції шаблону.