Typowe rodzaje luk w zabezpieczeniach i sposoby ich naprawy
Opublikowany: 2022-07-11Luka w Microsoft Exchange Server przyczyniła się do dużej serii cyberataków dotykających ponad 60 000 prywatnych firm w USA. Zaledwie miesiąc wcześniej firma Bombardier z branży lotniczej miała włamania do danych pracowników i dostawców z powodu słabości aplikacji do przesyłania plików innej firmy.
Istnieje wiele rodzajów luk w zabezpieczeniach, które mogą narazić Twój system IT na radar hakerów. Od złych praktyk kodowania po wadliwe komponenty zewnętrzne, bez względu na przyczynę, wiele firm zostaje ujawnionych. Aby złagodzić ten problem, firmy korzystają z usług kontroli jakości i testowania w celu oceny własnego oprogramowania i sieci oraz oceny zagrożeń bezpieczeństwa komponentów zewnętrznych dostawców.
Jakie rodzaje luk w zabezpieczeniach mogą w tej chwili narażać Twój system na cyberzagrożenia? Jak pojawiają się luki? A jak możemy je złagodzić?
Co to jest luka w oprogramowaniu i skąd się bierze?
Luka w zabezpieczeniach to niezamierzona cecha systemu lub składnika, która zwiększa ryzyko włamania lub utraty danych w wyniku przypadkowego ujawnienia, celowego ataku lub konfliktu z nowymi składnikami. Taka podatność może być wadą projektową, błędem implementacji, błędną konfiguracją itp.
Zanim przejdziemy dalej, wyjaśnijmy różnicę między luką w zabezpieczeniach, exploitem i zagrożeniem.
- Bez udziału osób z zewnątrz w systemie istnieje luka w zabezpieczeniach
- Exploit to sposób, w jaki intruzi wykorzystują istniejącą słabość systemu do przeprowadzenia ataku
- Zagrożenie to rzeczywisty incydent, w którym jeden lub wiele exploitów wykorzystuje lukę w zabezpieczeniach, aby przeniknąć do systemu
Eksperci ds. bezpieczeństwa mogą wyeliminować luki w zabezpieczeniach po ich wykryciu za pomocą poprawek oprogramowania, wymiany sprzętu i rekonfiguracji systemu. Szkolenie użytkowników końcowych w zakresie praktyk bezpieczeństwa i aktualizowanie wszystkich komponentów również zapobiegnie podatnościom i zminimalizuje je. Ponadto zespoły ds. bezpieczeństwa muszą pamiętać, że wraz z ewolucją systemów pojawiają się nowe słabości. Dlatego firmy muszą systematycznie skanować swoje oprogramowanie, sprzęt i sieci pod kątem pojawiających się luk w zabezpieczeniach i naprawiać je, zanim zostaną wykryte i wykorzystane.
Nowe luki w zabezpieczeniach pojawiają się szybko, ponieważ rządowa amerykańska National Vulnerability Database (NVD) opublikowała ponad 8 000 nowych wpisów w pierwszym kwartale 2022 roku. Przy tak szybkim tempie wiele firm nie może nadążyć i pozostawić otwarte słabości przez lata, ujawniając swoje systemy. Badanie luk w zabezpieczeniach oprogramowania wykazało, że 75% ataków przeprowadzonych w 2020 r. wykorzystywało ekspozycje sprzed co najmniej dwóch lat, podczas gdy 18% polegało na słabościach zgłoszonych w 2013 r.!
W jaki sposób luki w zabezpieczeniach przedostają się do oprogramowania i sieci?
Według badań, 75% aplikacji tworzonych przez producentów oprogramowania nie jest zgodnych ze standardami Open Web Application Security Project (OWASP) Top 10. Standardy te są publicznie dostępne. Dlaczego więc tak wielu wciąż nie tworzy bezpiecznej aplikacji? Oto główne powody:
Podatny kod innej firmy i inne składniki. Powszechną praktyką jest ponowne używanie komponentów innych firm, ponieważ znacznie przyspiesza to proces rozwoju. Jednak użytkownicy mają tendencję do lekceważenia bezpieczeństwa tych części i często wdrażają je bez dokładnej oceny. To samo dotyczy kopiowania i wklejania kodu ze źródeł, takich jak Stack Overflow, bez oceny jego bezpieczeństwa.
Niepewne praktyki kodowania. Ostatnie badania pokazują, że bezpieczeństwo nie jest nawet na celowniku większości programistów. W eksperymencie badającym postawę 1200 programistów naukowcy doszli do wniosku, że tylko 14% uważa bezpieczeństwo za priorytet podczas pisania kodu. Należy również zauważyć, że wiele organizacji wymaga od programistów szybkiego tworzenia kodu w napiętych terminach, co po prostu nie pozostawia miejsca na dokładną ocenę bezpieczeństwa i skutkuje lukami w kodzie.
Szybko zmieniający się krajobraz cyberataków. Atakujący nieustannie odkrywają nowe sposoby naruszania bezpieczeństwa aplikacji. Tak więc części, które wcześniej uważano za odporne, dziś mogą stać się wrażliwe. Jeśli zespół IT nie będzie systematycznie oceniać aplikacji i sieci pod kątem luk w zabezpieczeniach i nie aktualizuje całego oprogramowania, to tylko kwestia czasu, kiedy słabości zaczną się pojawiać.
Klasyfikacja typów luk w zabezpieczeniach
Istnieją dwie platformy, OWASP i CWE, które oferują niezawodną i szczegółową listę luk w zabezpieczeniach. Aktualizują swoje aukcje, aby uwzględnić wszelkie pojawiające się słabości. Oba zasoby można wykorzystać do kształcenia programistów, testerów i inżynierów.
OWASP jest globalną społecznością non-profit i regularnie publikuje listę 10 najpopularniejszych luk w oprogramowaniu OWASP. Common Weakness Enumeration (CWE) to kompozycja luk w zabezpieczeniach oprogramowania i sprzętu, również opracowana przez dedykowaną społeczność, obejmująca 25 wpisów.
Oto 18 najważniejszych luk w zabezpieczeniach, które chcemy podkreślić w tym artykule, posortowanych według domen. Mogą one przejawiać się w dowolnym systemie informatycznym, takim jak chmura, konfiguracje oparte na IoT czy aplikacje mobilne.
1. Brak silnych praktyk szyfrowania
Nawet jeśli szyfrowanie nie powstrzyma cyberataku, ważne jest, aby poufne dane pozostały bezpieczne, nawet jeśli ich platforma przechowywania zostanie naruszona. Atakujący nie mogą nadużywać zaszyfrowanych danych, dopóki ich nie zdekodują, co daje naruszonej firmie czas na podjęcie niezbędnych środków, takich jak powiadomienie zainteresowanych stron i przygotowanie środków zaradczych przed kradzieżą tożsamości.
Badania pokazują, że wiele firm nie planuje od razu szyfrowania danych na pamięciach USB, laptopach i komputerach stacjonarnych. Mówiąc o przepisach dotyczących ochrony danych, RODO nie wymaga wyraźnie szyfrowania, ale opisuje je jako „odpowiednie środki techniczne i organizacyjne” dla bezpieczeństwa danych.
W swoim raporcie Koszt naruszenia danych IBM wskazał, że szyfrowanie jest jednym z najbardziej wpływowych czynników, które mogą obniżyć średni koszt naruszenia danych.
2. Ekspozycja danych wrażliwych
Dane mogą zostać ujawnione z powodu błędu ludzkiego, gdy niedbały pracownik prześle je do publicznej bazy danych lub strony internetowej. Ale ten typ luki w zabezpieczeniach może być również wspierany przez wewnętrzne procesy, które faktycznie umożliwiają nieautoryzowanemu pracownikowi uzyskanie dostępu i manipulowanie poufnymi danymi.
Egress, firma zajmująca się cyberbezpieczeństwem, przeprowadziła ankietę, z której wynika, że 83% amerykańskich organizacji przypadkowo ujawniło poufne dane za pośrednictwem poczty e-mail, udostępniania plików, oprogramowania do współpracy i komunikatorów.
3. Niewystarczająca ochrona warstwy transportowej
Ten rodzaj podatności dotyczy wymiany informacji między klientem a aplikacją serwera. Takie informacje mogą zawierać dane wrażliwe, w tym dane uwierzytelniające użytkownika i dane karty kredytowej. Gdy transport danych nie jest zabezpieczony, komunikacja może zostać przechwycona, a atakujący mogą uzyskać dostęp do danych i rozszyfrować szyfrowanie, jeśli zostaną użyte słabe algorytmy.
4. Źle skonfigurowane komponenty systemu i ryzykowne interakcje
Nieprawidłowa konfiguracja komponentów i interakcji między nimi to kolejny problem bezpieczeństwa, z którym często się spotykamy. Na przykład, konfigurując system informatyczny, administrator zapomina o nadpisaniu domyślnych ustawień producenta i wyłączeniu spisów katalogów, przez co system jest widoczny. Innym przykładem jest zapominanie o ograniczeniu dostępu do urządzeń zewnętrznych.
Mówiąc o interakcjach, zaleca się, aby aplikacje przyjęły podejście zerowego zaufania i postrzegały każdy sygnał wejściowy jako ryzykowny, zanim zostanie zweryfikowany i udowodniony jako uzasadniony. Pomoże to uniknąć ataków, takich jak cross-site scripting, w których osoby atakujące wprowadzają do aplikacji niezaufane dane.
Ten aspekt jest szczególnie istotny w przypadku rozwiązań opartych na chmurze. Jedno z badań wykazało, że błędne konfiguracje serwerów przyczyniły się do 200 naruszeń chmury w ciągu dwóch lat. Inne badanie pokazuje, że około 70% naruszeń bezpieczeństwa chmury zaczyna się od wadliwej architektury. Na przykład błędnie skonfigurowany zasobnik pamięci AWS ujawnił 750 000 aplikacji do akt urodzenia w Stanach Zjednoczonych w 2019 r.
5. Słaba kontrola po stronie serwera
Ten typ luki w zabezpieczeniach oznacza wszystko, co może pójść nie tak po stronie serwera, od słabego uwierzytelnienia po błędne konfiguracje zabezpieczeń, które umożliwiają ataki, takie jak fałszowanie żądań między witrynami, gdzie przeglądarka niektórych użytkowników wykonuje nieautoryzowane działania na serwerze bez wiedzy tego użytkownika.
Na przykład błędna konfiguracja serwera bazy danych może spowodować, że dane staną się dostępne poprzez podstawowe wyszukiwanie w sieci. A jeśli zawiera poświadczenia administratora, intruzi mogą uzyskać dostęp do reszty systemu.
6. Zdalne wykonanie kodu
Oznacza to, że luki w zabezpieczeniach oprogramowania prezentowane przez Twój system umożliwiają intruzom wykonanie złośliwego kodu przez Internet na Twoich urządzeniach. Na przykład, gdy pracownik kliknie łącze w wiadomości e-mail na stronie internetowej innej firmy, haker stojący za tą konfiguracją wstrzykuje komputer ofiary złośliwym oprogramowaniem i przejmuje nad nim kontrolę. Osoba postronna może uzyskać dostęp do wrażliwych danych lub zablokować maszynę i zażądać okupu.
7. Znane luki w zabezpieczeniach systemu operacyjnego
Każdy system operacyjny ma swoją listę luk w oprogramowaniu. Niektóre listy są publikowane online, aby każdy mógł je zobaczyć. Na przykład tutaj znajduje się lista 10 najczęstszych słabych punktów systemu operacyjnego Windows 10, a tutaj odpowiednia lista dla systemu OS X. To do zespołów ds. bezpieczeństwa należy przejrzenie tych punktów i zajęcie się nimi, aby zminimalizować ryzyko ataków.
8. Uruchamianie skryptów bez sprawdzania wirusów
Jest to typowy typ luki w zabezpieczeniach, który występuje w niektórych przeglądarkach internetowych. Na przykład Safari umożliwia uruchamianie „zaufanych” skryptów bez wyraźnej zgody użytkownika. Hakerzy wykorzystują tę słabość, próbując uruchomić złośliwy fragment kodu, który można pomylić z „bezpiecznym” skryptem. Na szczęście często można wyłączyć tę „funkcję”.
9. Słabe referencje
Intruzi mogą uzyskać dostęp poprzez brutalne wymuszanie poświadczeń użytkowników. Jest to szczególnie łatwe, gdy samo hasło „123456” jest używane przez ponad 23 miliony osób. Jest to dodatek do haseł, takich jak „admin”, „password” i „qwerty”, które również są powszechne i dość łatwe do zhakowania.
Ten rodzaj luki w oprogramowaniu jest uważany za stworzoną przez człowieka, ale firmy mogą wdrażać środki, które zmusiłyby pracowników do wyboru silniejszych opcji i wystarczająco częstej zmiany danych uwierzytelniających. Ma to kluczowe znaczenie, biorąc pod uwagę rolę, jaką w bezpieczeństwie systemu odgrywa słabe uwierzytelnianie. Statystyki pokazują, że 80% naruszeń bezpieczeństwa było spowodowanych słabymi hasłami, a 61% użytkowników ma tendencję do używania jednej frazy zabezpieczającej dla wielu usług.
10. Korzystanie z komponentów ze znanymi podatnościami
Wdrażanie komponentów innych firm, takich jak biblioteki, interfejsy API, zestawy danych i frameworki, może znacznie zmniejszyć nakład pracy wymagany do uruchomienia i działania systemu. Ale może również wprowadzać luki w zabezpieczeniach. Ważne jest, aby zachować ostrożność i oceniać te komponenty, aby upewnić się, że nie pozostawiają otwartych tylnych drzwi, aby uzyskać dostęp do poufnych danych.
Nawet pobieranie i używanie obrazów innych firm może być niebezpieczne. W 2021 r. wdrożono 30 obrazów Docker Hub z liczbą pobrań 20 milionów, aby rozprzestrzeniać złośliwe oprogramowanie do wydobywania kryptowalut.
11. Niepewny projekt
Jest to stosunkowo nowy typ luki w zabezpieczeniach, który pojawił się na OWASP w 2021 roku. Organizacja wzywa do bezpiecznych wzorców projektowych, modelowania zagrożeń i architektury referencyjnej, aby od samego początku wyeliminować słabości.
Bezpieczne projektowanie to metodologia, która stale ocenia zagrożenia i zapewnia niezawodność kodu. Zachęca do systematycznego testowania przeciwko znanym metodom ataku. Postrzega bezpieczeństwo jako istotną część tworzenia oprogramowania, a nie jako dodatek lub przyjemną funkcję.
12. Błędy bezpieczeństwa w API
Interfejsy programowania aplikacji (API) umożliwiają interakcję komponentów oprogramowania ze sobą, co jest istotną częścią systemu informatycznego. Jednak interfejsy API o słabych zabezpieczeniach mogą otwierać wiele luk, takich jak zepsute uwierzytelnianie i zezwalać na wstrzykiwanie kodu oraz inne złośliwe praktyki.
Na przykład lekkomyślnie zbudowany interfejs API, który polega na filtrowaniu informacji po stronie klienta przed przedstawieniem ich użytkownikom, może ujawnić dane, udostępniając je do przechwycenia. Dane wrażliwe muszą być filtrowane po stronie serwera. Oto kolejny przykład tego typu luki w zabezpieczeniach: jeśli interfejs API nie ogranicza liczby przychodzących żądań, może otworzyć możliwość ataków typu „odmowa usług” (DoS).
Oto lista OWASP 10 najczęstszych luk bezpieczeństwa związanych z API do rozważenia. Niezabezpieczone interfejsy API otworzyły drzwi do wielu ataków w ostatnich latach. Jeden niesławny przykład pochodzi z LinkedIn, ponieważ złośliwy aktor wykorzystał API platformy, które nie wymaga uwierzytelniania, aby pobrać dane 700 milionów użytkowników. Korzystając z podobnego naruszenia API, intruz pozyskał informacje o 1,3 miliona użytkowników Clubhouse i opublikował je na forum hakerskim.
13. Nieodpowiednie uwierzytelnienie
Słabe środki uwierzytelniania pozwalają hakerom wykorzystać opcję „zapomniałem hasła” w celu zresetowania kont lub zainicjowania ataku przejęcia konta. Pomaga intruzowi, gdy pytanie uwierzytelniające jest czymś w rodzaju daty urodzenia użytkownika lub imienia zwierzaka, ponieważ są to publicznie dostępne informacje dzięki mediom społecznościowym. Podążanie za procesem uwierzytelniania wieloskładnikowego zwiększy bezpieczeństwo. Niestety, badania pokazują, że tylko 26% firm amerykańskich korzysta z tej silnej metody uwierzytelniania.
14. Niewystarczające monitorowanie i logi
Dzienniki przechowują dane o zdarzeniach systemowych, działaniach sieciowych i działaniach użytkowników. Monitorując logi, zespoły bezpieczeństwa mogą obserwować wszystkie działania, które miały miejsce w ostatnim czasie i identyfikować podejrzane zdarzenia. Jeśli dzienniki nie są regularnie przeglądane, tworzy to lukę informacyjną, w której luki w oprogramowaniu i złośliwe działania pozostają niewykryte.
15. Uprawnienia superużytkownika
Im mniej danych może uzyskać użytkownik, tym mniej szkód może wyrządzić jego konto w przypadku naruszenia bezpieczeństwa. Jednak niektóre firmy nadal niedbale przyznają uprawnienia superużytkownika z lewej i prawej strony i nie ograniczają pracownikom dostępu do tego, czego potrzebują do wykonywania codziennych obowiązków. Jeśli intruz przejmie konto na poziomie administratora, może wyłączyć oprogramowanie antywirusowe i zaporę ogniową, zainstalować szkodliwe aplikacje, przejąć na własność pliki itp.
Według badań 74% naruszeń danych zaczyna się od nadużycia uprzywilejowanych poświadczeń.
16. Nieaktualne oprogramowanie
Większość firm zdaje sobie sprawę, że terminowa aktualizacja oprogramowania jest kluczem do bezpiecznego systemu. Wydaje się jednak, że tylko nieliczni faktycznie stosują tę praktykę. Cybernews informuje o niedawnym badaniu dotyczącym częstotliwości aktualizacji oprogramowania. Badanie to było prowadzone przez okres 18 miesięcy i wykazało, że 95% zbadanych stron internetowych faktycznie działa na przestarzałym oprogramowaniu ze znanymi lukami w zabezpieczeniach. Zespół badawczy odkrył również, że przeciętny produkt programowy jest zwykle opóźniony o cztery lata za najnowszą łatką.
Co więcej, Kaspersky ustalił, że firmy korzystające z przestarzałego oprogramowania prawdopodobnie poniosą 47% więcej kosztów w przypadku naruszenia.
Na przykład sieć hoteli Marriott miała 500 milionów rekordów danych, które zostały naruszone w wyniku naruszenia bezpieczeństwa, które wynikało z niezałatanego oprogramowania.
17. Luki w kodzie źródłowym
Podczas tworzenia oprogramowania wkradają się luki w kodzie. Na przykład program może przesyłać poufne dane bez szyfrowania lub używać losowego ciągu, który w rzeczywistości nie jest losowy. Takie błędy są często wyłapywane podczas fazy testowania oprogramowania.
Według niedawnej ankiety Secure Code Warrior Survey 86% uczestniczących programistów przyznało, że nie uważa bezpieczeństwa aplikacji za najwyższy priorytet podczas pisania kodu, a 36% przypisuje to napiętym terminom. Ankieta ujawniła również, że 33% respondentów nawet nie rozumie, co sprawia, że ich kod jest podatny na ataki.

