Представлен метод обхода проверки доверенной загрузки U-Boot
Проблема может быть проэксплуатирована для обхода процесса валидации и последующей загрузки и выполнения произвольного кода на системе.
Специалист компании F-Secure Андреа Барисани (Andrea Barisani) выявил недоработку в дизайне открытого универсального загрузчика U-Boot (Universal bootloader), связанную с недостаточной проверкой доступной памяти. Проблема может быть проэксплуатирована для обхода процесса валидации и последующей загрузки и выполнения произвольного кода на системе. U-Boot представляет собой загрузчик операционной системы, ориентированный на встроенные устройства архитектур MIPS, PowerPC, ARM и прочие. Для проверки подлинности кода в программе предусмотрена функция Verified Boot (вариант протокола безопасной загрузки Secure Boot), которая проверяет целостность загружаемых образов.
Барисани описал два метода, эксплуатирующих отсутствие ограничений распределения памяти. Уязвимости получили идентификаторы CVE-2018-18440 и CVE-2018-18439. По словам исследователя, в U-Boot нет защиты против загрузки загрузочных образов достаточно большого размера, чтобы перезаписать память устройства, включая сегменты памяти загрузчика. Функция Verified Boot не решает проблему, поскольку запускается уже после начала процесса перезаписи памяти.
В качестве одной из мер защиты исследователь предложил установить ограничение максимального размера загружаемого образа ядра. Однако данный метод не работает, если образ загружается из сетевой локации через протокол Trivial File Transfer Protocol (TFTP). Это связано с тем, что команда, используемая для запуска образа, не поддерживает ограничение на максимальный размер файла.
Барисани протестировал только версию U-Boot 2018.09-rc1, но уверен, что все редакции программного обеспечения уязвимы к описанным им атакам.