Ludności stanu rasy w aplikacjach internetowych

Ludności stanu rasy w aplikacjach internetowych
Gdy aplikacja internetowa skonfigurowana do zarządzania funkcjami w ustalonej sekwencji jest wymagana do jednoczesnego wykonywania dwóch lub więcej operacji, nastąpi atak stanu wyścigu. Ta technika wykorzystuje opóźnienie czasowe między tym, kiedy usługa jest wprowadzana i gdy nastąpi kontrola bezpieczeństwa. Atak ten można przeprowadzić na jeden z dwóch sposobów, w oparciu o zastosowania wielowątkowe: wtargnięcie poniesione przez niezaufane procesy i włamanie poniesione przez godne zaufania proces, który może mieć takie same i równe prawa.

Różne procesy mogą oddziaływać na siebie bez odpowiednich miar. Ataki te są również znane jako czas ataku, czas użytkowania lub ataki TOC/TOU. Ubezpieczenia warunków wyścigowych zdarza się, że przede wszystkim ze względu na podstawowe błędy programowania zwykle tworzą deweloperzy, a te awarie okazały się kosztowne. Złośliwe istoty wykorzystały warunki wyścigowe do wielu złośliwych celów, tj.mi., Od otrzymywania bezpłatnych kuponów po obrabowanie pieniędzy z kont internetowych i firm inwestycyjnych.

Załóżmy, że dwa równoległe wątki wykonania próbują podnieść wartość zmiennej globalnej o 5. Ostatecznie zmienna globalna miałaby wartość 10. Jeśli jednak wszystkie wątki działają jednocześnie, wykonanie może być błędne bez zamków zasobów lub synchronizacji. Kiedy pierwszy wątek wykonuje pewne manipulacje tej zmiennej globalnej, drugi wątek odczytuje ją i zaczyna wykonywać inne manipulacje. W takim przypadku wartość końcowa nie byłaby zgodna z oczekiwaniami.

Dzieje się tak, ponieważ efekt zakończenia jednego wątku zależy od wyniku drugiego. Gdy dwa wątki zostaną wykonane jednocześnie, będą niezamierzone konsekwencje.

Zakres ataków stanu rasy:

Wyobraź sobie, że w dwóch wątkach powyższego przykładu wykonywane jest coś bardziej krytycznego. Aby prawidłowo wysłać pieniądze, program będzie musiał wykonać te zadania w tej sekwencji; Sprawdź, czy na koncie nadawcy jest wystarczające saldo, dodaj pieniądze do konta odbiorcy, a następnie odejdź od konta nadawcy. Ale jeśli jednocześnie przesyłasz dwa żądania, możesz uruchomić warunek, w którym zmienia się sekwencja wykonania wątku. W takiej sytuacji skończysz z inną kwotą niż oczekiwano.

Egor Homakov na stronie Starbucks na stronie Starbucks znaleziono podatność na stan wyścigu. Odkrył sposób na stworzenie nieskończonej ilości kredytu na kuponach prezentowych Starbucks za darmo za pomocą różnych przeglądarek z różnymi ciasteczkami.

Wybitny atak krach jest przykładem podatności na stan rasy. W ataku Meltdown osłabienie jest wywoływane przez równoległe przetwarzanie wyszukiwania danych z pamięci i uwierzytelniania, czy użytkownik może uzyskać dostęp do pamięci. Ta wada umożliwia narzędzie do uniknięcia standardowych kontroli uprawnień, które oddzielają mechanizm ataku od dostępu do danych systemu operacyjnego. Ta luka powoduje umożliwienie każdemu nieautoryzowanemu procesowi przeglądania danych i informacji z dowolnego innego adresu podłączonego do stanu bieżącego postępu w pamięci. W procesie wadliwego wykonywania informacje z niezatwierdzonego adresu będą często szybko ustawione w pamięci podręcznej procesora, z którego można odzyskać informacje.

Prawdziwe scenariusze ataku:

Przesyłając nieustannie liczne wnioski do serwera internetowego, możesz wyszukiwać i manipulować warunkami wyścigowymi w aplikacjach internetowych. Jeśli chcesz sprawdzić, czy możesz wypłacić więcej pieniędzy, niż masz na koncie bankowym, korzystając z funkcji Curl, możesz jednocześnie wysłać kilka żądań wypłaty na serwer.

Curl (Wycofanie 50000) i (Wycofanie 50000) i (Wycofanie 50000) i (Wycofanie 50000) i (Wycofanie 50000) i (Wycofanie 50000)

Im więcej wymagań składasz w krótkim czasie, tym większe szanse, że twój atak zadziała.

Ponadto, jeśli wyślesz asynchroniczne żądania kolejne, będziesz śledzić użytkownika kilka razy zamiast wysłać odpowiedź na błąd. I.mi., Jeśli dodasz fałszywy nagłówek zawierający %S podczas zrzucania żądań za pomocą Turbo Intruder i wklej następujący kod Python:

def skorzystanie z (cel, listy słów):
silnik = requestEngine (punkt końcowy = cel.punkt końcowy,
ConcurrentConnections = 40,
RequestSperConnection = 100,
rurociąg = false
)
Dla i w zakresie (40):
silnik.kolejka (cel.req, str (i), bramka = „sprawdź”)
silnik.OpenGate („Check”)
silnik.kompletne (limit czasu = 60)
def responsehandle (req, interesujący):
tabela.Dodaj (req)

Zobaczysz przycisk ataku. Po naciśnięciu tego intruz turbo składa 40 zapytań i skanuje kody stanu. Jeśli widzisz wiele odpowiedzi ze statusem generowanym 201, wskazuje to wiele razy, że śledziłeś tę osobę.

Istnieje podatność na stan wyścigu, w którym można uzyskać dostęp do wielu konsol oferowanych na bezpłatne konta. Większość stron internetowych, które zapewniają bezpłatne konsole, ma bezpłatne konta, pakiety standardowe i premium. Bezpłatne konta zapewniają tylko 2 lub 3 konsole na użytkownika. Aby przełamać ten limit i użyć nieograniczonych konsol, wtrąć żądanie GET za pomocą ładowników zerowych wiele razy, takich jak 100 lub 200. A następnie usuń jedną z konsol ręcznie z interfejsu użytkownika podczas pracy.

Wniosek:

Jako sposób podważania kontroli dostępu, uwzględniane są warunki wyścigu. Każdy program zależny od mechanizmów kontroli dostępu może być wrażliwy. Przez większość czasu na stronach instytucji finansowych hakerzy wykorzystują warunki wyścigowe. Ponieważ może to prowadzić do nieograniczonych korzyści finansowych dla hakera, jeśli warunek wyścigu można było odkryć na podstawie istotnej funkcji, takiej jak wypłata gotówki, przelew pieniędzy lub płatność karty kredytowej. Platformy e-commerce, gry wideo i usługi głosowania online to inne technologie wysokiego ryzyka. Wdrożenie bezpiecznej współbieżności jest tajemnicą unikania warunków wyścigowych. I możesz również używać zamków zasobów. Będzie również wbudowana funkcja blokowania dla języków programowania o zdolnościach współbieżności, które pomagają zapobiegać takim warunkom. Ponadto, zgodnie z bezpiecznymi standardami kodowania, i.mi., Kod pojęcia i kodu kontroli najmniejszych przywilejów zmniejszy szansę na naruszenie programu.