10 najlepszych rodzajów luk w zabezpieczeniach

10 najlepszych rodzajów luk w zabezpieczeniach
Niezamierzona lub przypadkowa wada w kodzie oprogramowania lub w dowolnym systemie, który sprawia, że ​​jest potencjalnie wykorzystny pod względem dostępu do nielegalnych użytkowników, złośliwe zachowania, takie jak wirusy, trojany, robaki lub inne złośliwe oprogramowanie, nazywa. Korzystanie z oprogramowania, które zostało już wykorzystane lub użycie słabych i domyślnych haseł powoduje również, że system podatnie na świat zewnętrzny. Tego rodzaju luki w zabezpieczeniach wymagają łatania, aby uniemożliwić hakerom używanie wcześniej używanych exploitów w celu uzyskania nieautoryzowanego dostępu do systemu. Podatność bezpieczeństwa zwana także dziurą lub osłabieniem bezpieczeństwa to wada, błąd lub wina we wdrażaniu kodu, projektu i architektury aplikacji internetowej i serwerów, które po pozostawianiu bez wstępu mogą skutkować kompromisem systemu i czyni TEM Cała sieć podatna na atak. Osoby zostaną zarażone, to właściciel aplikacji, użytkowników aplikacji i każda inna osoba polegająca na tej aplikacji. Spójrzmy na najbardziej niebezpieczne i powszechne zagrożenia bezpieczeństwa w aplikacjach internetowych.

Spis treści

  1. Wtrysk bazy danych
  2. Złamane uwierzytelnianie
  3. Wrażliwa ekspozycja na dane
  4. XML Zewnętrzne jednostki (XEE)
  5. Złamany kontrola dostępu
  6. Błędność bezpieczeństwa
  7. Skrypty krzyżowe (XSS)
  8. Niepewna deserializacja
  9. Korzystanie z komponentów o znanych lukach
  10. Niewystarczające rejestrowanie i monitorowanie

Wstrzyknięcie bazy danych:

W przypadku wysyłania niezaufanych danych do interpretera jako część polecenia za pośrednictwem dowolnego obszaru, który przyjmuje wprowadzanie użytkownika I.E Wprowadzanie formularza lub dowolny inny obszar przesyłania danych, występują wady wtrysku. Złośliwe zapytania atakującego mogą oszukać interpretera do wykonywania poleceń, które mogą wyświetlać poufne dane, na które użytkownik nie ma autoryzacji. Na przykład w ataku wtrysku SQL, gdy wejście formularza nie jest odpowiednio zdezynfekowane, atakujący może wprowadzić bazę danych SQL i uzyskać dostęp do jej zawartości bez upoważnienia, po prostu poprzez wprowadzenie złośliwego kodu bazy danych SQL w formularzu, który oczekuje PlainText. Każdy rodzaj pola, który przyjmuje dane wejściowe użytkownika, jest wstrzykiwalny i.E Parametry, zmienne środowiskowe, wszystkie usługi internetowe itp.

Aplikacja jest podatna na atak wtrysku, gdy dane dostarczane przez użytkownika nie są zdezynfekowane i zatwierdzone, używając dynamicznych zapytań bez kontekstu unoszącego się i użycie bezpośrednich danych wrogich. Wady wstrzyknięcia można łatwo wykryć poprzez badanie kodu i użycie zautomatyzowanych narzędzi, takich jak skanery i fuzzy. Aby zapobiec atakom wtrysku, istnieje pewna miara, jaka można podjąć, jak oddzielenie danych od poleceń i zapytań, użycie bezpiecznego interfejsu API, który zapewnia sparametryzowany interfejs, użycie sprawdzania poprawności wejścia po stronie „białej listy” za pośrednictwem narzędzi, takich jak Snort, Unikanie znaków specjalnych za pomocą określonej składni ucieczki itp.

