L'azienda Cruise, specializzata nelle tecnologie di guida automatica dei veicoli, i codici sorgente del progetto , che fornisce strumenti per l'analisi delle immagini dei firmware basati su Linux e per l'individuazione di potenziali vulnerabilità e perdite di dati. Il codice è scritto in linguaggio Go e sotto licenza Apache 2.0.
supporta l'analisi delle immagini che utilizzano i file system ext2/3/4, FAT/VFat, SquashFS e UBIFS. Per l'estrazione dell'immagine vengono utilizzati gli strumenti standard, come e2tools, mtools, squashfs-tools e ubi_reader. FwAnalyzer estrae dall'immagine l'albero delle directory e valuta il contenuto in base a un insieme di regole. Le regole possono essere collegate ai metadati del FS, al tipo di file e al contenuto. Il risultato è un report in formato JSON che riassume le informazioni estratte dal firmware e visualizza avvisi e un elenco di file che non soddisfano le regole elaborate.
supporta il controllo dei diritti di accesso a file e directory (ad esempio, rilevando accessi in scrittura da parte di tutti e assegnazioni non corrette di UID/GID), identifica la presenza di file eseguibili con il flag suid e l'uso delle etichette SELinux, individua chiavi di crittografia dimenticate e file potenzialmente pericolosi. All'interno del contenuto vengono evidenziate password ingegneristiche e dati di debug lasciati, vengono estratte informazioni sulle versioni e si effettuano definizioni/verifiche sulla base dei hash SHA-256 e ricerche utilizzando maschere statiche e espressioni regolari. È possibile collegare script analitici esterni a determinati tipi di file. Per i firmware basati su Android vengono determinati i parametri di compilazione (ad esempio, l'uso della modalità ro.secure=1, lo stato ro.build.type e l'attivazione di SELinux).
FwAnalyzer può essere utilizzato per semplificare l'analisi dei problemi di sicurezza nei firmware altrui, ma il suo scopo principale è il controllo della qualità dei propri firmware o quelli forniti da appaltatori esterni. Le regole di FwAnalyzer consentono di creare una specifica precisa dello stato del firmware e di individuare deviazioni inaccettabili, come l'assegnazione di diritti di accesso errati o la presenza di chiavi private e codice di debug (ad esempio, il controllo consente di evitare situazioni come un server ssh utilizzato durante la fase di testing, ingegneristica predefinita, in lettura /etc/config/shadow o formazione della firma digitale).
Fonte: opennet.ru
