Dopad SQL Injection
SQL injection (SQLi) umožňuje útočníkovi zasahovat do dotazů, které aplikace zadává do své databáze [S1]. Primární dopad zahrnuje neoprávněný přístup k citlivým údajům, jako jsou uživatelská hesla, údaje o kreditních kartách a osobní údaje [S1].
Kromě krádeže dat mohou útočníci často upravovat nebo mazat databázové záznamy, což vede k trvalým změnám v chování aplikací nebo ztrátě dat [S1]. Ve vysoce závažných případech lze SQLi eskalovat, aby ohrozila back-endovou infrastrukturu, umožnila útoky typu denial-of-service nebo poskytla trvalá zadní vrátka do systémů organizace [S1][S2].
Hlavní příčina: Nebezpečná manipulace se vstupy
Hlavní příčinou SQL injection je nesprávná neutralizace speciálních prvků použitých v SQL příkazu [S2]. K tomu dochází, když aplikace konstruuje dotazy SQL zřetězením externě ovlivněného vstupu přímo do řetězce dotazu [S1][S2].
Protože vstup není správně izolován od struktury dotazu, může databázový interpret provádět části uživatelského vstupu jako kód SQL namísto toho, aby s nimi zacházel jako s doslovnými daty [S2]. Tato chyba zabezpečení se může projevit v různých částech dotazu, včetně příkazů SELECT, hodnot INSERT nebo příkazů UPDATE [S1].
Konkrétní opravy a zmírnění
Použijte parametrizované dotazy
Nejúčinnějším způsobem, jak zabránit vkládání SQL, je použití parametrizovaných dotazů, známých také jako připravené příkazy [S1]. Namísto zřetězení řetězců by vývojáři měli používat strukturované mechanismy, které vynucují oddělení dat a kódu [S2].
Princip nejmenšího privilegia
Aplikace by se měly k databázi připojit pomocí nejnižších oprávnění požadovaných pro jejich úkoly [S2]. Účet webové aplikace by neměl mít administrátorská oprávnění a měl by být omezen na konkrétní tabulky nebo operace nezbytné pro jeho funkci [S2].
Ověření a kódování vstupu
I když nenahrazuje parametrizaci, ověření vstupu poskytuje hloubkovou ochranu [S2]. Aplikace by měly používat strategii přijmout-známe-dobře, ověřující, že vstup odpovídá očekávaným typům, délkám a formátům [S2].
Jak to testuje FixVibe
FixVibe již pokrývá vkládání SQL prostřednictvím hradlového modulu skeneru active.sqli. Aktivní kontroly se spouští pouze po ověření vlastnictví domény a atestaci. Kontrola prochází koncové body GET stejného původu s parametry dotazu, vytváří základní odpověď, hledá booleovské anomálie specifické pro SQL a hlásí nález až po potvrzení načasování přes více délek zpoždění. Prohledávání úložiště také pomáhá dříve zachytit hlavní příčinu pomocí code.web-app-risk-checklist-backfill, která označuje nezpracovaná volání SQL vytvořená pomocí interpolace šablony.
