Data dodania: 18-05-2025
Znany również jako:
Wstrzykiwanie SQL
Definicja SQL Injection
SQL Injection (SQLi) to technika ataku polegająca na wstrzyknięciu złośliwego kodu SQL do zapytania generowanego przez aplikację internetową. Umożliwia to atakującemu modyfikację logiki zapytania, obejście mechanizmów uwierzytelniania, kradzież danych, ich modyfikację lub trwałe usunięcie z bazy danych.
Mechanizm działania
Atak SQLi wykorzystuje nieprawidłową walidację danych wejściowych w warstwie aplikacyjnej. Przykład:
SELECT * FROM users WHERE username = '$input' AND password = '$input';
Jeśli użytkownik wprowadzi admin'--
, to zapytanie zmieni się w:
SELECT * FROM users WHERE username = 'admin'--' AND password = '';
Komentarz --
ignoruje dalszą część zapytania, co może skutkować nieautoryzowanym dostępem.
Typowe cele ataku SQLi
- Kradzież danych – np. listy użytkowników, hasła, dane osobowe.
- Zmiana danych – np. saldo konta, poziom uprawnień.
- Usunięcie danych – poprzez komendy typu
DROP TABLE
. - Zdalne wykonanie kodu – w zaawansowanych przypadkach na bazach z dostępem do systemu operacyjnego.
Klasyfikacja SQL Injection
Typ | Opis |
---|---|
Classic SQLi | Bezpośrednie wstrzyknięcie i wykonanie kodu SQL. |
Blind SQLi | Brak jawnych komunikatów zwrotnych, odpowiedzi zależą od logiki. |
Time-based SQLi | Wnioskowanie o odpowiedziach na podstawie opóźnień w odpowiedzi. |
Error-based SQLi | Pozyskiwanie danych przez analizę komunikatów błędów SQL. |
Second-order SQLi | Wstrzyknięcie z opóźnionym wykonaniem (np. podczas przetwarzania). |
Powiązania z innymi obszarami
- Pentest – SQLi jest standardowym przypadkiem testowym w OWASP WSTG i testach black-box/grey-box.
- CVE – wiele podatności SQLi posiada przypisane identyfikatory w systemie CVE.
- SIEM/SOC – ataki SQLi generują wzorce logów wykrywane przez systemy SIEM i analizowane przez zespoły SOC.
- Compliance – ujawnienie danych przez SQLi może naruszać GDPR, PCI-DSS i inne regulacje.
Przykładowe narzędzia detekcji
- Burp Suite – ręczne i automatyczne testy wstrzyknięć.
- sqlmap – narzędzie open-source do automatyzacji wykrywania i eksploatacji SQLi.
- WAF – zapory aplikacyjne wykrywające wzorce charakterystyczne dla SQL Injection.
Dobre praktyki ochrony
- Parametryzacja zapytań (prepared statements) – oddzielenie kodu od danych.
- ORM i API bazodanowe – zamiast surowych zapytań SQL.
- Filtrowanie i walidacja wejścia – whitelist zamiast blacklist.
- Minifikacja uprawnień DB – konto aplikacji z minimalnymi możliwymi uprawnieniami.
- Monitoring i alerty – logowanie nietypowych zapytań do SIEM.
Standardy i referencje
- OWASP Top 10 (A03:2021) – SQLi w kategorii Injection.
- ISO 27001 / Annex A.12.2.1 – kontrola danych wejściowych i wyjściowych.
- NIST SP 800-53 / SA-11 – bezpieczeństwo aplikacji i testy penetracyjne.
Wyzwania
- Fałszywe pozytywy – trudność w automatycznej detekcji bez kontekstu.
- Dynamika aplikacji – SPA, API i ORM mogą maskować wektory ataku.
- Brak szkoleń – deweloperzy nieświadomi zagrożeń nadal stosują raw SQL.