Atak wtrysku może prowadzić do ogromnej utraty danych, ujawnienia poufnych informacji, odmowy dostępu, a nawet może prowadzić do pełnego przejęcia aplikacji. Niektóre elementy sterujące SQL, takie jak limit, można wykorzystać do kontrolowania ogromnych ilości utraty danych w przypadku ataku. Niektóre rodzaje ataków wtrysku to ataki SQL, OS, NoSQL, LDAP.

Złamane uwierzytelnianie:

Atakerzy mogą uzyskiwać dostęp do kont użytkowników, a nawet zagrażać całego systemu hosta za pośrednictwem kont admin. Wady uwierzytelniania pozwalają atakującemu na narażanie haseł, tokenów sesji, klawiszów uwierzytelniania i mogą być przykute innymi atakami, które mogą prowadzić do nieautoryzowanego dostępu do dowolnego innego konta użytkownika lub sesji, a w niektórych przypadkach na stałe. Powiedzmy, że użytkownik ma listę słów lub słownik milionów prawidłowych nazw użytkowników i haseł uzyskanych podczas naruszenia. Może użyć ich jeden po drugim w bardzo krótszym czasie, używając zautomatyzowanych narzędzi i skryptów w systemie logowania, aby sprawdzić, czy ktoś działa. Słaba wdrożenie zarządzania tożsamością i kontroli dostępu prowadzi do luk, takich jak zepsute uwierzytelnianie.

Aplikacja jest podatna na atak uwierzytelniania, gdy pozwala na wypróbowanie różnych nazw użytkowników i haseł, zezwala na ataki słownika lub ataki brutalnej siły bez żadnej strategii obrony, używaj łatwych, domyślnych haseł lub haseł, które są wyciekane w dowolnym naruszeniu, ujawnia identyfikatory sesji w adresie URL, używa Schemat odzyskiwania złego hasła, używa wzoru plików cookie. Złamane uwierzytelnianie można łatwo wykorzystać przy użyciu prostych narzędzi do brutalnego rozwinięcia i ataków słownika dobrym słownikiem. Tego rodzaju ataków można zapobiec za pomocą wieloczynnikowych systemów uwierzytelniania, wdrażając słabe kontrole haseł poprzez uruchamianie hasła za pomocą bazy danych złego hasła, nie używając domyślnych poświadczeń, poprzez dostosowanie zasad złożoności hasła, poprzez korzystanie z dobrego serwera po stronie serwera Menedżer sesji, który generuje nowy losowy identyfikator sesji po zalogowaniu itp.

Złamana podatność na uwierzytelnianie może spowodować naruszenie kilku kont użytkowników i konta administracyjnego, to wszystko, co atakujący musi zagrozić systemowi. Tego rodzaju ataki prowadzą do kradzieży tożsamości, oszustw związanych z ubezpieczeniem społecznym, praniem pieniędzy i ujawniania wysoce sklasyfikowanych informacji. Ataki obejmują ataki słownika, brutalne wyroby, porwanie sesji i ataki zarządzania sesją.

Wrażliwa ekspozycja na dane:

Czasami aplikacje internetowe nie chronią poufnych danych i informacji, takich jak hasła, poświadczenia bazy danych itp. Atakujący może łatwo ukraść lub zmodyfikować te słabo chronione poświadczenia i wykorzystać je do nielegalnych celów. Wrażliwe dane powinny być szyfrowane podczas odpoczynku lub w tranzycie i mieć dodatkową warstwę bezpieczeństwa, w przeciwnym razie napastnicy mogą je ukraść. Atakerzy mogą zdobyć poufne ujawnione dane i ukraść Haszed lub wyczyść użytkowników tekstu i poświadczenia bazy danych z serwera lub przeglądarki internetowej. Na przykład, jeśli baza danych haseł używa niesolonych lub prostych skrótów do przechowywania haseł, wada przesyłania pliku może pozwolić atakującemu na pobranie bazy danych haseł, co doprowadzi do ekspozycji wszystkich haseł z tęczową tabelą wstępnie obliczonych skrótów.

