FixVibe
Covered by FixVibecritical

SQL Injection: Zabránenie neoprávnenému prístupu k databáze

SQL injection (SQLi) je kritická chyba zabezpečenia, pri ktorej útočníci zasahujú do databázových dotazov aplikácie. Vložením škodlivej syntaxe SQL môžu útočníci obísť autentifikáciu, zobraziť citlivé údaje, ako sú heslá a podrobnosti o kreditných kartách, alebo dokonca ohroziť základný server.

CWE-89

Vplyv SQL Injection

SQL injection (SQLi) umožňuje útočníkovi zasahovať do dopytov, ktoré aplikácia zadáva do svojej databázy [S1]. Primárny vplyv zahŕňa neoprávnený prístup k citlivým údajom, ako sú heslá používateľov, podrobnosti o kreditných kartách a osobné informácie [S1].

Okrem krádeže údajov môžu útočníci často upravovať alebo mazať databázové záznamy, čo vedie k trvalým zmenám v správaní aplikácií alebo strate údajov [S1]. Vo veľmi závažných prípadoch je možné SQLi eskalovať, aby sa ohrozila back-endová infraštruktúra, umožnili útoky typu denial-of-service alebo poskytli trvalé zadné vrátka do systémov organizácie [S1][S2].

Hlavná príčina: Nebezpečná manipulácia so vstupmi

Hlavnou príčinou vstrekovania SQL je nesprávna neutralizácia špeciálnych prvkov použitých v príkaze SQL [S2]. K tomu dochádza, keď aplikácia vytvára dotazy SQL zreťazením externe ovplyvneného vstupu priamo do reťazca dotazu [S1][S2].

Pretože vstup nie je správne izolovaný od štruktúry dotazu, databázový interpret môže vykonávať časti užívateľského vstupu ako kód SQL namiesto toho, aby ho považoval za doslovné údaje [S2]. Táto chyba zabezpečenia sa môže prejaviť v rôznych častiach dotazu vrátane príkazov SELECT, hodnôt INSERT alebo príkazov UPDATE [S1].

Konkrétne opravy a zmiernenia

Použite parametrizované dopyty

Najúčinnejším spôsobom, ako zabrániť vstrekovaniu SQL, je použitie parametrizovaných dotazov, známych aj ako pripravené príkazy [S1]. Namiesto zreťazenia reťazcov by vývojári mali používať štruktúrované mechanizmy, ktoré vynucujú oddelenie údajov a kódu [S2].

Princíp najmenších privilégií

Aplikácie by sa mali pripojiť k databáze s použitím najnižších privilégií požadovaných pre ich úlohy [S2]. Účet webovej aplikácie by nemal mať oprávnenia správcu a mal by byť obmedzený na špecifické tabuľky alebo operácie potrebné pre jeho funkciu [S2].

Overenie vstupu a kódovanie

Hoci nie je náhradou za parametrizáciu, validácia vstupu poskytuje hĺbkovú ochranu [S2]. Aplikácie by mali používať stratégiu akceptovať-známe-dobre, overujúc, že ​​vstup zodpovedá očakávaným typom, dĺžkam a formátom [S2].

Ako to testuje FixVibe

FixVibe už pokrýva SQL vstrekovanie cez hradlovaný modul skenera active.sqli. Aktívne kontroly sa spúšťajú až po overení vlastníctva domény a atestácii. Kontrola prehľadáva koncové body GET rovnakého pôvodu s parametrami dotazu, vytvára základnú odpoveď, hľadá booleovské anomálie špecifické pre SQL a hlási nález až po potvrdení načasovania v rámci viacerých dĺžok oneskorenia. Kontroly úložiska tiež pomáhajú zachytiť hlavnú príčinu skôr prostredníctvom code.web-app-risk-checklist-backfill, ktoré označuje nespracované volania SQL vytvorené pomocou interpolácie šablón.