Luki w zabezpieczeniach oprogramowania to jeden z tych problemów, które mogą potencjalnie dotknąć wszystkich użytkowników. Luka to błąd w implementacji programu, który może zostać wykorzystany przez osoby atakujące w celu uzyskania nieautoryzowanego dostępu do danych, wstrzyknięcia szkodliwego kodu lub spowodowania awarii systemu. W większości przypadków, luki wynikają z pominięcia jakichś szczegółów na etapie projektowania, nie zaś z błędów w programowaniu. Czasami system może wydawać się praktycznie niepodatny na ataki na etapie projektowania, później jednak, w którymś momencie, powstaje nowa technologia i hakerzy udowodniają, że taki system można skutecznie zaatakować. Dobrym przykładem jest DES – algorytm szyfrowania z symetrycznym kluczem, który został opracowany w 1975 r. i był w owym czasie uważany za niezawodny. Jednak w 1990 roku został złamany w ciągu 39 dni przy użyciu ogromnej sieci komputerowej. Stworzony w 1998 r. superkomputer zdołał złamać DES w ciągu mniej niż trzech dni.
Ciągłe testowanie popularnego oprogramowania w celu zidentyfikowania luk w zabezpieczeniach oraz publikowanie łat w celu usunięcia zidentyfikowanych luk stanowi część normalnego cyklu życia programu. Im bardziej wyrafinowany i popularny program, tym większe szanse, że luka zostanie wykryta.
Poszukiwanie luk w zabezpieczeniach
Większość twórców próbuje niezwłocznie usunąć wszystkie luki znalezione w ich produktach. Sami analizują swoje oprogramowanie lub wykorzystują do tego ekspertów zewnętrznych. Jednak na luki polują również zewnętrzni badacze. Niektórzy robią to po to, aby poprawił się ogólny poziom bezpieczeństwa online. Innym płacą za szukanie luk w zabezpieczeniach. Jeszcze inni wolą sprzedawać informacje na temat wszelkich wykrytych luk na czarnym rynku.
Robią to, ponieważ informacje dotyczące nowych luk są niezwykle cenne dla cyberprzestępców. Jeśli badacz znajdzie dziurę w systemie i udowodni, że można ją wykorzystać w praktyce (tzn. jeśli napisze exploita), może zarobić na czarnym rynku dziesiątki tysięcy dolarów. Istnieje cały sektor cyberprzestępczego podziemia, który specjalizuje się w znajdywaniu i sprzedawaniu luk w zabezpieczeniach.
Na szczęście, biznes ten nie działa na skalę masową. Jedną z przyczyn jest to, że nie wszystkie luki mogą być wykorzystane w realny świecie. Często niezbędna jest kombinacja różnych warunków, aby mogła zostać wyrządzona realna szkoda, a szanse na wystąpienie takiej kombinacji nie są zbyt duże. Drugą przyczyną jest to, że aby napisać skutecznego exploita, programista musi posiadać duże umiejętności, a takich nie istnieje wielu.
Kolejnym sposobem na zarobienie pieniędzy na lukach w zabezpieczeniach jest sprzedanie ich innym firmom, które na pierwszy rzut oka wydają się nie mieć nic wspólnego z przestępczością. Tak właśnie postępują niektórzy badacze. Z drugiej strony, firmy te mogą być zamieszane w tworzenie oprogramowania szpiegującego dla rządów lub służb specjalnych, dlatego luki te tak naprawdę będą wykorzystywane w celu nielegalnego manipulowania systemami informacyjnymi. Co więcej, okazuje się, że bezpieczeństwo takich firm nie zawsze jest na takim poziomie, na jakim powinno być, dlatego od czasu do czasu strony trzecie są w stanie uzyskać dostęp do ich wiedzy, co powoduje poważne konsekwencje.
Idealiści, którzy szukają luk ze względu na powszechne bezpieczeństwo, stoją przed dylematem. Z jednej strony, im później poinformują publicznie o ich wykryciu, tym więcej czasu będą mieli twórcy, aby naprawić problem. Z drugiej strony, im wcześniej opublikują informacje, tym wcześniej użytkownicy dowiedzą się o niebezpieczeństwie, jakie stwarza dana luka. Teoretycznie, cyberprzestępcy mogą zidentyfikować lukę i natychmiast ją wykorzystać. Trzeba również pamiętać, że ujawnienie informacji nieuchronnie prowadzi do prób wykorzystania nowo wykrytej luki w zabezpieczeniach. Niekiedy ataki mogą rozpocząć się w ciągu godziny od upublicznienia informacji na temat luki. Miało to miejsce na przykład w przypadku ujawnienia luki Shellshock.
Jakie zagrożenia stwarzają luki w zabezpieczeniach?
Exploit to fragment programu lub kodu, który wykorzystuje luki w zabezpieczeniach w celu zaatakowania systemu komputerowego. W niektórych przypadkach, exploit jest wykorzystywany na skalę masową – tzn. cyberprzestępcy próbują wykorzystać go, aby zaatakować różne systemy. W takich przypadkach, wykorzystywane są luki w popularnym oprogramowaniu w celu dostarczenia szkodliwych funkcji na maszyny użytkowników. Jest to powszechnie praktykowane za pośrednictwem tzw. ataków drive-by, w których mamy do czynienia z próbami pobrania szkodliwego kodu na komputery wszystkich użytkowników odwiedzających zainfekowane strony internetowe.
Niekiedy cyberprzestępcy przygotowują ataki ukierunkowane. Analizują oprogramowanie wykorzystywane przez konkretną firmę i tworzą exploity wykorzystujące luki w zabezpieczeniach określonych programów. Jeden z takich wysoce ukierunkowanych ataków został przeprowadzony w ramach kampanii APT Duqu 2.0
„Użyteczne” życie exploitów różni się. Niektóre są wykorzystywane przez lata, nawet jeśli twórcy wypuszczają łaty, które usuwają określone luki. Spowodowane jest to opieszałością użytkowników w instalowaniu tych łat.
Z danych firmy Kaspersky Lab wynika, że obecnie cyberprzestępcy wykorzystują exploity na wyszczególnione niżej luki:
Oprogramowanie |
Luka w zabezpieczeniach |
Adobe Flash Player |
|
Microsoft Internet Explorer |
|
Microsoft Office |
|
Microsoft Windows |
Na podstawie identyfikatorów CVE można łatwo zauważyć, że większość z tych luk została wykryta w tym roku, niektóre jednak zostały zidentyfikowane w 2014, a nawet 2012 roku. To, że luki te nadal są wykorzystywane, oznacza, że wielu użytkowników nie zadało sobie trudu uaktualnienia odpowiedniego oprogramowania.
Ochrona przed exploitami
Podstawowe zalecenia są proste: należy pamiętać, aby regularnie aktualizować oprogramowanie i nie wykorzystywać przestarzałego oprogramowania. Ta druga rada może w praktyce okazać się trudniejsza: czasami trudno jest znaleźć nową alternatywę dla znanego i wygodnego programu, który jest przestarzały. O ile twórcy nie śledzą luk w zabezpieczeniach przestarzałego oprogramowania ani nie wypuszczają dla niego łat, cyberprzestępcy nieustannie szukają możliwości ich wykorzystania. Skutek jest taki, że potrzebna jest dodatkowa ochrona, aby nadal móc korzystać z takiego oprogramowania.
Istnieją wyspecjalizowane narzędzia, które skanują komputery w poszukiwaniu znanych luk i jeśli takie wykryją, automatycznie instalują aktualizacje. Do takich narzędzi należą np. komponenty Kaspersky Systems Management, Analiza luk w zabezpieczeniach oraz Zarządzanie łatami. Kaspersky Lab opracowuje podobne rozwiązanie o nazwie Kaspersky Software Updater przeznaczone dla użytkowników domowych. Narzędzie to znajduje się obecnie w fazie testów beta.
Kaspersky Lab stosuje system nazewnictwa luk, który różni się od kodów wykorzystywanych w systemie CVE (Common Vulnerabilities and Exposures). O ile identyfikator w systemie CVE zawsze odpowiada jednej luce, kod w naszym systemie może odpowiadać grupie luk (w większości przypadków, są to luki usunięte przy użyciu jednej łaty lub luki w jednej wersji programu) – czasami jeden kod odnosi się do dziesiątek luk (w zależności od łat opublikowanych przez dostawców oprogramowania). W efekcie, 20 wyszczególnionych poniżej luk KLA odpowiada 375 lukom CVE.
Ze statystyk Kaspersky Security Network wynika, że podczas skanowania luk w zabezpieczeniach na maszynach użytkowników najczęściej identyfikowane są następujące zestawy luk w zabezpieczeniach:
KLA |
Liczba użytkowników |
Data wykrycia |
Opis |
|
1 |
308219 |
2015-10-14 |
Luka umożliwiająca wykonanie kodu w aplikacji Adobe Flash Player |
|
2 |
256383 |
2014-07-08 |
Liczne luki w zabezpieczeniach Adobe Flash oraz Adobe AIR |
|
3 |
228454 |
2013-10-16 |
Liczne luki w zabezpieczeniach produktów Oracle |
|
4 |
182972 |
2015-09-21 |
Liczne luki w zabezpieczeniach produktów Adobe |
|
5 |
176435 |
2015-08-11 |
Liczne luki w zabezpieczeniach produktów Adobe |
|
6 |
150987 |
2015-05-18 |
Luka umożliwiająca wykonanie kodu w aplikacji QuickTime |
|
7 |
150960 |
2015-10-13 |
Liczne luki w aplikacjach Adobe Acrobat i Reader |
|
8 |
138039 |
2015-07-14 |
Liczne luki w aplikacji Adobe Acrobat |
|
9 |
135291 |
2015-08-17 |
Luka umożliwiająca wstrzykiwanie kodu w VLC Media Player |
|
10 |
134824 |
2015-09-01 |
Liczne luki w Google Chrome |
|
11 |
108722 |
2015-09-22 |
Liczne luki w przeglądarce Mozilla Firefox |
|
12 |
107661 |
2015-08-27 |
Liczne luki w przeglądarce Mozilla Firefox |
|
13 |
103880 |
2015-11-10 |
Liczne luki w przeglądarce Google Chrome |
|
14 |
100311 |
2009-11-05 |
Liczne luki w Sun Java SE |
|
15 |
92345 |
2015-09-16 |
Liczne luki w Apple iTunes |
|
16 |
91013 |
2015-10-22 |
Luka umożliwiająca wykonanie kodu we wtyczce Flash dla przeglądarki Google Chrome |
|
17 |
87898 |
2015-09-08 |
Luka umożliwiająca wykonanie kodu w Adobe Shockwave Player |
|
18 |
87478 |
2015-11-10 |
Liczne luki w produktach firmy Adobe |
|
19 |
86657 |
2015-04-28 |
Luki w zabezpieczeniach OpenOffice |
|
20 |
84380 |
2015-09-21 |
Aktualizacja Flash Player dla Google Chrome |
Szczególnie godne uwagi są zestawy luk KLA10680 oraz KLA10650. Ten pierwszy zawiera, między innymi, CVE-2015-7645, ten drugi - CVE-2015-5560. Luki te są również obecne w pierwszej tabeli powyżej, która zawiera najczęściej wykorzystywane błędy w oprogramowaniu.
Naturalnie, produkty bezpieczeństwa zawierają również technologie służące do blokowania prób wykorzystania luk w zabezpieczeniach. Śledzą one zachowanie aplikacji (szczególnie tych, o których wiadomo, że są podatne na luki) oraz identyfikują i blokują podejrzaną aktywność.
Jak się miewa branża bezpieczeństwa?
Luki można zidentyfikować w rozwiązaniach bezpieczeństwa, podobnie jak w innych programach. Jedyna różnica polega na tym, że dostawcy rozwiązań bezpieczeństwa ponoszą o wiele większą odpowiedzialność, ponieważ oprogramowanie bezpieczeństwa stanowi zasadniczo ostatnią linię obrony. To dlatego firmy z branży bezpieczeństwa internetowego są szczególnie ostrożne i skrupulatne jeśli chodzi o sprawdzanie produktów pod kątem luk w zabezpieczeniach.
Nie możemy wypowiadać się za całą branżę, dlatego posłużymy się jedynym przykładem, jaki znamy – czyli naszym własnym. O bezpieczeństwie naszych produktów myślimy na wszystkich etapach ich rozwoju – od określania powierzchni ataku na etapie projektowania po specjalne procedury testowe służące identyfikacji potencjalnych luk w zabezpieczeniach produktów, które są prawie gotowe do wypuszczenia na rynek. Podczas tworzenia produktów personel z działu badań i rozwoju nie tylko tworzy niezbędną funkcjonalność produktu, ale również upewnia się, że nowe funkcje nie mogą zostać wykorzystane w celu podważenia integralności programu.
Uważamy, że takie podejście jest skuteczniejsze niż wyspecjalizowany zespół odpowiedzialny za śledzenie luk w zabezpieczeniach wszystkich produktów firmy. Co nie znaczy, że nie posiadamy takiego zespołu. Grupa architektów bezpieczeństwa regularnie sprawdza nowo stworzony kod pod kątem luk w zabezpieczeniach przy użyciu testowania odporności na błędne dane oraz testów penetracyjnych.
Testowanie odporności na błędne dane oznacza zasadniczo sprawdzanie programu w celu zidentyfikowania niezamierzonych operacji poprzez wprowadzanie niepoprawnych lub losowych danych. Innymi słowy, produkty są testowane przy użyciu nietypowych lub zniekształconych zestawów danych.
Testy penetracyjne są przeprowadzane zarówno wewnętrznie jak i przez ekspertów zewnętrznych. Z naszego doświadczenia wynika jednak, że niewielu ekspertów zewnętrznych posiada wystarczającą wiedzę odnośnie sposobu działania produktów bezpieczeństwa i potrafi tym samym skutecznie szukać luk w zabezpieczeniach. Ponadto, Kaspersky Lab posiada specjalny zespół, który specjalizuje się w wyszukiwaniu kodu osób trzecich dla luk w zabezpieczeniach (z jego usług korzystają, między innymi, banki chcące zweryfikować bezpieczeństwo swoich aplikacji). Chociaż aplikacje innych producentów stanowią najwyższy priorytet tego zespołu, eksperci ci analizują również kod opracowany wewnętrznie.
Cenimy również opinie niezależnych badaczy. Każda osoba, która znalazła lukę w zabezpieczeniach naszych technologii, może zgłosić ją za pośrednictwem specjalnego kanału komunikacyjnego, który znajduje się w tym miejscu. Eksperci z Kaspersky Lab dokładnie przeanalizują wszystkie dane przychodzące za pośrednictwem tego kanału. Procedura jest następująca: najpierw, nasi analitycy potwierdzają, że naprawdę istnieje luka w zabezpieczeniach. Następnie kontaktujemy się z niezależnym badaczem i uzgadniamy, kiedy te informacje zostaną upublicznione. W międzyczasie dane te są dostarczane personelowi B&R, który jest odpowiedzialny za rozwój technologii; sprawdzamy również, czy luka ta jest obecna w jakichkolwiek innych produktach firmy Kaspersky Lab. Należy zauważyć, że niekiedy niezależni badacze kierują naszą uwagę na poważne kwestie. Naprawdę to doceniamy!
Kilka praktycznych zaleceń
Ponieważ tylko twórcy oprogramowania mogą w istotny sposób poprawić sytuację, poniżej przedstawiamy kilka zaleceń:
Analizy
Blog