Główna wada polega nie tylko na tym, że dane nie są szyfrowane, nawet jeśli są szyfrowane, ale słabe generowanie kluczy, słabe algorytmy mieszania, słabe użycie szyfru mogą również powodować ten rodzaj jednego z najczęstszych ataków. Aby zapobiec tego typu ataków, po pierwsze, sklasyfikuj, które rodzaje danych można uznać za wrażliwe zgodnie z przepisami dotyczącymi prywatności i zastosuj kontrolę zgodnie z klasyfikacją. Staraj się nie przechowywać żadnych sklasyfikowanych danych, których nie potrzebujesz, umyj je, jak najszybciej je użyjesz. W przypadku danych w tranzycie zaszyfruj je za pomocą bezpiecznych protokołów i.e tls z szyframi PFS itp.

Tego rodzaju luki mogą skutkować ujawnieniem bardzo poufnych informacji, takich jak poświadczenia karty kredytowej, dokumentacja medyczna, hasła i wszelkie inne dane osobowe, które mogą prowadzić do kradzieży tożsamości i oszustw bankowych itp.

XML jednostki zewnętrzne (XEE):

Źle skonfigurowane procesory XML przetwarzają odniesienia encji zewnętrznej w dokumentach XML. Te podmioty zewnętrzne mogą być używane do pobierania danych plików wewnętrznych, takich jak /etc/passwd plik lub wykonywać inne złośliwe zadania. Wrażliwe procesory XML można łatwo wykorzystać, jeśli atakujący może przesłać dokument XML lub uwzględnić XML itp. Te wrażliwe jednostki XML można odkryć za pomocą narzędzi SAST i DAST lub ręcznie, sprawdzając zależności i konfiguracje.

Aplikacja internetowa jest podatna na atak XEE z wielu powodów, takich jak jeśli aplikacja akceptuje bezpośrednie dane wejściowe XML z niezaufanych źródeł, definicje typów dokumentów (DTDS) w aplikacji są włączone, aplikacja używa SAML do przetwarzania tożsamości, ponieważ SAML używa XML do tożsamości Wstawki itp. Ataki XEE można złagodzić, unikając serializacji wrażliwych danych, przy użyciu mniej skomplikowanych formatów danych i.E JSON, Patrzenie procesorów XML Aplikacja jest curren '], a nawet bibliotek, wyłączając DTD we wszystkich parserach XML, sprawdzanie poprawności funkcji przesyłania plików XML za pomocą weryfikacji XSD itp.

Aplikacja podatna na tego rodzaju ataki może prowadzić do ataku DOS, ataku miliarda śmiechu, skanowania systemów wewnętrznych, skanowania portów wewnętrznych, wykonywania zdalnego polecenia, które powoduje wpływ na wszystkie dane dotyczące aplikacji.

Złamany kontrola dostępu:

Kontrola dostępu daje użytkownikom uprawnienia do wykonywania określonych zadań. Złamana podatność na kontrolę dostępu ma miejsce, gdy użytkownicy nie są odpowiednio ograniczeni w zadaniach, które mogą wykonywać. Atakujący mogą wykorzystać tę lukę, która może skończyć w dostępie do nieautoryzowanej funkcjonalności lub informacji. Powiedzmy, że aplikacja internetowa pozwala użytkownikowi zmienić konto, z którego jest zalogowany, po prostu poprzez zmianę adresu URL na konto innego użytkownika bez dalszej weryfikacji. Wykorzystanie podatności na kontrolę dostępu jest atakiem każdego atakującego, tę podatność można znaleźć ręcznie, a także za pomocą Saft i Daft Tools. Te luki istnieją z powodu braku testowania i automatycznego wykrywania aplikacji internetowych, chociaż najlepszym sposobem ich znalezienia jest robienie tego ręcznie.

