Co to jest atak SQL injection?
Możesz nie wiedzieć, co to jest atak SQL injection (SQLI) ani jak działa, ale na pewno słyszałeś o ofiarach. Target, Yahoo, Zappos, Equifax, Epic Games, TalkTalk, LinkedIn i Sony Pictures—to wszystko firmy, które zostały zhakowane przez cyberprzestępców za pomocą SQL injections.
SQLI to rodzaj ataku, w którym cyberprzestępcy wykorzystują luki w oprogramowaniu aplikacji webowych, aby kraść, usuwać lub modyfikować dane, albo uzyskać kontrolę administracyjną nad systemami, na których działają atakowane aplikacje.
Badacze ds. cyberbezpieczeństwa uznają SQLI za jedno z najmniej skomplikowanych zagrożeń cybernetycznych, które łatwo jest obronić. Malwarebytes Labs umieściło SQLI na trzecim miejscu w Najgłupsze Cyberzagrożenia, które mimo wszystko działają, podkreślając, że SQLI to znany, przewidywalny atak z łatwymi do wprowadzenia środkami zaradczymi.
Ataki SQLI są tak łatwe, że atakujący mogą znajdować podatne strony korzystając z zaawansowanych wyszukiwań Google, zwanych Google Dorking. Gdy znajdą odpowiedni cel, atakujący mogą użyć zautomatyzowanych programów, które efektywnie przeprowadzą dla nich atak. Wystarczy wpisać URL strony docelowej i patrzeć, jak kradzione dane napływają.
A jednak ataki SQLI są powszechne i dzieją się każdego dnia. W rzeczywistości, jeśli masz stronę internetową lub biznes on-line, cyberprzestępcy prawdopodobnie już próbowali włamać się na Twoją stronę przez SQLI. Badanie Ponemon Institute na temat zagrożeń SQL Injection & Ostatnich Naruszeń w Handlu Detalicznych wykazało, że 65% przebadanych firm padło ofiarą ataku opartego na SQLI.
Często atakowane aplikacje webowe to: strony społecznościowe, detaliści online oraz uniwersytety. Małe i średniej wielkości przedsiębiorstwa są szczególnie narażone, gdyż często nie znają technik używanych przez cyberprzestępców w ataku SQLI i tym samym nie wiedzą, jak się obronić przed takim atakiem.
Z tego względu zróbmy pierwsze kroki w obronie przed SQL injection, edukując się w tym temacie. Oto wprowadzenie do SQL injections.
Jak działa SQL injection?
Stworzony na początku lat 70-tych, SQL (skrót od structured query language) jest jednym z najstarszych języków programowania, który nadal jest używany do zarządzania bazami danych online. Te bazy danych zawierają takie rzeczy jak ceny i stany magazynowe dla stron zakupów online. Kiedy użytkownik musi uzyskać dostęp do informacji w bazie danych, SQL jest używany, aby dostać się do tych danych i przedstawić je użytkownikowi. Ale te bazy danych mogą również zawierać bardziej wrażliwe i cenne dane, takie jak nazwy użytkowników i hasła, informacje o kartach kredytowych i numery ubezpieczenia społecznego. To tutaj wkraczają SQL injections.
Krótkim opisem, SQL injection to sytuacja, gdy przestępcy komputerowi wprowadzają złośliwe polecenia do formularzy webowych, jak pole wyszukiwania, pole logowania lub URL, na niezabezpieczonej stronie, w celu nieautoryzowanego dostępu do wrażliwych i cennych danych.
Oto przykład. Wyobraź sobie, że wchodzisz na swoją ulubioną stronę sklepu internetowego z odzieżą. Szukasz skarpet i oglądasz świat technologii w jaskrawych kolorowych skarpetkach, wszystkie dostępne za kliknięciem myszy. Cuda technologii! Każda skarpetka, którą widzisz, istnieje w bazie danych na jakimś serwerze. Kiedy znajdujesz skarpetkę, która Ci się podoba, a klikniesz na nią, wysyłasz żądanie do bazy danych skarpetek, a strona zakupowa odpowiada danymi na temat skarpetki, którą kliknąłeś. Teraz wyobraź sobie, że Twoja ulubiona strona zakupowa jest zbudowana w sposób niedbały, pełna luk w zabezpieczeniach SQL.
Cyberprzestępca może zmanipulować zapytania do bazy danych w taki sposób, że żądanie o informacje o parze skarpet zwraca numer karty kredytowej nieszczęsnego klienta. Powtarzając ten proces wielokrotnie, cyberprzestępca może zagłębiać się w bazę danych i kraść wrażliwe informacje o każdym klientu, który kiedykolwiek robił zakupy na Twojej ulubionej stronie odzieżowej—w tym o Tobie. Rozważając tę myśl jeszcze dalej, wyobraź sobie, że jesteś właścicielem tej strony z odzieżą. Masz na głowie ogromny wyciek danych.
Jedna atak SQLI może dostarczyć cyberprzestępcom dane osobowe, e-maile, loginy, numery kart kredytowych i numery ubezpieczenia społecznego milionów konsumentów. Cyberprzestępcy mogą następnie sprzedać te dane osobowe na najciemniejszych zakątkach dark web, aby zostały użyte do wszelkiego rodzaju nielegalnych celów.
Skradzione e-maile mogą być użyte do phishingu i ataków malspam. Ataki malspam mogą z kolei zainfekować ofiary wszelkiego rodzaju destrukcyjnym złośliwym oprogramowaniem jak ransomware, adware, cryptojackers i Trojany (np. Emotet), żeby wymienić tylko kilka. Skradzione numery telefonów dla urządzeń mobilnych Android i iOS mogą być celem robocalls i spamu SMS.
Skradzione dane logowania z serwisów społecznościowych mogą być używane do wysyłania spamu i kradzieży kolejnych logowań do innych stron. Malwarebytes Labs wcześniej informowało o zhakowanych kontach LinkedIn, których używano do wysyłania wiadomości InMail ze złośliwymi linkami, które były fałszywie przedstawiane jako strona logowania do Google Docs, co pozwalało cyberprzestępcom na zdobycie nazw użytkowników i haseł Google.
Jaka jest historia SQL injections?
Eksploit SQL injection został po raz pierwszy udokumentowany w 1998 roku przez badacza i hakera Jeffa Forristala. Jego odkrycia zostały opublikowane w długo działającej zine hakerskiej Phrack. Pisząc pod pseudonimem Rain Forest Puppy, Forristal wyjaśnił jak osoba z podstawowymi umiejętnościami kodowania mogła nieautoryzowanie dołączyć polecenia SQL do legalnych poleceń SQL i wydobyć wrażliwe informacje z bazy danych niezabezpieczonej strony.
Kiedy Forristal powiadomił firmę Microsoft o tym, jak podatność wpływa na ich popularny produkt SQL Server, nie potraktowali tego jako problemu. Jak ujął to Forristal: „Według nich [Microsoft], to, co zamierzasz przeczytać, nie jest problemem, więc nie martw się robieniem czegokolwiek, by to powstrzymać.”
To, co sprawia, że brak reakcji Microsoftu jest szokujący, to fakt, że wiele branż i instytucji bardzo poważnie polegały (wtedy i teraz) na bazach danych tej firmy, by utrzymać swoje operacje, w tym handel detaliczny, edukacja, opieka zdrowotna, bankowość i zasoby ludzkie. To prowadzi nas do następnego wydarzenia w historii SQLI—pierwszego dużego ataku SQLI.
W 2007 roku największa sieć sklepów convenience w Stanach Zjednoczonych, 7-Eleven, padła ofiarą ataku SQLI. Rosyjscy hakerzy użyli SQL injection, aby włamać się na stronę internetową 7-Eleven i użyli tego jako skokowego punktu do bazy danych debetowych kart klienta sieci. To pozwoliło im potem wypłacać gotówkę w Rosji. Jak podało magazyn Wired, przestępcy zgarnęli w sumie dwa miliony dolarów.
Nie wszystkie ataki SQLI są motywowane chciwością. W innym godnym uwagi przykładzie z 2007 roku cyberprzestępcy użyli SQLI, aby uzyskać kontrolę administracyjną nad dwoma stronami związanymi z armią USA i przekierowali odwiedzających na strony z propagandą antyamerykańską i antyizraelską.
Wyciek danych z 2008 roku na MySpace należy do największych ataków na konsumencką stronę internetową. Cyberprzestępcy ukradli e-maile, nazwiska oraz częściowe hasła prawie 360 milionów kont. I to dlatego nie używamy tych samych haseł na różnych stronach.
Tytuł za najbardziej rażący brak bezpieczeństwa otrzymuje Equifax. Wyciek danych środkowej wielkości organizacji w 2017 roku ujawnił ekstremalnie osobiste informacje (tj. nazwiska, numery ubezpieczenia społecznego, daty urodzenia i adresy) dla 143 milionów konsumentów. W przypadku organizacji, która działa jako bramkarz informacji dla każdego Amerykanina, z wyjątkiem tych żyjących poza siecią, można pomyśleć, że podejmą środki ostrożności przeciwko podstawowemu atakowi SQLI. Jeszcze przed wyciekiem ostrzegano Equifax przez firmę badającą bezpieczeństwo IT, że są podatni na atak SQLI, ale biuro nie wzięło tego na poważnie aż było za późno.
W tym, co uważane jest za najbardziej przerażający hack w historii, atak SQLI na producenta zabawek Vtech w 2015 roku doprowadził do naruszenia danych prawie pięciu milionów rodziców i 200,000 dzieci. Rozmawiając z Motherboard, internetowym wydawnictwem multimedialnym, odpowiedzialny haker twierdził, że nie miał żadnych planów na wykorzystanie tych danych i nie opublikował ich nigdzie online. Jednakże, haker także wyjaśnił, że dane były bardzo łatwe do kradzieży i ktoś inny mógł je zdobyć pierwszy. To mrożące pocieszenie.
Przechodząc do dnia dzisiejszego, atak SQLI nadal jest aktualny. Co trzy lata Open Web Application Security Project (OWASP) sporządza ranking 10 Najbardziej Krytycznych Ryzykowych Zagadnień Bezpieczeństwa Aplikacji Webowych. W najnowszej edycji z 2017 roku atak SQLI znalazł się na miejscu pierwszym.
Poza długowiecznością ataku SQLI ciekawe jest, że ataki SQLI nie zmieniły się ani nie ewoluowały w żaden sposób. Ataki SQLI działają i będą działać, dopóki ludzie nie zmienią swojego podejścia do bezpieczeństwa IT. Bądź tą zmianą.
Aktualności na temat SQL injections
- Co to jest honeypot? Jak są używane w cyberbezpieczeństwie
- Wywiad z łowcą błędów: Youssef Sammouda
- Przewodnik po "zero-day" na 2020: Ostatnie ataki i zaawansowane techniki zapobiegawcze
- Luki w finansowych aplikacjach mobilnych narażają konsumentów i firmy na ryzyko
- Jak zabezpieczyć swój system zarządzania treścią
- Wyjaśnienie: SQL injection
- OWASP top ten – Nudne bezpieczeństwo, które się opłaca
- Najgłupsze cyberzagrożenia, które nadal działają
Jak SQL injections wpływają na moje przedsiębiorstwo?
Jak wynika z naszego raportu o Taktykach i Technikach Cyberprzestępczości, cyberataki (wszelkiego rodzaju) na firmy wzrosły o 55% w drugiej połowie 2018 roku, podczas gdy ataki na indywidualnych konsumentów wzrosły tylko o 4%. Statystyki nie są zaskakujące. Firmy z kiepskim bezpieczeństwem stanowią miękki cel dla przestępców, mając skarbnicę wartościowych danych wartych miliony.
Przeciwnie, firma będąca centrum naruszenia danych może spodziewać się wypłaty milionów. Badanie IBM wykazało, że średni koszt naruszenia danych, wliczając w to naprawę i kary, wynosi 3,86 miliona dolarów. Wcześniej wspomniany wyciek danych z LinkedIn kosztował sieć społecznościową 1,25 miliona dolarów w sprawie ugodowej poza sądem.
Po swoim wycieku danych, Target był zmuszony zapłacić największą sumę na rekordzie—18,5 miliona dolarów—aby zakończyć śledztwa prowadzone przez wiele stanów. To było dodatkowo do 10 milionów dolarów, które Target zapłacił, aby zakończyć pozew zbiorowy wytoczony przez konsumentów.
Owszem, są to ogromne wycieki danych dotyczące milionów konsumentów. Jednak małe i średniej wielkości firmy mogą wciąż spodziewać się wypłaty 148 dolarów za każdy skradziony rekord konsumencki.
Morał z tej historii? Traktuj swoje bezpieczeństwo poważnie i unikaj bycia "Targetem" dla cyberprzestępców.
Jak mogę się chronić przed SQL injections?
Zostawiając na bok te wszystkie lamenty, jesteś tu, ponieważ wiesz, że SQL injections stanowią poważne zagrożenie. Teraz, zróbmy coś z tym. Oto kilka wskazówek, jak chronić swój biznes przed atakami SQL injection.
Zaktualizuj swoje oprogramowanie do zarządzania bazami danych. Twoje oprogramowanie ma wady już od producenta. To jest fakt. Nie istnieje coś takiego jak bezbłędne oprogramowanie. Cyberprzestępcy mogą wykorzystać te luki w zabezpieczeniach oprogramowania, albo exploity, za pomocą SQLI. Możesz się chronić po prostu łatając i aktualizując oprogramowanie do zarządzania bazami danych.
Egzekwuj zasadę najmniejszych uprawnień (PoLP). PoLP oznacza, że każde konto posiada tylko tyle dostępu, ile potrzebuje do wykonania swojej pracy i nic więcej. Na przykład, konto webowe, które potrzebuje jedynie dostępu do odczytu danej bazy danych, nie powinno mieć możliwości zapisu, edycji ani zmiany danych w jakikolwiek sposób.
Używaj przygotowanych instrukcji lub procedur przechowywanych. W przeciwieństwie do dynamicznego SQL, przygotowane instrukcje ograniczają zmienne wchodzące w polecenia SQL. W ten sposób cyberprzestępcy nie mogą zamieszczać złośliwych SQL injections na legalnych instrukcjach SQL. Procedury przechowywane podobnie ograniczają to, co mogą zrobić cyberprzestępcy, przechowując instrukcje SQL w bazie danych, które są wykonywane przez użytkownika z poziomu aplikacji webowej.
Zatrudniać kompetentnych, doświadczonych programistów. SQLI attacks często wynikają z niestarannie napisanego kodu. Przekaż swoim programistom wcześniej, jakie masz oczekiwania dotyczące bezpieczeństwa.
Co zrobić, jeśli moje dane osobowe zostały skradzione w wyniku naruszenia danych? Powinieneś zapoznać się z naszym spisem kontrolnym wycieku danych. Tam dowiesz się wszystkiego o sprzątaniu i pozostaniu bezpiecznym po tym, jak naruszenie danych przez SQLI wpłynie na Ciebie.
Odwiedź OWASP. Open Web Application Security Project, w skrócie OWASP, to czołowy autorytet w dziedzinie aplikacji internetowych, który oferuje mnóstwo dodatkowych materiałów na temat jak zapobiegać atakom SQL injection.
A jeśli ciągle nie masz dość ataków SQL injection, zajrzyj na blog Malwarebytes Labs, aby poznać najnowsze wiadomości ze świata zagrożeń cybernetycznych i cyberbezpieczeństwa.