SQL Injection jest jednym z najgroźniejszych ataków, który może dotknąć zarówno niewielkie firmy, jak i międzynarodowe korporacje. Podatność na tego rodzaju zagrożenie może być w firmie bardzo duża, a potencjalne szkody mogą być liczone w milionach złotych. Przyjrzyjmy się mechanizmom SQLi i metodom obrony przed tym atakiem.
SQL Injection – czym jest wstrzykiwanie zapytania?
SQL Injection (zwany też SQLi) to jeden z rodzajów ataku hakerskiego, który wziął swoją nazwę od mechanizmu „wstrzykiwania” złośliwego kodu do aplikacji webowej lub witryny internetowej. Podatność na ataki SQL Injection dotyczy przede wszystkim stron i aplikacji, w których użytkownik może generować dane wejściowe lub wysyłać zapytania do bazy danych – np. za pomocą formularza kontaktowego lub sekcji komentarzy.
Odpowiednio sformułowane zapytanie może zmanipulować bazą danych w taki sposób, że ta zwróci oszustowi takie informacje, jak nazwy i hasła innych użytkowników, dane kart płatniczych czy dane osobowe klientów. W niektórych przypadkach oszustom może udać się nawet zalogować do konta administratora bez znajomości hasła oraz nazwy użytkownika.
Jak dochodzi do ataku? Rodzaje SQL Injection
Atak SQL Injection może zostać przeprowadzony na kilka różnych sposobów. Do najczęściej stosowanych metod zaliczamy:
- Ataki SQLi bazujące na błędzie – haker wprowadza celowo nieprawidłowe zapytania, na co serwer odpowiada komunikatem o błędzie, zawierającym również wrażliwe informacje – np. o strukturze bazy danych.
- Ataki SQLi bazujące na operatorze UNION – pozwalają uzyskać nieautoryzowany dostęp do danych umieszczonych w innych tabelach bazy danych – np. haseł innych użytkowników.
- „Ślepe” ataki SQLi (ang.: Blind SQLi – polegają na manipulowaniu zapytaniami SQL w taki sposób, by na podstawie reakcji aplikacji (np. czas ładowania, pojawienie się konkretnego kodu błędu po przeładowaniu strony) haker mógł wydedukować, czy zapytanie było prawdziwe czy fałszywe. W ten sposób, zadając serię pytań typu prawda/fałsz, haker może poznać ważne informacje umieszczone w bazie nawet wtedy, gdy witryna nie wyświetli ich bezpośrednio na stronie.
Przykłady ataków SQL Injection z przeszłości
Choć przy obecnej wiedzy specjalistów i skuteczności rozwiązań cyberbezpieczeństwa SQL Injection wydaje się coraz mniej skutecznym atakiem, w rzeczywistości wciąż stanowi ogromne zagrożenie. Podatność na ataki SQLi od wielu lat należy do czołówki zestawienia największych cyberzagrożeń OWASP Top 10 – zestawienia najpoważniejszych zagrożeń bezpieczeństwa aplikacji webowych, opracowywane przez Open Web Application Security Project. Jasno wskazuje to na powszechne wykorzystywanie tego rodzaju cyberataku przez hakerów i potencjalnie duże szkody dla firm. O skali zagrożenia mogą świadczyć przykłady ataków na duże międzynarodowe korporacje. W 2015 roku brytyjska firma telekomunikacyjna TalkTalk padła ofiarą ataku SQLi przeprowadzonego przez hakera Daniela Kelleya. W wyniku ataku haker wykradł dane osobowe oraz informacje o numerach rachunków około 160 tys. klientów.
W 2008 roku doszło do jednego z najpoważniejszych w skutkach ataków SQL Injection. Ofiarą padli klienci firmy Heartland Payment Systems, zajmującej się przetwarzaniem płatności. W wyniku ataku hakerzy przejęli dane 100 milionów kart debetowych i kredytowych, w tym historie transakcji, numery ubezpieczeń społecznych i poufne informacje finansowe. Zdobyte dane były wystarczające do stworzenia nowych fizycznych kart płatniczych i kradzieży środków.
W przeszłości zdarzało się też odkryć poważne podatności w aplikacjach i witrynach dużych organizacji, które szczęśliwie nie zostały wykorzystane przez hakerów. Jednym z głośnych przykładów była luka w zabezpieczeniach Tesli, którą odkryła grupa pentesterów w 2014 roku. Specjalistom udało się wówczas w kontrolowany sposób wykraść dane użytkowników, uzyskując uprawnienia administracyjne za pomocą ataku SQL Injection.
Z kolei w 2019 roku odkryto poważną lukę w aplikacji Fortnite – jednej z najpopularniejszych gier z setkami milionów użytkowników. Podatność mogła doprowadzić do jednego z największych wycieków danych na świecie.
Jak bronić firmę przed SQL Injection?
Istnieje kilka sposobów zabezpieczenia aplikacji przed atakami SQL Injection. Jednym z nich jest parametryzacja poleceń (ang.: prepared statement, parameterized statement), czyli zastosowanie mechanizmu, który oddziela dane od zapytań SQL. Dzięki tej technice baza danych traktuje zapytanie użytkownika jako zwykły tekst, niezależnie od tego, jakich znaków i parametrów użyje.
Parametryzacja nie jest jednak metodą dającą 100% ochrony, a raczej dobrą praktyką w tworzeniu aplikacji internetowych. Podstawowym rozwiązaniem filtrującym ruch wchodzący i wychodzący z aplikacji oraz blokującym potencjalne zagrożenia jest Web Application Firewall (WAF) z oferty Netii. To specjalny rodzaj zapory, który pozwoli uniknąć skutków takich ataków, jak SQLi, DDoS, XSS (Cross-Site Scripting), brute force i wiele innych.
W cyberbezpieczeństwie wyjątkowo ważna jest też profilaktyka. Firma nie może zakładać, że jej aplikacja jest w 100% bezpieczna. Należy przyjąć, że nie jest ona wolna od wad i podatności, a do ich zlokalizowania użyć przeprowadzanych regularnie webowych testów penetracyjnych, np. w ramach profesjonalnych usług IT Security oraz skanów podatności. To procesy, które pozwalają spojrzeć na aplikację oczami potencjalnych przestępców.
Ciekawą i popularną strategią jest także zaoferowanie użytkownikom programu Bug Bounty, czyli określonych nagród w zamian za każdy zaraportowany błąd, lukę czy podatność. Odnalezienie podatności na SQLi jest zwykle wysoko wynagradzane przez firmy.
Formularz kontaktowy @Model.TitleTag>
Zostaw swoje dane kontaktowe, a nasz przedstawiciel handlowy
wkrótce skontaktuje się z Tobą
Formularz kontaktowy @Model.TitleTag>
Zostaw swoje dane kontaktowe, a nasz przedstawiciel handlowy
wkrótce skontaktuje się z Tobą
Inne formy kontaktu
-
Infolinia dla nowych klientów
(Codziennie 8:00 - 18:00) +48 22 35 81 550 -
Obsługa klienta i wsparcie techniczne
(Dostępne 24/7) 801 801 999
biznes@netia.pl -
Adres korespondencyjny Netia S.A.
skr. pocztowa nr 597
40-950 Katowice S105