Luki zawierają przywileje eskalacyjne i.działając jako użytkownik, którego nie jesteś lub działasz jako administrator, gdy jesteś użytkownikiem, omijając kontrole kontroli dostępu tylko poprzez modyfikację adresu URL lub zmieniając stan aplikacji, manipulację metadanych, umożliwiając zmianę klucza podstawowego jako klucz podstawowy innego użytkownika, itp. Aby zapobiec tego rodzaju atakom, w kodzie po stronie serwera należy zaimplementować mechanizmy kontroli dostępu. Egzekwowanie unikalnych limitów biznesowych aplikacji przez modele domeny, wyłączanie katalogów serwerów, alert administrator o powtarzanych nieudanych próbach logowania, unieważnienie tokenów JWT po tym, jak logout musi być zapewnione w celu złagodzenia tego rodzaju ataków.

Atakerzy mogą działać jako inny użytkownik lub administrator, korzystając z tej podatności do wykonywania złośliwych zadań, takich jak tworzenie, usuwanie i modyfikowanie rekordów itp. Ogromna utrata danych może wystąpić, jeśli dane nie są zabezpieczone nawet po naruszeniu.

Błędność bezpieczeństwa:

Najczęstszą podatnością jest błędna konfiguracja bezpieczeństwa. Głównym powodem podatności jest użycie domyślnej konfiguracji, niekompletnej konfiguracji, konfiguracji adhoc, słabo skonfigurowanych nagłówków HTTP i zawodowych komunikatów o błędach zawierających więcej informacji niż użytkownik powinien był wiedzieć. Na dowolnym poziomie aplikacji internetowej mogą wystąpić błędne konfiguracje bezpieczeństwa.E baza danych, serwer WWW, serwer aplikacji, usługi sieciowe itp. Atakerzy mogą wykorzystać niezławione systemy lub uzyskać dostęp do zabezpieczonych plików i katalogów, aby mieć nieautoryzowane wstrzymanie systemu. Na przykład aplikacja nadmiernie pełna gadatory komunikaty o błędach, które pomagają atakującemu poznać luki w systemie aplikacji i sposób, w jaki działa. Zautomatyzowane narzędzia i skanery można użyć do wykrywania tego rodzaju wad bezpieczeństwa.

Aplikacja internetowa zawiera tę podatność na ten typ, jeśli brakuje jej środków utwardzania bezpieczeństwa w dowolnej części aplikacji, niepotrzebne porty są otwarte lub umożliwia niepotrzebne funkcje, używane są domyślne hasła, obsługi błędów ujawnia błędy pouczające dla atakującego, używa Nieprawdzone lub przestarzałe oprogramowanie bezpieczeństwa itp. Można temu zapobiec, usuwając niepotrzebne cechy kodu, i.e minimalna platforma bez niepotrzebnych funkcji, dokumentacji itp. Umożliwiając zadanie aktualizację i łatanie otworów bezpieczeństwa w ramach procesów zarządzania łatami, użycie procesu w celu weryfikacji skuteczności podejmowanych miar bezpieczeństwa, zastosowanie powtarzalnego procesu stwardnienia do wykonania Łatwo jest wdrożyć inne środowisko, które jest odpowiednio zablokowane.

Tego rodzaju luki w zabezpieczeniach lub wadach pozwalają atakującemu uzyskać nieautoryzowany dostęp do danych systemowych, co prowadzi do całkowitej kompromisu systemu.

Skrypty krzyżowe (XSS):

Osaki XSS występują w momencie, gdy aplikacja internetowa zawiera niezaufane dane na nowej stronie internetowej bez uzasadnionej zgody lub ucieczki, lub odświeża bieżącą stronę witryny za pomocą danych dostarczanych przez klienta, wykorzystując interfejs API przeglądarki, który może tworzyć HTML lub JavaScript. Wady XSS występują na wypadek, gdyby strona internetowa pozwala użytkownikowi dodać niestandardowy kod do ścieżki adresu URL, który może zobaczyć inni użytkownicy. Te wady służą do uruchamiania złośliwego kodu JavaScript w przeglądarce celu. Powiedzmy, że atakujący może wysłać link do ofiary zawierającej link do strony internetowej każdej firmy. To połączenie może mieć wbudowany złośliwy kod JavaScript, na wypadek, gdyby strona internetowa banku nie była odpowiednio zabezpieczona przed atakami XSS, po kliknięciu linku Kod złośliwego kodu zostanie uruchomiony w przeglądarce ofiary.