18. Wstrzyknięcie SQL
Ten typ luki w zabezpieczeniach dotyczy witryn i aplikacji opartych na języku Structured Query Language (SQL). Umożliwia atakującemu zmianę instrukcji SQL dostarczonych przez użytkownika i nakłonienie interpretera do wykonania niezamierzonych poleceń i przyznania dostępu do bazy danych. W ten sposób intruzi mogą manipulować poufnymi danymi, zamieniając/usuwając/modyfikując wrażliwe pola.
Jest to dość stara luka, która stanowiła ponad 65% ataków na aplikacje już w 2019 roku.
Typy luk w zabezpieczeniach specyficzne dla systemu oraz sposoby zapobiegania tym lukom w oprogramowaniu
Po wskazaniu typowych luk w zabezpieczeniach przejdźmy do słabości specyficznych dla aplikacji i systemu oraz zastanówmy się, jak chronić przed nimi swoje systemy.
Chmura
Istnieje obszerna lista możliwych typów luk w zabezpieczeniach w chmurze, niezależnie od tego, czy jest to platforma Azure, AWS, GCP, czy jakikolwiek inny dostawca chmury. Nasz ekspert ds. chmury, Alexey Zhadov, dzieli te luki na warstwy i udziela wskazówek, jak im zapobiegać.
Luki w warstwie systemowej
Niezależnie od usługi w chmurze, na której działa Twoje oprogramowanie, zawsze pod maską jest system operacyjny. Nawet jeśli masz dostęp tylko do panelu sterowania dla swojego zasobu. Każdy system operacyjny ma swoje „dziury” i „tylne drzwi”. Twórcy systemów operacyjnych nieustannie szukają tych słabości, starając się zakryć podstawy. Dlatego ważne jest, aby aktualizować oprogramowanie i być na bieżąco z najnowszymi osiągnięciami w dziedzinie cyberbezpieczeństwa w zakresie znanych problemów.
Luki w warstwie sieci
Każdy zasób chmury działa w sieci chmury. A wraz z tym pojawia się możliwość połączenia się z zasobem zewnętrznie. Zespół ds. bezpieczeństwa musi upewnić się, że konfiguracja sieci jest odpowiednia. Nigdy nie otwieraj portów, których nie planujesz wdrożyć, używaj białej listy znanych adresów IP i sieci, które mają łączyć się z Twoim rozwiązaniem. Zachowaj ostrożność podczas otwierania bezpośredniego połączenia z portami RDP/SSH z dowolnego miejsca innego niż znane adresy IP.
Luki w warstwie konfiguracji
Chmura musi być odpowiednio skonfigurowana zgodnie z wymaganiami i celami użytkownika, a konfiguracja ta musi być zawsze aktualna. Skonfiguruj zasady i procedury zarządzania konfiguracją oraz monitoruj wszelkie podejrzane działania.
Podatności na czynnik ludzki
Nie zapomnij o użytkownikach końcowych i administratorach, którzy mają dostęp do rozwiązania w chmurze. Porwanie kont to jedna z najczęstszych słabości każdego systemu informatycznego. Jeśli intruz uzyska dostęp do danych uwierzytelniających czyjegoś konta, może swobodnie wejść do systemu i manipulować nim w ramach uprawnień konta, a nikt go nie powstrzyma, dopóki nie otrzyma powiadomienia od zhakowanego użytkownika. Oto lista najczęstszych rodzajów luk bezpieczeństwa w aplikacjach chmurowych:
- Źle skonfigurowane sieci i zapory
- Źle skonfigurowana pamięć w chmurze
- Niezabezpieczone interfejsy API
- Słabe zarządzanie dostępem
- Przejęcie konta
- Złośliwi wtajemniczeni
- Luki w systemie
- Wspólne luki najemców
- Brak uwierzytelniania wieloskładnikowego dla użytkowników i urządzeń, które chcą dołączyć do sieci
Alexey zaleca kilka prostych zasad, które firmy mogą wdrożyć, aby chronić swoje systemy w chmurze:
- Aktualizuj systemy operacyjne
- Chroń swoje sieci
- Użyj serwerów bastionu, aby uzyskać dostęp do zamkniętej granicy
- Konfigurowanie grup zabezpieczeń sieci i list kontroli dostępu
- Ogranicz dostęp do niepotrzebnych portów
- Skonfiguruj monitorowanie i rejestrowanie, jeśli to możliwe
- Wdróż wieloskładnikową kontrolę dostępu dla wszystkich użytkowników
- Korzystaj z zapór sieciowych i ochrony DDoS
- Użyj narzędzi w chmurze, aby sprawdzić zgodność ze standardami bezpieczeństwa, takimi jak Azure Security Center
Aplikacje internetowe
Alexey poruszył również kwestie bezpieczeństwa oprogramowania, które nawiedzają aplikacje internetowe. Wykorzystując te luki, osoby atakujące mogą spowodować poważne szkody w aplikacji i organizacji jako całości. Oto najczęstsze ataki na aplikacje internetowe wynikające z luk w zabezpieczeniach aplikacji internetowych:
- Wstrzyknięcie SQL
- Skrypty między witrynami
- Przemierzanie ścieżki
- Zdalne wykonywanie poleceń
Jeśli cyberprzestępcy pomyślnie przeprowadzą te ataki, mogą umieścić złośliwe oprogramowanie, włamać się na konta użytkowników, uzyskać dostęp do zastrzeżonych informacji i nie tylko. Jak więc przetestować oprogramowanie pod kątem luk? Alexey zaleca przeprowadzenie testów bezpieczeństwa aplikacji internetowych w celu oceny następujących parametrów:
- Walidacja danych wejściowych. W jaki sposób aplikacja może przetwarzać dane wejściowe i czy może wykryć i zablokować wszelkie złośliwe wpisy?
- Konfiguracja serwera. Czy używa silnej metody szyfrowania?
- Zarządzanie uwierzytelnianiem. Jakie rodzaje zezwoleń są egzekwowane? Czy użytkownicy mogą wybierać słabe hasła?
- Opcje autoryzacji. Czy aplikacja może chronić się przed eskalacją uprawnień?
- Logika biznesowa. Czy użytkownicy mogą wstawiać nieprawidłowe dane? Czy mogą pominąć kroki uwierzytelniania? Czy użytkownicy mogą naruszyć integralność aplikacji i jej danych?
Aplikacje mobilne
Mówiąc o bezpieczeństwie aplikacji mobilnych, nie możemy pominąć typów luk w zabezpieczeniach prezentowanych przez samo urządzenie oprócz aplikacji. Alexey Zhadov, nasz ekspert ds. chmury i urządzeń mobilnych, również podzielił się typowymi problemami, które mają wpływ na aplikacje mobilne:
- Słaba kontrola po stronie serwera
- Niebezpieczne przechowywanie danych
- Niewystarczająca ochrona warstwy transportowej
- Niezamierzony wyciek danych
- Słaba autoryzacja i uwierzytelnianie
- Słaba kryptografia
- Wstrzyknięcie po stronie klienta
- Niezaufane dane wejściowe
- Niewłaściwa obsługa sesji
- Brak ochrony binarnej
- Niewłaściwe użycie systemu operacyjnego
- Niebezpieczny ruch i wywołania API
- Urządzenia do manipulowania kodem i po jailbreaku
- Nieodpowiednie rejestrowanie i monitorowanie
- Błędne konfiguracje zabezpieczeń
Aby zabezpieczyć aplikacje mobilne, Alexey zaleca kilka prostych praktyk, które firmy mogą wdrożyć w projektowaniu i utrzymaniu aplikacji:
Ocena kodu typu open source: większość aplikacji mobilnych korzysta z bibliotek open source innych firm, dostępnych dla wszystkich. To usprawnia proces rozwoju, ale także otwiera tylne drzwi dla potencjalnych intruzów. Dlatego obowiązkowe jest rygorystyczne przetestowanie kodu innej firmy pod kątem luk w zabezpieczeniach oprogramowania przed włączeniem go do aplikacji.
Silne praktyki kryptograficzne: szyfruj i odszyfruj dane podczas przesyłania. Dzięki silnej technice szyfrowania danych, dane aplikacji, takie jak kod źródłowy, informacje o użytkowniku i dane logowania, pamięć aplikacji będzie zabezpieczona. Gdy dane zostaną zaszyfrowane, hakerzy nie będą w stanie ich zinterpretować, nawet jeśli uzyskają dostęp do oryginalnej zawartości.
Certyfikat podpisywania kodu: programiści mogą podpisywać aplikacje mobilne, aby chronić je przed cyberatakami i zdobywać zaufanie użytkowników. Taki podpis gwarantuje, że kod nie został zinterpretowany lub zmieniony po podpisaniu aplikacji. Zespół ds. bezpieczeństwa może znaleźć kilka opcji certyfikatów podpisywania kodu ze skromnymi metkami. Ta praktyka jest zarówno opłacalna, jak i niezawodna.
Ochrona pamięci podręcznej danych: dane w pamięci podręcznej zawierają informacje pobrane z aplikacji, aby pomóc w szybszym ponownym otwarciu w celu poprawy wydajności aplikacji. Pamięć podręczna danych jest zwykle przechowywana bez dodatkowych środków bezpieczeństwa na urządzeniu użytkownika. Bezpieczniejszą praktyką jest wygenerowanie hasła i zablokowanie aplikacji. Co więcej, Alexey zaleca częste czyszczenie danych z pamięci podręcznej i logowanie się przy użyciu bezpiecznego połączenia sieciowego.
Bezpieczne przechowywanie danych: Każda aplikacja zawiera dane, które intruzi mogą nadużyć. Zawiera informacje zarówno o użytkownikach, jak i deweloperach aplikacji. Dlatego ważne jest, aby bezpiecznie przechowywać te dane w zabezpieczonej pamięci masowej w chmurze, zamiast polegać na lokalnych jednostkach pamięci.
Techniki uwierzytelniania i autoryzacji: Niezbędne jest skonfigurowanie uwierzytelniania wieloskładnikowego, aby zapobiec kradzieży danych. Obejmuje identyfikator użytkownika, hasło, PIN, OTP itp. Autoryzacja powinna zawsze odbywać się po stronie serwera, aby zweryfikować role i uprawnienia uwierzytelnionych użytkowników.
Wymazywanie danych i blokowanie urządzenia: Ta funkcja jest używana głównie w aplikacjach zawierających poufne dane, takie jak informacje osobiste, finansowe, zdrowotne itp. Jest to warstwa bezpieczeństwa, w której zdalne dane są usuwane po kilku nieudanych próbach logowania ze strony użytkownika, a aplikacja zostanie automatycznie zablokowana. Zabrania również użytkownikom wybierania kolejnych numerów haseł zamiast wielkich liter, znaków specjalnych, alfabetów, cyfr itp.
Przeciwdziałanie inżynierii wstecznej: hakerzy wykorzystują inżynierię wsteczną do manipulowania funkcjonalnością aplikacji. Uzyskując dostęp do kodu źródłowego aplikacji, hakerzy mogą obejść proces uwierzytelniania, sfałszować swoją lokalizację i ukraść dane. Egzekwowanie bezpieczeństwa w czasie wykonywania ma kluczowe znaczenie dla przeciwdziałania inżynierii wstecznej. Uniemożliwia intruzom modyfikowanie wewnętrznych funkcji aplikacji poprzez zmianę jej struktury kodu, aby wpłynąć na zachowanie aplikacji.
Rozwiązania IoT
To, co sprawia, że rozwiązania IoT są wyjątkowe z punktu widzenia bezpieczeństwa, to fakt, że możliwości każdego urządzenia są ograniczone przez wymagania dotyczące jego użytkowania. Nie ma miejsca na implementację żadnych wymyślnych funkcji bezpieczeństwa, które zużywają dodatkową pojemność, pamięć lub moc, co powoduje, że urządzenia IoT są podatne na ataki.
Nasz ekspert IoT, Yahor Paloika, zwraca uwagę na następujące typy luk w zabezpieczeniach w podłączonych urządzeniach:
- Zakodowane dane uwierzytelniające. Urządzenia IoT są dostarczane z zaszyfrowanymi hasłami, których administratorzy czasami zapominają zmienić, co daje hakerom możliwość łatwego przeniknięcia do systemu przy użyciu tych dobrze znanych danych uwierzytelniających.
- Sieci niechronione. Niektóre sieci nie wymuszają silnego uwierzytelniania, umożliwiając intruzom dodawanie urządzeń, rekonfigurację ustawień w celu zmiany przepływu danych, przechwytywanie danych i wstrzykiwanie własnych danych w celu naśladowania odczytów czujników.
- Słabe zarządzanie aktualizacjami. Wiele urządzeń IoT działa niezależnie i nie polega na ingerencji człowieka podczas przeprowadzania aktualizacji. W takim przypadku system zarządzania aktualizacjami odpowiada za upewnienie się, że automatyczne aktualizacje docierają zaszyfrowanym kanałem, pochodzą ze zweryfikowanego źródła i nie są uszkodzone. Jeśli taki system jest słaby, umożliwi intruzom uszkodzenie zaktualizowanego oprogramowania i oprogramowania sprzętowego, zmieniając zachowanie urządzenia.
- Nieaktualne moduły kodu. Zapomnienie o wyeliminowaniu przestarzałych modułów, które nie są już używane, daje hakerom wystarczająco dużo czasu na zbadanie problemów z bezpieczeństwem oprogramowania i znalezienie luk umożliwiających penetrację systemu. Wszystkie moduły, które nie są częścią funkcjonalności podłączonych urządzeń, muszą zostać usunięte.
- Ochrona danych. Wszystkie dane krążące w sieci IoT muszą być zaszyfrowane, a dostęp do nich mają tylko upoważnieni użytkownicy.
Włamanie się do systemów IoT może mieć druzgocący efekt. Na przykład w ramach eksperymentu zespół naukowców mógł przeniknąć do oprogramowania urządzeń IoT w Jeepie Cherokee i wysyłać złośliwe polecenia za pośrednictwem systemu rozrywki Jeepa. Majstrowali przy klimatyzacji, obniżali temperaturę, włączali przednie szyby, a potem, ku przerażeniu kierowcy, wyłączali hamulce. Na szczęście był to tylko eksperyment. Oto kilka wskazówek, które Yahor zaleca, aby chronić systemy IoT:
- Użyj istniejącego protokołu kryptograficznego o wysokim stopniu bezpieczeństwa, takiego jak Transport Layer Security (TLS), do obsługi komunikacji w sieci IoT i zrekompensowania braku wbudowanych zabezpieczeń
- Posiadać nowoczesny zintegrowany podsystem zarządzania kluczami i certyfikatami, który zapewnia wymagany poziom szyfrowania i bezpieczeństwa. Ponadto Yahor zaleca aktualizowanie kluczy i certyfikatów co najmniej raz na sześć miesięcy
- Wdróż niezawodny system zarządzania hasłami, aby generować silne hasła i systematycznie je zmieniać
- Zaimplementuj system zarządzania aktualizacjami, który pozwoli na przesyłanie tylko bezpiecznych aktualizacji z legalnego źródła, blokując wszelkie próby wymuszenia uszkodzonych zmian
Rozwiązania AI
Jest jeden aspekt, który znacząco różni rozwiązania sztucznej inteligencji (AI) i uczenia maszynowego (ML) od pozostałych systemów wspomnianych w tym artykule – jest to fakt, że takie modele są często szkolone do przewidywania, a ten proces uczenia wprowadza kilka rodzaje luk w zabezpieczeniach. Nasz ekspert AI, Maksym Bochok, zwrócił uwagę na najpopularniejsze słabości:
- Atakujący może manipulować przy treningowym zbiorze danych i zmusić model do uczenia się fałszywych reguł i dokonywania błędnych prognoz
- Inżynierowie ML mogą zdecydować się na istniejące, wstępnie wytrenowane modele, które znajdą w Internecie, a modele te mogą już być złośliwe. Na przykład mogą zawierać wirusa trojańskiego lub inne złośliwe oprogramowanie.
- Intruz może przejąć sam algorytm i dostosować kod, wagi i inne parametry, aby zmodyfikować zachowanie modelu.
Co więcej, sztuczna inteligencja jest często łączona z innymi technologiami, takimi jak IoT i chmura, co czyni ją podatną na rodzaje luk w zabezpieczeniach wprowadzane przez te systemy.
Aby zabezpieczyć systemy AI, nasz ekspert zaleca:
- Korzystając z wstępnie wytrenowanych modeli i zewnętrznych zestawów danych, sprawdź, czy nie zawierają one żadnego złośliwego oprogramowania
- Systematycznie testuj swoje algorytmy pod kątem pożądanych wyników, aby upewnić się, że nikt nie manipulował przy dopasowanych regułach lub wprowadzanych uprzedzeniach itp.
- Monitoruj dryfty danych (zmiany w danych wejściowych)
- Wykrywaj wartości odstające, ponieważ intruzi mogą wprowadzać potencjalnie niebezpieczne dane, aby przekrzywić model do pożądanego wyniku
- Wyszukaj wszelkie możliwe wartości odstające w swoim zestawie danych treningowych
- Korzystaj z ogólnych narzędzi oceny bezpieczeństwa AI, takich jak Counterfit. Pomoże to zapewnić niezawodność i solidność algorytmów.
- Korzystaj z istniejących narzędzi do ochrony danych i chroń poufne dane podczas przechowywania i używania. Jednym z przykładów jest narzędzie Imperva, które może służyć jako zewnętrzny firewall.
Na ostatnią nutę
Jeśli prowadzisz dobrze prosperującą firmę, istnieje duża szansa, że ktoś próbował przeniknąć do Twojego systemu, aby poprosić o okup lub zaszkodzić reputacji. A ponieważ hakerzy nieustannie szukają luk do wykorzystania, Twój zespół IT pracuje nad zmniejszeniem ryzyka. Aby mieć pewność, że wygrasz ten wyścig, skonsultuj się z doświadczoną firmą zajmującą się bezpieczeństwem i testowaniem, która pomoże Ci ocenić stan Twojego systemu i zarekomenduje, jak go ulepszyć.
W międzyczasie, aby zapobiec ujawnieniu aplikacji przez różne typy luk w zabezpieczeniach, zwracaj uwagę na konfigurację systemu, upewnij się, że całe oprogramowanie jest aktualne i przeszkol swoich pracowników w zakresie bezpiecznych praktyk.
Masz wątpliwości co do bezpieczeństwa Twojego istniejącego systemu? A może chcesz zbudować aplikację z myślą o bezpieczeństwie? Rzuć zespół ITRex na linię! Nasi eksperci ds. bezpieczeństwa przetestują Twój sprzęt i oprogramowanie pod kątem luk i zaproponują ulepszenia.
Pierwotnie opublikowany na https://itrexgroup.com 6 lipca 2022 r.
