Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip apriboti duomenų bazės leidimus padeda užkirsti kelią SQL injekcijų atakoms


Kaip apriboti duomenų bazės leidimus padeda užkirsti kelią SQL injekcijų atakoms


Apriboję duomenų bazės leidimai padeda išvengti SQL injekcijos (SQLI) atakų pirmiausia sumažinant galimą užpuoliko žalos, kurią gali padaryti, jei jiems pavyks išnaudoti pažeidžiamumą. Šis požiūris grindžiamas mažiausiai privilegijos principu, o tai reiškia, kad vartotojams ar paraiškų sąskaitose suteikiama tik minimalūs leidimai, reikalingi užduotims atlikti, ir ne daugiau.

Čia yra išsamus paaiškinimas, kaip leidimų ribojimas padeda:

** 1. Riboja veiksmų, kuriuos užpuolikas gali atlikti
Jei su duomenų baze prijungta programa ar vartotojo abonementas turi tik prieigą prie konkrečių lentelių tik skaitymo, užpuolikas, kuris per tą sąskaitą naudoja SQL injekciją, negali modifikuoti, ištrinti ar įterpti duomenų. Šis izoliacija riboja atakos „sprogimo spindulį“, užkertant kelią duomenų sugadinimui ar neteisėtiems pokyčiams [3] [9]. Pvz., Jei paskyrą reikia tik paleisti pasirinkimo užklausas, joje neturėtų būti įterpimo, atnaujinimo, ištrinimo ar administracinių privilegijų.

** 2. Apsaugo neteisėtą prieigą prie duomenų, viršijančių būtinybę
Apribodami duomenų bazės leidimus tik reikalingomis lentelėmis ir operacijomis, užpuolikai negali pasiekti neskelbtinų duomenų, nepriklausančių teisėtų programos poreikių taikymo sričiai. Tai reiškia, kad net jei SQL injekcija yra sėkminga, užpuoliko galimybė išgauti ar manipuliuoti duomenimis apsiriboja tuo, ką gali pasiekti pažeista sąskaita [1] [2] [7].

** 3. Ribų pavojingų duomenų bazės funkcijų išnaudojimas
Kai kurios duomenų bazės funkcijos, tokios kaip operacinės sistemos komandos vykdymas ar neribotos saugomos procedūros, gali būti išnaudojamos, jei leidimai yra per platūs. Leidimų apribojimas išjungia arba riboja prieigą prie tokių savybių, sumažindamas SQL injekcijos ir susijusių išnaudojimų atakos paviršių [2] [9].

** 4. Sumažina privilegijų eskalavimo riziką
Jei duomenų bazės vartotojas veikia su didelėmis privilegijomis (pvz., Administratoriaus ar DBA vaidmenimis), sėkminga SQL injekcija gali visiškai kontroliuoti duomenų bazę, įskaitant lentelių kūrimą ar numesti ar net vykdyti komandas serveryje. Leidimų apribojimas neleidžia užpuolikams padidinti jų prieigos ribų, nei reikalauja paraiškos teisėtai [1] [6] [9].

** 5. Palaiko gynybą išsamiai
Nors vien tik leidimų apribojimas netrukdo SQL injekcijai, tai yra kritinis gynybos lygis, veikiantis kartu su įvesties patvirtinimu, parametrizuotomis užklausomis, saugomomis procedūromis ir žiniatinklio programų ugniasienėmis. Šis sluoksniuotas požiūris užtikrina, kad net jei vienas valdymas nepavyks, kiti padeda sulaikyti ataką [3] [7].

Apibendrinant galima pasakyti, kad apriboję duomenų bazės leidimai sumažina galimą SQL injekcijos poveikį užtikrinant, kad pažeistos sąskaitos negali atlikti kenksmingų veiksmų, viršijančių jų numatytą apimtį. Šis izoliacija padeda išvengti duomenų praradimo, neteisėto duomenų modifikavimo ir privilegijų eskalavimo, todėl SQL injekcijos atakos yra mažiau žalingos ir lengviau valdomos [1] [2] [3] [6] [9].

Citatos:
[1] https://cheatsheetseries.owasp.org/cheatsheets/SQL_INENTIME_PREVENTION_CHEAT_SHEET.HTML
[2] https://www.esecurityplanet.com/threats/how-to-prevent-sql innection-attacks/
[3] https://www.legitsecurity.com/aspm-knowledge-base/how-to-prevent-sql innection
[4] https://users.soe.ucsc.edu/~eaugusti/archive/365-spring16/365-files/lectures/365-lec14-security.pdf
[5] https://www.reddit.com/r/sql/comments/1c5m63s/SQL_INENTIM
[6] https://security.stackexchange.com/questions/90247/sql injection-attack-why-just-adjust-permissions
[7] https://www.cloudflare.com/learning/security/threats/how-to-prevens-sql-innety/
[8] https://stackoverflow.com/questions/1263218/if-my-database-user-is-read-only-why-do-i-tore-to-worry-out-sql innection
[9] https://www.enterpriedb.com/blog/protecting-against-sql injection