FixVibe
Covered by FixVibecritical

SQL Injection: Спречување на неовластен пристап до базата на податоци

Инјекцијата SQL (SQLi) е критична ранливост каде што напаѓачите се мешаат со барањата за базата на податоци на апликацијата. Со инјектирање на злонамерна SQL синтакса, напаѓачите можат да ја заобиколат автентикацијата, да гледаат чувствителни податоци како лозинки и детали за кредитна картичка, па дури и да го компромитираат основниот сервер.

CWE-89

Влијание на SQL Injection

Вбризгување SQL (SQLi) му овозможува на напаѓачот да се меша со барањата што апликацијата ги поставува во нејзината база на податоци [S1]. Примарното влијание вклучува неовластен пристап до чувствителни податоци како што се кориснички лозинки, детали за кредитна картичка и лични информации [S1].

Покрај кражбата на податоци, напаѓачите честопати можат да ги менуваат или бришат записите на базата на податоци, што доведува до постојани промени во однесувањето на апликацијата или губење на податоци [S1]. Во случаите со висока сериозност, SQLi може да се ескалира за да се загрози заднината инфраструктура, да се овозможат напади за одбивање на услугата или да се обезбеди постојана задна врата во системите на организацијата [S1]ZXCVFIXZVIBETOKEN2.

Основна причина: небезбедно ракување со влезови

Основната причина за инјектирање 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 повици изградени со интерполација на шаблоните.