Snapchange, otwarte narzędzie do fuzzingu AWS

Amazon Web Services udostępnił nowe narzędzie Fuzzing wspierane przez KVM typu open source

Wiadomość została opublikowanae Amazon wydał nowe narzędzie do fuzzingu o nazwie Snapchange, który umożliwia sprawdzanie plików wykonywalnych bez ich modyfikowania i bez obecności kodu źródłowego aplikacji. Jest to posunięcie zaprojektowane częściowo w celu rozwiązania problemów związanych z bezpieczeństwem łańcucha dostaw oprogramowania.

W poście Amazon wspomniano, że Snapchange rozpoczął się jako eksperyment z zespołu badawczego open source AWS Find and Fix (F2) w celu zbadania potencjału wykorzystania KVM do fuzzingu migawek.

Dziś z radością ogłaszamy Snapchange, nowy projekt typu open source, który znacznie ułatwia fuzzowanie oparte na migawkach. Snapchange umożliwia fuzzowanie docelowego pliku binarnego przy minimalnych modyfikacjach, zapewniając użyteczny wgląd, który pomaga w fuzzingu.

Snapchange to platforma Rust do tworzenia fuzzerów, które odtwarzają migawki pamięci fizycznej w celu zwiększenia wydajności i zmniejszenia złożoności fuzzingu wielu typów celów. Snapchange wykorzystuje funkcje wbudowanego menedżera maszyn wirtualnych jądra Linuksa, znanego jako Kernel Virtual Machine lub KVM. 

O Snapchange'ie

Wspomina się, że Snapchange umożliwia ładowanie zrzutu pamięci fizycznej z pochodnym kodem wykonywalnym i organizować, za pomocą hypervisora ​​KVM cykliczne wykonywanie kodu obecny na śmietniku, iteracja po różnych kombinacjach danych wejściowych, śledzenie pojawiających się awarii lub anomalii i ponowne uruchamianie sprawdzania po kolejnej iteracji, za każdym razem, gdy segment pamięci i rejestry procesora są przywracane do pierwotnego stanu.

Iteracja resetuje się i uruchamia ponownie po nieprawidłowym zakończeniu, czas oczekiwania lub wystąpienie określonego zdarzenia. Dane wejściowe są zastępowane bezpośrednio do pamięci i aby zachować zasoby podczas inicjalizacji do stanu początkowego pamięci, po wykonaniu kolejnej iteracji określa się, jakie dane znajdują się w pamięci i uległy zmianie.

Początkowy zrzut pamięci jest tworzony przez zapisanie migawki maszyny wirtualnej w którym uruchamiane jest środowisko z testowaną aplikacją, działające pod kontrolą VirtualBox lub QEMU Logika podstawiania danych wejściowych jest ustalana poprzez tworzenie specjalnych skryptów, a pozycja startowa cyklicznego wykonywania jest ustalana przez ustawienie z punktu przerwania w debuggerze.

Na przykład, jeśli konieczne jest sprawdzenie wielostanowego przetwarzania żądania sieciowego, badacz uruchamia aplikację na systemie gościa w VirtualBox lub QEMU, w debuggerze znajduje początek wykonania procedury przetwarzania żądania (np. , po wywołaniu funkcji recv), umieszcza na nim punkt przerwania i określa obszar pamięci, do którego ładowany jest odebrany pakiet sieciowy. Następnie tworzona jest migawka systemu gościa i przesyłana do Snapchange.

W celu weryfikacji pisany jest skrypt, który zapisuje dane podczas wyliczania bezpośrednio do bufora. pakietu sieciowego, który pozwala symulować przetwarzanie rzeczywistych pakietów sieciowych. Snapchange rozpoczyna się w miejscu, w którym zostało przerwane, za każdym razem zmieniając zawartość danych w buforze i resetując stan pamięci do pierwotnego stanu.

Obsługiwane są różne strategie generowania danych wejściowych. Przy wykonywaniu równoległym można wyliczyć wiele środowisk powiązanych z różnymi rdzeniami procesora. Oprócz wykrywania błędów podczas wykonywania kodu obsługuje również zbieranie metryk wydajności, gromadzenie statystyk pokrycia w celu oceny pokrycia kodu wykonywalnego oraz śledzenie krok po kroku kodu wykonywalnego.

Dla zainteresowany projektem, powinieneś wiedzieć, że kod projektu jest napisany w języku Rust i jest dystrybuowany na licencji Apache 2.0 poprzez GitHub.

Snapchange działa w systemie Linux, ale wymaga bezpośredniego dostępu do bazowych prymitywów KVM. Dlatego obsługuje typy instancji Bare Metal EC2, które działają bez hiperwizora, ale nie obsługuje instancji zwirtualizowanych EC2.

Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się z oryginalnym ogłoszeniem W poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.