sans top 20 security vulnerabilities software applications
Poznaj i zrozum 20 najważniejszych luk w zabezpieczeniach SANS w aplikacjach oprogramowania z przykładami w tym samouczku:
Słowo BEZ nie jest zwykłym słowem słownikowym, ale oznacza SysAdmin , Rewizja , Sieć , i Bezpieczeństwo .
W tym samouczku dowiemy się o 20 największych słabościach zabezpieczeń SANS, które możemy znaleźć w oprogramowaniu, oraz o tym, co możemy zrobić, aby je złagodzić.
Czego się nauczysz:
- Wpływ sieci SAN na społeczność cyberbezpieczeństwa
- Lista 20 najważniejszych luk w zabezpieczeniach oprogramowania SANS
- # 1) CWE-119: Błąd bufora pamięci
- # 2) CWE-79: Cross-site Scripting
- # 3) CWE-20: Niezatwierdzony błąd danych wejściowych
- # 4) CWE-200: Błąd ekspozycji wrażliwych informacji
- # 5) CWE-125: Błąd odczytu poza zakresem
- # 6) CWE-89: Wstrzyknięcie SQL
- # 7) CWE-416: Wcześniej zwolniona pamięć
- # 8) CWE-190: Błąd przepełnienia liczby całkowitej
- # 9) CWE-352: Fałszowanie żądań między lokacjami
- # 10) CWE-22: Przechodzenie do katalogu
- # 11) CWE-78: Wstrzykiwanie poleceń systemu operacyjnego
- # 12) CWE-787: Błąd zapisu poza zakresem
- # 13) CWE-287: Błąd nieprawidłowego uwierzytelniania
- # 14) CWE-476: Dereferencing a NULL Pointer
- # 15) CWE-732: Niepoprawne przypisanie uprawnień
- # 16) CWE-434: Nieograniczone przesyłanie plików
- # 17) CWE-611: Ujawnianie informacji poprzez jednostki XML
- # 18) CWE-94: Wstrzyknięcie kodu
- # 19) CWE-798: Zakodowany klucz dostępu
- # 20) CWE-400: Niekontrolowane zużycie zasobów
- Często Zadawane Pytania
- Wniosek
Wpływ sieci SAN na społeczność cyberbezpieczeństwa
Według BEZ , the BEZ Instytut powstał jako organizacja badawczo-edukacyjna. Jego różne programy bezpieczeństwa są bardzo wszechstronne i mają pozytywny wpływ na ponad 165 000 specjalistów ds. Bezpieczeństwa na całym świecie.
Możemy słusznie powiedzieć, że dzięki tego rodzaju pokryciu pochodzącemu z SANS i innym pozytywnym recenzjom, jakie otrzymują, czynią je najbardziej zaufaną i zdecydowanie największą organizacją szkoleń InfoSec i różnych certyfikatów bezpieczeństwa na świecie.
W tym artykule skupimy się na 20 najczęstszych błędach sieci SANS, które mogą narazić oprogramowanie na atak, oraz na niektórych mechanizmach zabezpieczeń, które można zaimplementować w celu ograniczenia tych błędów. Chociaż możemy znaleźć więcej niż 20, ale omówimy 20 najważniejszych luk w zabezpieczeniach.
Lista 20 najważniejszych luk w zabezpieczeniach oprogramowania SANS
- CWE-119 : Błąd bufora pamięci
- CWE-79 : Skrypty między witrynami
- CWE-20 : Niezatwierdzony błąd danych wejściowych
- CWE-200 : Błąd ekspozycji informacji wrażliwych
- CWE-125 : Błąd odczytu poza zakresem
- CWE-89 : Wstrzyknięcie SQL
- CWE-416 : Błąd wolnej pamięci
- CWE-190 : Błąd przepełnienia liczby całkowitej
- CWE-352 : Fałszerstwo żądań między lokacjami
- CWE-22 : Przechodzenie do katalogu
- CWE-78 : OS Command Injection
- CWE-787 : Błąd zapisu poza zakresem
- CWE-287 : Błąd nieprawidłowego uwierzytelnienia
- CWE-476 : Dereferencing NULL Pointer
- CWE-732 : Niepoprawne przypisanie uprawnień
- CWE-434 : Nieograniczone przesyłanie plików
- CWE-611 : Udostępnianie informacji za pośrednictwem jednostek XML
- CWE-94 : Wstrzyknięcie kodu
- CWE-798 : Zakodowany klucz dostępu
- CWE-400 : Niekontrolowane zużycie zasobów
Co oznacza termin CWE?
Plik Wyliczenie wspólnych słabości (CWE) to akceptowana przez społeczność lista luk w oprogramowaniu i sprzęcie z kodem identyfikacyjnym przypisanym do każdej słabości. Celem jest zidentyfikowanie różnych błędów w oprogramowaniu i sprzęcie, aby móc naprawić i złagodzić wszystkie te wady.
# 1) CWE-119: Błąd bufora pamięci
Ta wada jest zwykle wprowadzana na etapach architektury i projektowania, wdrażania i eksploatacji SDLC.
To przepełnienie buforu ma miejsce, gdy proces aplikacji próbuje przechowywać więcej danych, niż może pomieścić w pamięci. Ponieważ bufory mogą przechowywać tylko pewien poziom danych, a gdy ten poziom zostanie osiągnięty i przekroczony, dane przepływają do innej lokalizacji pamięci, która może uszkodzić dane już zawarte w tym buforze.
Ten incydent zdarza się czasami przypadkowo z powodu jakiegoś błędu programistycznego, ale jego następstwo może być katastrofalne, ponieważ może to spowodować usunięcie danych, kradzież poufnych informacji, a nawet cała aplikacja może ulec awarii z powodu przepełnienia bufora.
Poniższy przykład przedstawia bufor przydzielony z pamięcią 8-bajtową. Ale przepełniony o 2 bajty, ponieważ więcej danych zostało wysłanych do wykonania.
(wizerunek źródło )
# 2) CWE-79: Cross-site Scripting
Cross-site Scripting (XSS) to atak polegający na wstrzyknięciu, który zwykle ma miejsce, gdy złośliwy aktor lub osoba atakująca wstrzykuje złośliwy lub szkodliwy skrypt do aplikacji internetowej, którą można uruchomić za pośrednictwem przeglądarek internetowych. Gdy złośliwy skrypt znajdzie się w zaatakowanym systemie, może zostać wykorzystany do wykonywania różnych złośliwych działań.
Niektóre złośliwe działania mogą polegać na przesyłaniu prywatnych informacji, takich jak pliki cookie, które zawierają informacje o sesji, z komputera ofiary na komputer atakującego.
Wystąpienie cross-site scripting:
- Gdy niezatwierdzone i niezaufane dane są wprowadzane do aplikacji internetowej za pośrednictwem żądania formularza internetowego.
- Gdy aplikacja internetowa natychmiast wyświetla stronę internetową, która zawiera te złośliwe dane.
- Podczas procesu generowania strony oprogramowanie nie sprawdza poprawności danych, które zawierają treści, które mogą być wykonywane przez przeglądarkę internetową, takie jak HTML i JavaScript.
- Ofiara nieświadomie odwiedza stronę, która została wygenerowana przez przeglądarkę internetową, na której znajduje się złośliwy skrypt, który został wstrzyknięty przy użyciu niezaufanych danych.
- Szkodliwy skrypt pochodzi ze strony wysłanej przez serwer sieciowy osoby atakującej, a następnie przejęta przeglądarka systemu przechodzi dalej, aby przetworzyć złośliwy skrypt.
- Ta czynność narusza zasady przeglądarki internetowej dotyczące tego samego pochodzenia, zgodnie z którą skrypty pochodzące z jednej domeny nie powinny mieć dostępu do zasobów ani wykonywać kodu w innej domenie poza własną domeną.
(wizerunek źródło )
# 3) CWE-20: Niepotwierdzony błąd danych wejściowych
Aplikacja otrzymuje dane wejściowe, ale nie sprawdza poprawności danych wejściowych, czy posiada wszystkie niezbędne szczegóły potrzebne do przyjęcia ich do systemu w celu przetworzenia.
Gdy występuje sanityzacja danych wejściowych, można jej użyć do sprawdzenia wszelkich potencjalnie niebezpiecznych danych wejściowych w celu zapewnienia, że dane wejściowe są bezpieczne do przetwarzania z kodem źródłowym lub gdy jest to dane wejściowe potrzebne do komunikacji z innymi komponentami.
Gdy takie dane wejściowe nie zostaną odpowiednio oczyszczone lub zweryfikowane, utoruje to atakującemu drogę do wysłania złośliwych danych wejściowych, które główna aplikacja będzie hojnie przetworzyć, co doprowadzi do zmian w przepływie kontroli, arbitralnej kontroli zasobu lub dowolnego kodu wykonanie.
Poniższe obrazy pokazują, że dobra aplikacja nie powinna akceptować skryptu ani polecenia jako danych wejściowych. Jeśli takie dane wejściowe nie zostaną odpowiednio oczyszczone, aplikacja przetworzy je, myśląc, że to prawidłowe żądanie.
(wizerunek źródło )
# 4) CWE-200: Błąd ekspozycji wrażliwych informacji
Dzieje się tak, gdy aplikacja świadomie i nieświadomie ujawnia informacje poufne i wrażliwe osobie atakującej, która nie ma uprawnień dostępu do tych informacji.
Różne błędy prowadzą do ujawnienia tych informacji osobie atakującej. Waga tego błędu różni się w zależności od kontekstu, w którym działa aplikacja, typu ujawnianych poufnych informacji oraz tego, co aktor może uzyskać z ujawnionych informacji.
Poniżej znajduje się kilka poufnych informacji, które mogą zostać ujawnione:
- Dane osobowe, takie jak wiadomości osobiste, dane finansowe, zapisy stanu zdrowia, położenie geograficzne lub dane kontaktowe
- Szczegóły konfiguracji systemu i środowisko, na przykład, system operacyjny i zainstalowane pakiety
- Dokumentacja biznesowa i własność intelektualna
- Szczegóły konfiguracji sieci
- Stan aplikacji wewnętrznej
- Metadane, takie jak nagłówki wiadomości
Czasami w naszych aplikacjach lub witrynach internetowych mogą wystąpić problemy techniczne, takie jak błąd łączności z bazą danych, błąd czasu wykonywania i błąd sieci.
Jeśli takie błędy nie są odpowiednio obsługiwane podczas programowania, tj. Gdy aplikacja wyświetla komunikat o błędzie, może wyświetlić publicznie informacje, które osoba atakująca może wykorzystać do złośliwych celów, jak na poniższym obrazku.
# 5) CWE-125: Błąd odczytu poza zakresem
Zwykle ma to miejsce, gdy aplikacja odczytuje dane poza normalnym poziomem, albo do końca, albo przed początkiem bufora. Daje to atakującemu nieuprzywilejowany dostęp do odczytu poufnych informacji z innych lokalizacji w pamięci, co również może prowadzić do awarii systemu lub aplikacji.
Awaria z pewnością nastąpi, gdy kod odczyta dane i uzna, że istnieje wskaźnik, który zatrzymuje operację odczytu, jak NULL, który jest stosowany do ciągu
W poniższym kodzie funkcja pobiera wartość z lokalizacji indeksu tablicy, która z kolei jest parametrem wejściowym funkcji.
(wizerunek źródło )
Z powyższego kodu widzimy, że funkcja sprawdza, czy podany indeks tablicy jest mniejszy niż maksymalna długość tablicy, ale nie sprawdza wartości minimalnej.
To cofnięcie walidacji doprowadzi do akceptacji wartości ujemnej jako indeksu tablicy wejściowej, powodując odczyt poza zakresem, co z kolei daje dostęp do wrażliwej pamięci.
Istnieje potrzeba zweryfikowania indeksu tablicy wejściowej, jeśli mieści się w maksymalnym i minimalnym zakresie wymaganym dla tablicy.
Jeśli teraz sprawdzisz poniższy przykład, zobaczysz, że instrukcja IF wymaga modyfikacji, aby uwzględnić walidację minimalnego zakresu.
najlepsza konwersja youtube do aplikacji mp3
# 6) CWE-89: Wstrzyknięcie SQL
Wstrzyknięcie SQL to forma luki w zabezpieczeniach, polegająca na tym, że osoba atakująca wstrzykuje kod Structured Query Language (SQL) do pola wejściowego formularza internetowego w celu uzyskania dostępu do zasobów lub zmiany danych, do których nie ma dostępu.
Tę lukę można wprowadzić do aplikacji na etapie projektowania, wdrażania i eksploatacji.
To, co robi to zapytanie SQL, polega na wysłaniu nieautoryzowanego żądania do bazy danych o pewne informacje. Podczas normalnej operacji wprowadzania danych do uwierzytelniania użytkownika używany jest formularz sieci Web. Gdy użytkownik wpisze swoją nazwę i hasło w polach tekstowych, te wartości zostaną wstawione do zapytania SELECT.
Jeśli wartości wejściowe są poprawne, użytkownik uzyskuje dostęp do aplikacji lub żądania, ale jeśli wartości są niepoprawne, dostęp zostanie zablokowany.
Niektóre formularze sieci Web nie mają obecnie mechanizmów blokowania złośliwych danych wejściowych, a osoba atakująca może użyć pól wprowadzania, aby wysłać złośliwe żądania do bazy danych. To pojedyncze żądanie może zapewnić im dostęp do całej bazy danych, która może zawierać poufne informacje.
# 7) CWE-416: Wcześniej zwolniona pamięć
Ten problem jest spowodowany odwoływaniem się do pamięci po jej wydaniu, co może poważnie doprowadzić do awarii programu. Kiedy używasz wcześniej zwolnionej pamięci, może to mieć niekorzystne konsekwencje, takie jak uszkodzenie ważnych danych, wykonanie dowolnego kodu, które jest zależne od czasu wady.
Dwie typowe przyczyny to:
- Warunki błędów w oprogramowaniu oraz w innych wyjątkowych przypadkach.
- Brak wyjaśnienia, która część programu spowodowała zwolnienie pamięci.
W tym przypadku pamięć jest przydzielana do innego wskaźnika natychmiast po jej zwolnieniu. Poprzedni wskaźnik do zwolnionej pamięci jest używany ponownie i teraz wskazuje miejsce w pobliżu nowej alokacji. Do czasu zmiany danych może to spowodować uszkodzenie używanej pamięci i spowodować, że aplikacja będzie zachowywać się w nieokreślony sposób.
# 8) CWE-190: Błąd przepełnienia liczby całkowitej
Gdy obliczenia są przetwarzane przez aplikację i istnieje logiczne założenie, że wynikowa wartość będzie większa niż dokładna wartość, następuje przepełnienie liczby całkowitej. Tutaj wartość całkowita wzrasta do wartości, której nie można przechowywać w lokalizacji.
W takim przypadku wartość zwykle zawija się i staje się bardzo małą lub ujemną wartością. Jeśli oczekiwane jest opakowanie, wszystko jest w porządku, ale mogą wystąpić konsekwencje bezpieczeństwa, jeśli opakowanie jest nieoczekiwane. W takim scenariuszu można go określić jako krytyczny, ponieważ wynik jest używany do zarządzania pętlami, podejmowania decyzji dotyczących bezpieczeństwa, alokowania pamięci i wielu innych.
Ta słabość zazwyczaj prowadzi do nieregularnego zachowania i może prowadzić do awarii. Jeśli wartość jest ważna dla danych niż dla przepływu, może wystąpić proste uszkodzenie danych. Ale jeśli zawijanie prowadzi do dalszych warunków, takich jak przepełnienie bufora, może dojść do uszkodzenia pamięci.
Ten problem może wywołać przepełnienia bufora, które mogą zostać użyte do wykonania dowolnego kodu przez osobę atakującą. Ten błąd przepełnienia całkowitoliczbowego jest zwykle wprowadzany do systemu na etapie projektowania i wdrażania SDLC.
# 9) CWE-352: Fałszowanie żądań między lokacjami
Dzieje się tak, gdy aplikacja internetowa nie weryfikuje w wystarczającym stopniu żądania HTTP, niezależnie od tego, czy żądanie faktycznie pochodziło od właściwego użytkownika, czy nie. Serwery WWW są zaprojektowane tak, aby akceptować wszystkie żądania i udzielać na nie odpowiedzi.
Załóżmy, że klient wysyła kilka żądań HTTP w jednej lub kilku sesjach. Serwerowi sieciowemu bardzo trudno jest wiedzieć, czy wszystkie żądania były autentyczne, czy nie, i zwykle jest przetwarzane. Osoba atakująca może mieć swój sposób na zmuszenie klienta do odwiedzenia specjalnie spreparowanej strony internetowej i może teraz wykonać niektóre żądania, takie jak przelew środków, zmiana adresu e-mail i wiele innych.
Osoba atakująca natychmiast uzyska dostęp i będzie mogła ukraść dane, a nawet je zniszczyć. Zawsze mogą zachować swój dostęp, a po zakończeniu mogą przejąć dziennik audytu, aby zapobiec przyszłym badaniom śledczym, które mogłyby ujawnić ich exploit.
Poniższy obraz przedstawia osobę atakującą nakłaniającą użytkownika do wykonania działań, których nie zamierza wykonywać.
# 10) CWE-22: Przechodzenie do katalogu
Przechodzenie przez katalog lub przechodzenie przez ścieżkę pliku to luka w zabezpieczeniach sieci Web, która umożliwia osobie atakującej odczytywanie dowolnych plików na serwerze, na którym aktualnie jest uruchomiona aplikacja.
Te pliki mogą być kodem aplikacji, poświadczeniami dla systemów zaplecza i plikami systemu operacyjnego. W innym scenariuszu osoba atakująca może być w stanie zapisać na tych dowolnych plikach na serwerze, co umożliwi im modyfikowanie danych lub zachowania aplikacji, a to da mu całkowitą kontrolę nad serwerem.
(wizerunek źródło )
# 11) CWE-78: Wstrzykiwanie poleceń systemu operacyjnego
Chodzi o niewłaściwe oczyszczanie specjalnych elementów, które mogą prowadzić do modyfikacji zamierzonego polecenia systemu operacyjnego, które jest wysyłane do innego komponentu. Osoba atakująca może wykonać te złośliwe polecenia w docelowym systemie operacyjnym i uzyskać dostęp do środowiska, którego nie powinien czytać ani modyfikować.
To niezmiennie pozwalało atakującemu na wykonywanie niebezpiecznych poleceń bezpośrednio w systemie operacyjnym.
Ilekroć ta luka występuje w uprzywilejowanym programie, umożliwia atakującemu użycie poleceń dozwolonych w środowisku lub wywołanie innych poleceń z uprawnieniami, których osoba atakująca nie ma, co może zwiększyć liczbę szkód, które mogą wystąpić.
# 12) CWE-787: Błąd zapisu poza zakresem
Dzieje się tak, gdy aplikacja zapisuje dane poza końcem lub przed początkiem wyznaczonego bufora.
Kiedy tak się dzieje, efektem końcowym jest zwykle uszkodzenie danych, awaria systemu lub aplikacji. To, co robi aplikacja, to pewnego rodzaju arytmetyka wskaźnika, która jest używana do odwoływania się do lokalizacji pamięci poza granicami bufora.
# 13) CWE-287: Błąd nieprawidłowego uwierzytelniania
Dzieje się tak, gdy osoba atakująca twierdzi, że ma prawidłową tożsamość, ale oprogramowanie nie mogło zweryfikować lub udowodnić, że roszczenie jest prawidłowe.
Oprogramowanie nieprawidłowo weryfikuje dane logowania użytkownika, w wyniku czego osoba atakująca może uzyskać pewne uprawnienia w aplikacji lub ujawnić poufne informacje, które umożliwiają im dostęp do poufnych danych i wykonanie dowolnego kodu.
# 14) CWE-476: Dereferencing a NULL Pointer
Wyłuskiwanie pustego wskaźnika ma miejsce, gdy aplikacja odwołuje się do wskaźnika, który miał zwrócić prawidłowy wynik, zamiast tego zwraca NULL, co prowadzi do awarii. Dereferencja pustego wskaźnika może się zdarzyć z powodu wielu błędów, takich jak warunki wyścigu i niektóre błędy programowania.
Procesy wykonywane przy pomocy wskaźnika NULL zwykle kończą się niepowodzeniem, a możliwość przeprowadzenia procesu jest bardzo nikła. Pomaga to atakującym w wykonaniu złośliwego kodu.
(wizerunek źródło )
# 15) CWE-732: Niepoprawne przypisanie uprawnień
Ta luka występuje, gdy aplikacja przypisuje uprawnienia do bardzo ważnego i krytycznego zasobu w taki sposób, że złośliwy użytkownik może uzyskać do niego dostęp.
Udzielenie wielu osobom uprawnień do zasobu może prowadzić do ujawnienia lub zmodyfikowania poufnych informacji przez osobę atakującą. Jeśli nie ma sprawdzeń pod kątem tego rodzaju podejścia do przypisywania uprawnień do zasobów, może to doprowadzić do bardzo katastrofalnego końca, jeśli konfiguracja programu lub niektóre poufne dane dostaną się w niepowołane ręce.
# 16) CWE-434: Nieograniczone przesyłanie plików
Ta luka występuje, gdy aplikacja nie sprawdza poprawności typów plików przed przesłaniem plików do aplikacji. Ta luka jest niezależna od języka, ale zwykle występuje w aplikacjach napisanych w językach ASP i PHP.
Niebezpieczny typ pliku to plik, który może być automatycznie przetwarzany w środowisku aplikacji.
Poniższy program przedstawia przesyłanie pliku PHP. Typ pliku nie został zweryfikowany i zweryfikowany przed przesłaniem do katalogu webroot. W wyniku tej słabości osoba atakująca może przesłać dowolny plik PHP i wykonać go, uzyskując bezpośredni dostęp do przesłanego pliku.
# 17) CWE-611: Ujawnianie informacji poprzez jednostki XML
Gdy dokument XML jest przesyłany do aplikacji w celu przetworzenia, a dokument ten zawiera jednostki XML o jednolitym identyfikatorze zasobu, które są tłumaczone na inny dokument w innej lokalizacji niż zamierzona. Ta anomalia może spowodować, że wniosek będzie dołączał nieprawidłowe dokumenty do swojego wyjścia.
Dokumenty XML zawierają czasami definicję typu dokumentu (DTD), która służy do definiowania jednostek XML i innych funkcji. Poprzez DTD jednolity identyfikator zasobu może służyć jako forma zastępczego ciągu. To, co zrobi parser XML, to dostęp do zawartości zawartej w jednolitym identyfikatorze zasobu i wprowadzenie tej zawartości z powrotem do dokumentu XML w celu wykonania.
(wizerunek źródło )
# 18) CWE-94: Wstrzyknięcie kodu
Istnienie składni kodu w danych użytkownika zwiększa możliwość atakującego do zmiany zaplanowanego zachowania kontrolnego i wykonania dowolnego kodu. Ta luka jest określana jako „słabe punkty wstrzykiwania” i ta słabość może spowodować, że kontrola danych stanie się kontrolowana przez użytkownika.
Ta luka w zabezpieczeniach przedstawia scenariusz, w którym oprogramowanie wpuszcza niezaufane dane do kodu i nie sprawdza poprawności znaków specjalnych, co może mieć negatywny wpływ zarówno na zachowanie segmentu kodu, jak i na składnię.
Krótko mówiąc, osoba atakująca byłaby w stanie wstrzyknąć jakiś rodzaj dowolnego kodu i wykonać go w aplikacji. Poniższy kod PHP przedstawia użycie funkcji eval () w niezaufanych danych. W poniższym kodzie osoba atakująca może przekazać do kodu dowolny kod parametru „param”, który następnie zostanie wykonany w oprogramowaniu.
Poniższy przykład wyjaśnia wywołanie phpinfo () funkcjonować. Tę lukę można dalej wykorzystać w innych przypadkach do wykonywania dowolnych poleceń systemu operacyjnego w oprogramowaniu docelowym za pośrednictwem wywołania system ().
# 19) CWE-798: Zakodowany klucz dostępu
Dzieje się tak, gdy hasło i klucz dostępu są na stałe zakodowane w aplikacji bezpośrednio w celu uwierzytelniania przychodzącego i komunikacji wychodzącej z niektórymi komponentami zewnętrznymi oraz w celu szyfrowania danych wewnętrznych. Zakodowane na stałe dane logowania zwykle powodują lukę, która otwiera atakującemu drogę do ominięcia uwierzytelniania skonfigurowanego przez administratora oprogramowania.
Administratorowi systemu zawsze będzie bardzo trudno wykryć tę lukę i ją naprawić.
Istnieją dwa główne nurty tej słabości:
- Przychodzące : Aplikacja zawiera system uwierzytelniania, który sprawdza poprawność danych wejściowych na podstawie zakodowanych szczegółów.
- Wychodzący : Aplikacja łączy się z innym systemem, a szczegóły połączenia z innym systemem są na stałe zakodowane w systemie.
W strumieniu przychodzącym zawsze istnieje domyślne konto administratora, które jest tworzone, a poświadczenia dostępu do niego zostaną na stałe zakodowane w aplikacji i powiązane z tym domyślnym kontem administratora.
Zakodowane na stałe szczegóły są zwykle takie same w każdej instalacji aplikacji i nikt nie może tego zmienić ani wyłączyć. Nawet administratorzy systemu nie mają tego prawa, poza tym, że mogą ręcznie modyfikować aplikację. Jeśli hasło zostanie kiedykolwiek ujawnione publicznie, osoba atakująca może uzyskać dostęp do całej aplikacji i może nią manipulować dla własnego zysku.
Ponieważ wszystkie instalacje aplikacji mają to samo hasło, nawet jeśli są zainstalowane w oddzielnych organizacjach, może to spowodować bardzo masowe ataki na wszystkie granice organizacji, na przykład, wstrzyknięcie do aplikacji robaka, który będzie się rozprzestrzeniał.
Strumień wychodzący dotyczy tylko systemów frontonu, które uwierzytelniają się za pomocą usługi zaplecza. Usługa zaplecza może wymagać twardego kodu lub stałego hasła, które można łatwo znaleźć. To, co robi programista, to po prostu zakodowanie tych poświadczeń zaplecza w oprogramowaniu front-end. Każdy użytkownik tej aplikacji może mieć możliwość wyodrębnienia hasła.
Każde oprogramowanie po stronie klienta, w którym hasło i klucz dostępu jest zakodowane na stałe, stanowi zwykle większe zagrożenie niż te, które nie są zakodowane na stałe, ponieważ wyodrębnienie hasła z pliku binarnego jest zwykle bardzo łatwe do wykonania.
# 20) CWE-400: Niekontrolowane zużycie zasobów
Ta luka występuje, gdy aplikacja nie kontroluje prawidłowo alokacji i utrzymania ograniczonego zasobu, co pozwala atakującemu na wpłynięcie na ilość zużytych zasobów, co ostatecznie doprowadzi do wyczerpania dostępnych zasobów.
Część ograniczonych zasobów obejmuje pamięć, pamięć systemu plików, pozycje puli połączeń bazy danych i procesor.
Załóżmy, że osoba atakująca może wyzwolić alokację tych ograniczonych zasobów, a liczba lub rozmiar zasobów nie jest kontrolowany, wtedy atakujący może spowodować chaos poprzez odmowę usługi, która zużywa wszystkie dostępne zasoby.
Gdy tak się stanie, uniemożliwi to właściwym użytkownikom dostęp do aplikacji, co niezmiennie będzie miało negatywny wpływ na środowisko. Na przykład, kiedy pamięć aplikacji przechodzi atak polegający na wyczerpaniu, może to spowolnić całą aplikację, a także system operacyjny hosta.
Trzy różne przypadki, które mogą prowadzić do wyczerpania zasobów, to:
- Brak dławienia liczby przydzielonych zasobów
- Utrata wszystkich odniesień do zasobu przed osiągnięciem etapu wyłączenia
- Niepowodzenie zamknięcia / zwrócenia zasobu po przetworzeniu
Problem wyczerpania zasobów jest zwykle wynikiem nieprawidłowej realizacji następujących scenariuszy:
- Warunki błędów i inne wyjątkowe okoliczności.
- Istnieje mieszana reakcja na to, która część programu uwalnia zasób.
Poniższy przykład pomaga zademonstrować naturę tej luki i opisać metody, których można użyć do ograniczenia ryzyka.
Poniższy przykład wyjaśnia lukę:
(wizerunek źródło )
Ten program nie śledzi liczby wykonanych połączeń i nie ogranicza liczby dostępnych połączeń. Rozwidlanie to tylko jeden ze sposobów wykorzystywanych przez atakującego do spowodowania wyczerpania się procesora, procesów lub pamięci w systemie poprzez wykonanie dużej liczby połączeń.
Atakujący zużywa wszystkie dostępne połączenia, uniemożliwiając innym zdalny dostęp do systemu.
Często Zadawane Pytania
P # 1) Co oznacza SANS?
Odpowiedź: SANS oznacza SysAdmin, Audit, Network i Security.
Pytanie 2) Wymień kilka przykładów luk w zabezpieczeniach.
Odpowiedź: Przykłady są następujące:
- Luki w oprogramowaniu
- Luki w zabezpieczeniach zapory
- Luki w sieci
- Luki w systemie operacyjnym
- Luki w zabezpieczeniach serwera WWW
- Luki w bazach danych
P # 3) Jaka jest różnica między zagrożeniami a lukami?
Odpowiedź: Zagrożenie to możliwość wykonania złośliwego lub niechcianego działania w celu uszkodzenia systemu komputerowego lub aplikacji poprzez istniejące luki w systemie. Przykład: ransomware.
Luki w zabezpieczeniach to słabe punkty systemu, które mogły umożliwić niepożądanemu lub nieautoryzowanemu dostęp atakującemu w celu zinfiltrowania szkody w organizacji. Przykład: Błędna konfiguracja zapory.
Pytanie 4) Jakie są najczęstsze luki w zabezpieczeniach?
Odpowiedź: Są to następujące:
- Wstrzyknięcie SQL
- Skrypty między witrynami
- Błędna konfiguracja zabezpieczeń
- Narażenie wrażliwych danych
- Uszkodzone uwierzytelnianie
- Zarządzanie sesjami
Wniosek
Ta lista 20 największych luk w zabezpieczeniach SANS nie jest regułą ani polityką, ale przewodnikiem, który ma nam pomóc w unikaniu luk w oprogramowaniu. Niezależnie od tego, czy jesteśmy programistą, czy ekspertem ds. Bezpieczeństwa, teraz pozostaje nam postępować zgodnie z tym przewodnikiem, aby dowiedzieć się, co można zrobić, aby uniknąć błędów, które mogą prowadzić do luk w naszej aplikacji, które mogą stworzyć backdoora dla aktora do wykonania złośliwego działania.
rekomendowane lektury
- Testowanie bezpieczeństwa (kompletny przewodnik)
- Acunetix Web Vulnerability Scanner (WVS) Narzędzie do testowania zabezpieczeń (przegląd praktyczny)
- Przewodnik po ocenie i zarządzaniu lukami w sieci
- 10 najpotężniejszych narzędzi do skanowania oceny luk w zabezpieczeniach w 2021 r
- Ocena podatności i różnica w testach penetracyjnych
- Zabezpieczenia Jenkins: Włączanie bezpieczeństwa i macierzy bezpieczeństwa projektu
- 4 najpopularniejsze błędy w cyberbezpieczeństwie, których należy unikać podczas testowania oprogramowania
- 10 NAJLEPSZYCH programów do zabezpieczania sieci (TYLKO NAJLEPSZY WYBÓR W 2021 R.)