A empresa Cruise, especializada em tecnologias de condução autônoma de veículos, os códigos fonte do projeto , oferece ferramentas para análise de imagens de firmware baseadas em Linux, identificando potenciais vulnerabilidades e vazamentos de dados. O código é escrito em Go e estão sob a licença Apache 2.0.
suporta a análise de imagens que utilizam sistemas de arquivos ext2/3/4, FAT/VFat, SquashFS e UBIFS. Para a extração da imagem, utiliza-se utilitários padrão, como e2tools, mtools, squashfs-tools e ubi_reader. O FwAnalyzer extrai da imagem a árvore de diretórios e avalia o conteúdo com base em um conjunto de regras. As regras podem estar atreladas aos metadados do FS, tipo de arquivos e conteúdo. A saída é um relatório no formato JSON, que resume as informações extraídas do firmware e apresenta alertas e uma lista de arquivos que não estão em conformidade com as regras processadas.
A verificação de permissões de acesso a arquivos e diretórios é suportada (por exemplo, identifica acesso de escrita a todos e designação incorreta de UID/GID), detecta a presença de arquivos executáveis com a flag suid e utilização de rótulos SELinux, além de identificar chaves de criptografia esquecidas e arquivos potencialmente perigosos. No conteúdo, são destacados senhas de engenharia deixadas para trás e dados de depuração, assim como informações de versões, realizando a determinação/comparação de recheio por hashes SHA-256 e efetuando busca utilizando máscaras estáticas e expressões regulares. É possível vincular scripts externos de análise a tipos específicos de arquivos. Para firmwares baseados em Android, são determinados parâmetros de construção (por exemplo, uso do modo ro.secure=1, estado ro.build.type e ativação do SELinux).
O FwAnalyzer pode ser utilizado para facilitar a análise de problemas de segurança em firmwares de terceiros, mas seu principal objetivo é o controle de qualidade de firmwares próprios ou fornecidos por fornecedores terceiros sob contrato. As regras do FwAnalyzer permitem a formação de uma especificação precisa do estado do firmware e a identificação de desvios inaceitáveis, como a atribuição de permissões inadequadas ou a permanência de chaves privadas e código de depuração (por exemplo, a verificação ajuda a evitar situações como um servidor ssh em uso durante a fase de testes, com acesso à leitura /etc/config/shadow ou chaves esquecidas para formação de assinatura digital).
Fonte: opennet.ru
