Производитель компьютеров Lenovo выпустил для своих пользователей уведомление безопасности Lenovo Security Advisory LEN-8324. Речь идет об уязвимости в firmware (прошивке) выпускаемых компанией компьютеров, в т. ч. в известной серии ноутбуков ThinkPad. Уязвимость можно отнести к типу Local Privilege Escalation, поскольку она позволяет атакующему исполнить код в режиме микропроцессора System Management Mode (SMM). Код SMM является самым привилегированным с точки зрения системы, так как его приоритет исполнения даже выше чем у запущенной в системе ОС или гипервизора, который может контролировать виртуальные машины.
Lenovo не раскрывает информацию об уязвимости, однако, очевидно, что речь идет именно о той уязвимости, детали которой несколько дней назад были опубликованы security-ресерчером под ником Cr4sh. Исследователь представил свои результаты исследования защищенности прошивки ноутбуков ThinkPad и опубликовал информацию об уязвимости в реализации механизмов защиты BIOS_CNTL и SPI Protected Ranges (PRx), которые позволяют коду прошивки защищать регионы SPI flash-памяти чипа (NVRAM) от перезаписи. Такая защита не позволяет модифицировать легитимный исполняемый код прошивки или интегрировать в SMRAM память посторонний код, например, бэкдор.
Продемонстрированный экспертом эксплойт позволяет не только обойти механизм защиты SPI Protected Ranges для записи своего SMM-кода, но также исполнить его с использованием 0day уязвимости в прошивке Lenovo. Механизм защиты SPI Protected Ranges вводит понятие специальных регистров с названиями PRx, которые позволяют коду прошивки задавать защищаемые от записи регионы SPI flash памяти. Так как регистры PRx недоступны для записи никому кроме кода прошивки, эксплойт использует специальный метод для их установки, аналогичный тому как это выполняет сам код прошивки.
Так как сброс системных регистров PRx возможен при переходе компьютера в режим S3 sleep, код прошивки сохраняет их в специальную структуру под названием Boot Script Table для последующего восстановления их оттуда после возврата из этого режима. Модифицируя эту структуру и имитируя возврат из режима S3, код атакующего может загрузить в регистры новые значения после пробуждения, т. е. обнулить их. Однако, для защиты от такого метода эксплуатации, стандарт UEFI регламентирует использование специального защитного механизма Boot Script Table под названием SMM LockBox. Защита SMM LockBox успешно обходится эксплойтом с использованием специальных системных операций.
Рис. Демонстрация работы эксплойта, успешная модификация регистров PRx.
После снятия защиты на модификацию памяти чипа, эксплойт может разместить там свой код. Для передачи управления на него используется 0day уязвимость в прошивке Lenovo, которая позволяет выполнить произвольный SMM-код с использованием механизма функций обратного вызова (callback). Уязвимость присутствует в UEFI-драйвере Lenovo под названием SystemSmmRuntimeRt, который может вызвать функцию по указателю в передаваемой ему структуре, не проверяя этот указатель на принадлежность легитимному коду.
Рис. Уязвимый драйвер в UEFI прошивке Lenovo, который выполняет функцию по указателю из структуры не проверяя его.
Согласно опубликованной Lenovo информации, компания сама не занимается разработкой прошивок для своих компьютеров, делегируя эти обязанности на производителей BIOS/UEFI. Прошивка для Lenovo могла быть разработана Intel или AMD.
Since that time, Lenovo has actively undertaken its own investigation, which remains ongoing. At this point, Lenovo knows that vulnerable SMM code was provided to Lenovo by at least one of our Independent BIOS Vendors (IBVs). Independent BIOS vendors (IBVs) are software development firms that specialize in developing the customized BIOS firmware that is loaded into the PCs of original equipment manufacturers, including Lenovo. Following industry standard practice, IBVs start with the common code base created by chip vendors, such as Intel or AMD, and add additional layers of code that are specifically designed to work with a particular computer. Lenovo currently works with the industry’s three largest IBVs.
Согласно информации Cr4sh, уязвимость относится к прошивке производства Intel и присутствовала в ней начиная с 2014 г. Уязвимый драйвер включен в состав новейшей версии прошивки ноутбуков ThinkPad T450s (1.22), а также ThinkPad X220 (1.42). Также потенциально он может располагаться в компьютерах производства Lenovo: ThinkCentre, ThinkStation, ThinkServer
Стоит отметить, что для успешной работы эксплойта и получения SMM-прав в системе с сохранением ее последующей работоспособности, атакующим нужно обойти и прочие механизмы защиты системы, например, запустить в системе нелегитимный код режима ядра, а также обойти современный механизм защиты Boot Guard. Boot Guard контролирует целостность и легитимность запускаемой в системе прошивки, что исключает возможность корректной работы системы в случае ее модификации. Тем не менее, продемонстрированная уязвимость позволяет атакующим решить ряд задач и снять защиту системы, используемую для контроля за памятью UEFI. Более того, она достаточно серьезна, поскольку показанный пример эксплуатации достаточно универсален и может быть использован не только для компьютеров Lenovo.
Рис. Демонстрация успешного обхода функции защиты PRx flash write protection.
Мы рекомендуем владельцам компьютеров Lenovo дождаться выхода соответствующего обновления firmware и установить его как только оно будет доступно.
Автор: ESET NOD32