Для Ъ: На конференции LinuxCon выступил с докладом Рональд Минних (Ronald Minnich). Создатель CoreBoot рассказал о проекте NERF (Non-Extensible Reduced Firmware), развиваемое корпорацией Google. Эта система на основе ядра Linux призвана заменить просклойки, выполняемые вне ОС.
NERF также рассчитан на снижение векторов возможных атак, расширение возможностей по контролю за активностью прошивок, исключение излишней функциональности (например, TCP-стек и web-сервер), удаление встроенных механизмов обновления в пользу обновления из базового Linux-окружения. В состав NERF входит избавленный от блобов упрощённый вариант прошивки для Intel ME (Management Engine), урезанная прошивка для UEFI, код для отключения SMM, ядро Linux, образ initramfs c системой инициализации и инструментарием u-root, написанными на языке Go.
U-root написан на языке Go и включает в себя легковесную систему инициализации, оболочку rush и набор типовых утилит, таких как cp, mv, ls, grep, sort, dd, insmod, wget, netcat и т.п. Примечательно, что в формируемый при помощи u-root образ корневой ФС включается лишь процесс инициализации и несколько исполняемых файлов с компилятором языка Go. Все команды собираются только при необходимости - если запущенная утилита не была собрана ранее, то её компиляция осуществляется на лету после попытки первого запуска. Результат компиляции вызванной утилиты помещается в tmpfs и доступен для повторного использования в рамках текущего сеанса.
Таким образом, в u-root все утилиты предлагаются в исходных текстах, а для адаптации инструментария требуется лишь настройка компилятора. Компиляция занимает доли секунды и не приводит к ощутимым задержкам при вызове. Подобный подход позволяет сделать образ u-root универсальным и распространять единый образ корневой ФС для всех платформ, поддерживаемых компилятором языка Go (для каждой новой архитектуры требуется лишь подготовить 4 исполняемых файла, в одном образе могут содержаться сборки компилятора для разных архитектур).
Необходимость замены UEFI обусловлена тем, что на современных компьютерах параллельно с основной операционной системой параллельно выполняется ещё несколько неконтролируемых программных окружений (UEFI, SMM, Intel ME), которые формируются на основе проприетарных прошивок. Код UEFI продолжает работать после загрузки основной ОС и выполняется на уровне кольца защиты Ring -2. Данные закрытые окружения создают дополнительные угрозы безопасности. Например, внедрённый в прошивку UEFI вредоносный код может оставаться невидимым из основной ОС, но полностью контролировать всю систему.