Опубликован код анализатора безопасности прошивок FwAnalyzer

Компания Cruise, специализирующаяся на технологиях автоматического управления автомобилями, открыла исходные тексты проекта FwAnalyzer, предоставляющего инструменты для анализа образов прошивок на базе Linux и выявления в них потенциальных уязвимостей и утечек данных. Код написан на языке Go и распространяется под лицензией Apache 2.0.

Поддерживается анализ образов, использующих файловые системы ext2/3/4), FAT/VFat, SquashFS и UBIFS. Для раскрытия образа используются штатные утилиты, такие как e2tools, mtools, squashfs-tools и ubi_reader. FwAnalyzer извлекает из образа дерево каталогов и выполняет оценку содержимого на основе набора правил. Правила могут привязываться к метаданным ФС, типу файлов и содержимому. На выходе формируется отчёт в формате JSON, суммирующий извлечённую из прошивки информацию и выводящий предупреждения и список файлов, не соответствующих обработанным правилам.

Поддерживается проверка прав доступа к файлам и каталогам (например, выявляется доступ всем на запись и выставление некорректных UID/GID), определяется наличие исполняемый файлов с флагом suid и использование меток SELinux, выявляются забытые ключи шифрования и потенциально опасные файлы. В содержимом выделяются оставленные инженерные пароли и отладочные данные, выделяется информация о версиях, выполняется определение/сверка начинки по хэшам SHA-256 и осуществляется поиск с использованием статических масок и регулярных выражений, возможна привязка внешних скриптов-анализаторов к определённым типам файлов. Для прошивок на базе Android определяются параметры сборки (например, использование режима ro.secure=1, состояние ro.build.type и активация SELinux).

FwAnalyzer можно использовать для упрощения анализа проблем с безопасностью в чужих прошивках, но основным назначением является контроль качества собственных прошивок или поставляемых сторонними поставщиками по контракту. Правила позволяют сформировать точную спецификацию состояния прошивки и выявлять недопустимые отклонения, например, присвоение не тех прав доступа или оставление закрытых ключей и отладочного кода (например, оставление используемого на этапе тестирования ssh-сервера, предопределённый инженерный пароль, доступный на чтение /etc/config/shadow или забытые ключи формирования цифровой подписи).

Источник: http://www.opennet.ru/opennews/art.shtml?num=51249