Въздействие на 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 извиквания, изградени с интерполация на шаблон.