Skrypty między witrynami to podatność na bezpieczeństwo, która jest obecna w prawie ⅔ aplikacji internetowych. Aplikacja jest podatna na XSS, jeśli aplikacja przechowuje niezarzeźwięte wejście użytkownika, które może zobaczyć inny użytkownik, za pomocą struktur JavaScript, aplikacji jednostronicowych i interfejsów API, które silnie zawierają informacje kontrolne atakującego na stronie, są bezradne przeciwko DOM XSS. Ataki XSS mogą być złagodzone przez użycie ram, które wymykają się i odkażają wkład XSS z natury, takimi jak React JS itp., Uczenie się ograniczeń ram i obejmują je za pomocą własnych przypadków, uciekając za niepotrzebne i niezdolne dane HTML wszędzie.e w atrybutach HTML, URI, JavaScript itp., Zastosowanie kodowania wrażliwego na kontekst w przypadku modyfikowania dokumentu po stronie klienta itp.

Ataki oparte na XSS są z trzech typów I.E odzwierciedlone XSS, DOM XSS i przechowywane XSS. Wszystkie rodzaje tych ataków mają znaczny wpływ, ale w przypadku przechowywanych XSS wpływ jest jeszcze większy i.E kradzież poświadczeń, wysyłanie złośliwego oprogramowania do ofiary itp.

Niepewna deserializacja:

Serializacja danych oznacza przyjmowanie obiektów i przekształcanie ich w dowolny format, aby dane te mogły być wykorzystane do innych celów, podczas gdy deserializacja danych oznacza przeciwieństwo tego. Deserializacja rozpakowuje te serializowane dane do korzystania z aplikacji. Niepewna deserializacja oznacza temperowanie danych, które zostały serializowane tuż przed tym. Niepewna deserializacja prowadzi do zdalnego wykonywania kodu i jest używana do wykonywania innych zadań do złośliwych celów, takich jak eskalacja uprawnień, ataki wtrysku, ataki powtórki itp. Dostępne są narzędzia do odkrywania tego rodzaju wad, ale często potrzebna jest pomoc ludzka, aby potwierdzić problem. Wykorzystanie deserializacji jest nieco trudne, ponieważ exploits nie będą działać bez żadnych ręcznych zmian.

Gdy aplikacja deserializuje złośliwe obiekty dostarczone przez jednostkę atakującą. Może to prowadzić do dwóch rodzajów ataków i.E ataki związane ze strukturą danych i obiektami, w których atakujący modyfikuje logikę aplikacji lub wykonuje zdalne kod i typowe ataki manipulowania danymi, w których istniejące struktury danych są używane ze zmodyfikowaną treścią na przykład ataki związane z kontrolą dostępu. Serializacja może być używana w zdalnej komunikacji procesowej (RPC) lub w komunikacji międzyprocesowej (IPC), buforowaniu danych, usług internetowych, serwerach pamięci podręcznej baz danych, systemach uwierzytelniania API, plikach cookie HTML, parametrach formularzy HTML itp. Ataki deserializacyjne można złagodzić, nie używając serializowanych obiektów z niezaufanych źródeł, wdrażając kontrole integralności, izolując kod działający w środowisku niskim uprzywilejowanym, monitorując przychodzące i wychodzące połączenia sieciowe z serwerów, które często deserializują się często.

Korzystanie z komponentów o znanych lukach:

Różne komponenty, takie jak biblioteki, frameworki i moduły oprogramowania, są używane przez większość programistów w aplikacji internetowej. Biblioteki te pomagają programistom uniknąć niepotrzebnej pracy i zapewnić potrzebną funkcjonalność. Atakerzy szukają wad i luk w tych komponentach, aby koordynować atak. W przypadku znalezienia luki bezpieczeństwa w komponencie może sprawić, że wszystkie witryny za pomocą tego samego komponentu, wrażliwe. Wykorzystania tych luk w zabezpieczeniach są już dostępne podczas pisania niestandardowego exploit od zera wymaga dużo wysiłku. Jest to bardzo powszechny i ​​powszechny problem, użycie dużych ilości komponentów w opracowywaniu aplikacji internetowej może prowadzić do nie znaczenia i zrozumienia wszystkich używanych komponentów, łatania i aktualizacji wszystkich komponentów to długa gra.

