Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Ако има нещо, което киберпрестъпниците обичат, това са данните. Откраднатите данни са много ценни на незаконните пазари и достъпът до частни бази данни може да бъде чудесен начин за злонамерените участници да печелят от своите начинания. Един от начините за достъп до лични данни е чрез SQL инжекция. Но какво точно представлява SQL инжекцията, как работи и може ли да се предотврати такава атака?

Какво е SQL инжекция?

Софтуерните програми разчитат на код, за да функционират. Кодът също е езикът, който машините използват за извършване на операции и може да се предлага в много форми (Python, JavaScript, C++ и т.н.). Често киберпрестъпниците могат да атакуват жертвите чрез код и SQL инжекциите (или SQLis) не са по-различни. Те позволяват на злонамерените участници да "инжектират" вреден код в SQL оператор.

Нека първо да разгледаме какво означава SQL.

instagram viewer

SQL означава език за структурирани заявки. Това е друг вид език за програмиране специално използвани при работа с бази данни. Разработен през 70-те години от IBM, SQL може да манипулира, съхранява и извлича информация от база данни. Много комуникационни системи за бази данни по света използват SQL, така че не е изненадващо, че заплахите са измислили начини да злоупотребяват с него, за да атакуват бази данни.

SQL изразите формират ключова част от комуникацията на базата данни. SQL оператор е команда който идва в много различни форми. Някои променят данни, други ги извличат или изтриват, а някои могат да променят структурата на самата база данни. Когато възникне SQL инжектиране, злонамереният код се инжектира в SQL оператор.

Разбира се, уебсайт или приложение трябва да използва езика за програмиране SQL, за да е възможно SQL инжектиране. Но как работи този вектор на атака?

Да приемем, че имате редовен ред код, използван от приложение. Когато киберпрестъпник вмъкне злонамерено SQL инжектиране, се добавя ред от код, който може да попречи на заявките, които самото приложение прави, изпраща до своята база данни. По този начин базата данни може да бъде експлоатирана по начин, който позволява на заплахата да преглежда данни, до които иначе не би имал достъп.

Оттук киберпрестъпникът може да открадне данни, за да ги използва директно или продайте го в тъмната мрежа или другаде. Те могат също да променят, добавят или изтриват данни от целевата база данни. В зависимост от степента на атаката с инжектиране на SQL може да се нанесат много щети. Ако има достъп до данни за плащане, номера на социална осигуровка или други видове лични данни, много хора могат да бъдат изложени на риск от експлоатация.

От друга страна, ако атакуващият успее значително да промени базата данни, големи участъци от данни могат да бъдат загубени завинаги. Като цяло, SQL инжекциите могат да унищожат цели бази данни само с една атака. Въпреки че съществуват от 1998 г., те все още са актуални и опасни в наши дни.

Както е установено от Open Web Application Security Project (OWASP), 274 000 случая на SQL инжекции бяха идентифицирани при тестване на приложения за наличие на такава атака през 2021 г.

Видовете SQL инжектиране

Има няколко различни вида SQL инжектиране, като основните три са сляпо, инжектиране в лентата и инжектиране извън лентата.

Сляпо (или инференциално) SQL инжектиране възниква, когато приложението или сайтът са атакувани от инжектиране, но предоставените HTTP (протокол за трансфер на хипертекст) отговори не съдържат резултата от SQL заявка. С други думи, никакви данни от атакуваната база данни не се дават на киберпрестъпника. И така, какъв е смисълът от това?

Използвайки сляпо SQL инжектиране, атакуващият изпраща данни до целевия сървър и след това може да различи определени неща за база данни чрез естеството на самия HTTP отговор. Освен това факторите, свързани с HTTP отговора, могат да помогнат на атакуващия да създаде друга, по-ефективна SQL инжекция за достъп до базата данни.

Има два ключови типа сляпо SQL инжектиране, известни като времеви и булеви. Тези два варианта са доста сходни по своята същност. Както булевото, така и базираното на времето SQL инжектиране изпраща масив от въпроси с отговор "да" или "не", въпреки че последният ще изисква базата данни да изчака известно време, преди да отговори на заявките.

След това има вътрешнолентови SQL инжекции. Вътрешните SQL инжекции позволяват на оператора да извърши атаката и да получи желания резултат, използвайки същия канал. Вътрешните SQL инжекции са най-често използваните, просто защото са най-лесни за изпълнение поради факта, че изискват само един канал.

И накрая, имате извънлентова SQL инжекция. Това по същество е алтернативната версия на вътрешнолентово SQL инжектиране, при което атакуващият не може да извърши атаката като цяло, използвайки един единствен канал. Като алтернатива може да се наложи атака да прибегне до извънлентово SQL инжектиране, ако целевият сървър просто не е достатъчно бърз, за ​​да предостави резултати.

Тези фактори правят процеса малко по-труден, което означава, че той трябва да разчита на определени функции, за да бъде активен в целевата база данни за успех. Например атакуваната платформа трябва да има липса на дезинфекция на входа. Поради това SQL инжекциите в лентата са много по-често срещани от SQL инжекциите извън лентата. Но все още се случват.

Могат ли да се избегнат SQL инжекции?

SQL инжекциите са по-голяма грижа за бизнеса и организациите, отколкото за обикновените хора. Но има неща, които тези потенциални цели могат да направят, за да намалят шанса да бъдат ударени от такава атака.

Дезинфекцията на входа е основната обичайна практика за избягване на SQL инжекции. Това е процес на филтриране, който сканира и почиства въведените опасни знаци. Ако SQL кодът се обработва, преди да бъде дезинфекциран, шансът за SQL инжекция естествено ще се увеличи.

Освен това параметризираните заявки могат да ви помогнат да избегнете SQL инжекции. Това са заявки, които изискват поне един параметър за изпълнение. Прилагането на параметри прави по-трудно за киберпрестъпниците да извършат успешно атака чрез SQL инжектиране.

Но няма сигурен начин за предотвратяване на SQL инжекция. Както е в случая с много кибератаки, е почти невъзможно да запазите вашите устройства и системи напълно херметически затворени. Когато става въпрос за SQL инжекции, най-доброто, което можете да направите, е да дезинфекцирате всички входове и да установите параметризирани заявки.

SQL инжекциите са остарели, но все още са заплаха

Въпреки че SQL инжекциите съществуват от повече от 20 години, те все още представляват риск за много уебсайтове и приложения. Така че е добра идея да имате предвид тази форма на атака и да предприемете необходимите стъпки, за да се опитате да я предотвратите, тъй като тя може да представлява заплаха за вашите бази данни в някакъв момент в бъдеще.