FixVibe
Covered by FixVibecritical

SQL Injection: прадухіленне несанкцыянаванага доступу да базы дадзеных

Ін'екцыя SQL (SQLi) - крытычная ўразлівасць, пры якой зламыснікі ўмешваюцца ў запыты да базы даных прыкладання. Укараняючы шкоднасны сінтаксіс SQL, зламыснікі могуць абыходзіць аўтэнтыфікацыю, праглядаць канфідэнцыяльныя даныя, такія як паролі і дадзеныя крэдытных карт, або нават скампраметаваць базавы сервер.

CWE-89

Уплыў SQL Injection

Ін'екцыя 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, створаныя з дапамогай інтэрпаляцыі шаблонаў.