Aplikacja jest bezbronna, jeśli programista nie zna wersji używanego komponentu, oprogramowanie jest nieaktualne.e System operacyjny, DBMS, działanie oprogramowania, środowiska wykonawcze i biblioteki, skanowanie podatności nie odbywa się regularnie, kompatybilność łatania oprogramowania nie jest testowana przez programistów. Można temu zapobiec, usuwając nieużywane zależności, pliki, dokumentację i biblioteki, regularnie sprawdzając wersję komponentów klienta i serwera, uzyskiwanie komponentów i bibliotek z oficjalnych i zaufanych bezpiecznych źródeł, monitorując niepoprawne biblioteki i komponenty, upewniając się do regularnego aktualizacji i łatania wrażliwych komponentów.

Te luki prowadzą do drobnych skutków, ale mogą również prowadzić do kompromisu serwera i systemu. Wiele dużych naruszeń polegało na znanych lukach komponentów. Zastosowanie wrażliwych komponentów podważa obronę aplikacji i może być punktem wyjścia do dużego ataku.

Niewystarczające rejestrowanie i monitorowanie:

Większość systemów nie podejmuje wystarczających środków i kroków w celu wykrycia naruszeń danych. Średni czas reakcji incydentu wynosi 200 dni po jego wydarzeniu. Niewystarczające rejestrowanie i monitorowanie pozwala atakującemu na dalszy atak systemu, utrzymanie jego wstrzymania systemu, manipulacji, przytrzymywania i wyodrębniania danych zgodnie z potrzebą. Atakerzy używają braku monitorowania i reakcji na swoją korzyść, aby zaatakować aplikację internetową.
Niewystarczające rejestrowanie i monitorowanie występuje w dowolnym momencie.Dzienniki aplikacji, które nie są monitorowane pod kątem nietypowych działań, zdarzeń na kontrolę, takie jak nieudane próby logowania i wysokie wartości transakcji, nie są odpowiednio zarejestrowane, ostrzeżenia i błędy generują niejasne komunikaty o błędach, brak ostrzeżenia o uruchomieniu przy użyciu automatycznych narzędzi DAST, nie można wykryć lub szybko aktywne ataki itp. Można je złagodzić, zapewniając wszystkie logowanie, awarie kontroli dostępu i walidację wejściową po stronie serwera można zalogować, aby zidentyfikować złośliwe konto użytkownika i przechowywać wystarczającą ilość czasu na opóźnione badanie kryminalistyczne, zapewniając, że generowane dzienniki są w formacie Kompatybilne z scentralizowanymi rozwiązaniami zarządzania dziennikami, zapewniając kontrole integralności w transakcjach o wysokiej wartości, ustanawiając system terminowych powiadomień o podejrzanych działaniach itp.

Większość udanych ataków zaczyna się od sprawdzania i sondowania podatności na zagrożenia w systemie, umożliwiając te sondowanie w zagrożeniu może spowodować naruszenie całego systemu.

Wniosek:

Słabości bezpieczeństwa w aplikacji internetowej wpływają na wszystkie podmioty związane z tą aplikacją. Te luki muszą być zadbane o zapewnienie użytkownikom bezpiecznego środowiska. Atakerzy mogą wykorzystać te luki w celu naruszenia systemu, zdobycia go i eskalację uprawnień. Wpływ naruszenia aplikacji internetowej można wizualizować, od skradzionych poświadczeń karty kredytowej i kradzieży tożsamości na wyciek wysoce poufnych informacji itp. w zależności od potrzeb i wektorów ataku złośliwych bytów.