Firma Cruise, specjalizująca się w technologiach automatycznego prowadzenia pojazdów, źródłowe teksty projektu , dostarczająca narzędzia do analizy obrazów firmware'u opartego na systemie Linux oraz identyfikacji potencjalnych luk w zabezpieczeniach i wycieków danych. Kod został napisany w języku Go i na licencji Apache 2.0.
Obsługiwane są obrazy korzystające z systemów plików ext2/3/4, FAT/VFat, SquashFS oraz UBIFS. Do rozpakowywania obrazów używane są standardowe narzędzia, takie jak e2tools, mtools, squashfs-tools oraz ubi_reader. FwAnalyzer wydobywa z obrazu drzewo katalogów i ocenia zawartość na podstawie zestawu reguł. Reguły mogą być przypisane do metadanych systemu plików, typu plików i zawartości. Na wyjściu generowany jest raport w formacie JSON, podsumowujący informacje wydobyte z firmware'u oraz przedstawiający ostrzeżenia i listę plików, które nie odpowiadają przetworzonym regułom.
Obsługiwana jest kontrola uprawnień do plików i katalogów (na przykład identyfikacja dostępu do zapisu oraz niepoprawnych UID/GID), ustalana jest obecność plików wykonywalnych z flagą suid oraz korzystanie z etykiet SELinux, identyfikowane są zapomniane klucze szyfrowania oraz potencjalnie niebezpieczne pliki. W zawartości wyróżniane są pozostawione inżynierskie hasła oraz dane do debugowania, przedstawiane są informacje o wersjach, przeprowadzana jest weryfikacja zawartości na podstawie skrótów SHA-256 oraz poszukiwanie przy użyciu statycznych masek i wyrażeń regularnych. Istnieje możliwość powiązania zewnętrznych skryptów analitycznych z określonymi typami plików. Dla firmware'ów opartych na Androidzie określane są parametry kompilacji (np. wykorzystanie trybu ro.secure=1, stan ro.build.type oraz aktywacja SELinux).
FwAnalyzer można wykorzystać do uproszczenia analizy problemów z bezpieczeństwem w obcych firmware'ach, jednak jego głównym celem jest kontrola jakości własnych firmware'ów lub dostarczanych przez zewnętrznych dostawców na mocy umowy. Reguły FwAnalyzer pozwalają na stworzenie dokładnej specyfikacji stanu firmware'u oraz identyfikację niedopuszczalnych odchyleń, takich jak przyznawanie niewłaściwych uprawnień dostępu czy pozostawianie zamkniętych kluczy i kodu debugowania (na przykład kontrole pozwalają uniknąć takich sytuacji jak używanego na etapie testowania serwera ssh, inżynierskie hasło, do odczytu /etc/config/shadow lub tworzenia podpisu cyfrowego).
Źródło: opennet.ru
