Obmedzenie povolení na databázu pomáha predchádzať útokom SQL Injekcie (SQLI) predovšetkým znížením potenciálneho poškodenia, ktoré môže útočník spôsobiť, ak sa im podarí využiť zraniteľnosť. Tento prístup je založený na zásade najmenších privilégií, čo znamená, že udeľujú používateľom alebo aplikačným účtom iba minimálne povolenia potrebné na vykonávanie ich úloh a nič viac.
Tu je podrobné vysvetlenie toho, ako pomáha obmedzujúce povolenia:
** 1. Obmedzuje rozsah akcií, ktoré môže útočník vykonať
Ak má aplikácia alebo užívateľský účet pripojený k databáze iba prístup iba na čítanie k konkrétnym tabuľkám, útočník, ktorý využíva vstrekovanie SQL prostredníctvom tohto účtu, nemôže upraviť, odstrániť alebo vložiť údaje. Toto zadržiavanie obmedzuje „polomer blast“ útoku, ktorý zabraňuje korupcii údajov alebo neoprávnené zmeny [3] [9]. Napríklad, ak účet potrebuje iba spustiť výberové dotazy, nemal by mať vložiť, aktualizovať, odstraňovať alebo administratívne oprávnenia.
** 2. Zabraňuje neoprávnenému prístupu k údajom nad nevyhnutnosťou
Obmedzením povolení na databázu iba na potrebné tabuľky a operácie nemôžu útočníci získať prístup k citlivým údajom mimo rozsahu legitímnych potrieb aplikácie. To znamená, že aj keď je injekcia SQL úspešná, schopnosť útočníka extrahovať alebo manipulovať s údajmi je obmedzená na to, čo má ohrozený účet prístup k [1] [2] [7].
** 3. Obmedzuje využívanie nebezpečných funkcií databázy
Niektoré funkcie databázy, ako napríklad vykonávanie príkazov operačného systému alebo spustenie neobmedzených uložených postupov, sa dajú využiť, ak sú povolenia príliš široké. Obmedzenie povolení deaktivuje alebo obmedzuje prístup k takýmto vlastnostiam, čím sa zníži povrch útoku na vstrekovanie SQL a súvisiace vykorisťovania [2] [9].
** 4. Znižuje riziko eskalácie privilégií
Ak užívateľ databázy beží s vysokými privilégiami (napr. Roly Admin alebo DBA), úspešná injekcia SQL môže viesť k úplnej kontrole nad databázou vrátane vytvorenia alebo vyhodenia tabuliek alebo dokonca vykonávania príkazov na serveri. Obmedzenie povolení bráni útočníkom v eskalácii ich prístupu nad rámec toho, čo žiadosť legitímne vyžaduje [1] [6] [9].
** 5. Podporuje obranu do hĺbky
Aj keď samotné obmedzenie povolení nezabráni injekcii SQL, je to kritická vrstva obrany, ktorá funguje spolu s validáciou vstupu, parametrizovanými dotazmi, uloženými postupmi a bránami webových aplikácií. Tento vrstvený prístup zaisťuje, že aj keď zlyhá jedna kontrola, iní pomáhajú obsahovať útok [3] [7].
Stručne povedané, obmedzenie povolení na databázu znižuje potenciálny vplyv vstrekovania SQL zabezpečením toho, aby narušené účty nemohli vykonávať škodlivé kroky mimo ich zamýšľaného rozsahu. Toto zadržiavanie pomáha predchádzať strate údajov, neoprávnenej zmene údajov a eskalácii privilégií, vďaka čomu sú útoky na vstrekovanie SQL menej škodlivé a ľahšie sa spravujú [1] [3] [6] [9].
Citácie:
[1] https://cheatsheetseries.owasp.org/cheatsheets/sql_incance_prevention_cheat_sheet.html
[2] https://www.esecurityPlanet.com/threats/how-to-prevent-sql-incpecon-attacks/
[3] https://www.legitsecurity.com/aspm-nanotledge-base/how-to-prevent-sql-inccácie
[4] https://users.soe.ucsc.edu/~eaugusti/archive/365-pring16/365-files/lectures/365-lec14-security.pdf
[5] https://www.reddit.com/r/sql/comments/1c5m63s/sql_incance_prevention_help/
[6] https://security.stackexchange.com/questions/90247/sql-inconcy-attack-why-not--Just-adjust-permissions
[7] https://www.cloudflare.com/learning/security/threats/how-to-prevent-sql-incance/
[8] https://stackoverflow.com/questions/1263218/if-my-database-user-is-read--why-why-a-i-i-i-worry-worry-about-about-sql-injekcia
[9] https://www.enterprisedb.com/blog/protecting-against-sql-injekcie