Уязвимость ThinkPwn в прошивках компьютеров оказалась серьезнее чем представлялось ранее

    Несколько дней назад мы писали о 0day Local Privilege Escalation (LPE) уязвимости в UEFI-прошивке ноутбуков Lenovo ThinkPad, которой было посвящено интересное исследование security-ресерчера под ником Cr4sh. Продемонстрированный вектор эксплуатации уязвимости позволяет отключить встроенную аппаратную защиту под названием SPI Protected Ranges, которая используется для защиты SPI flash-памяти чипа от записи данных. Сама уязвимость присутствует в одном из UEFI-драйверов прошивки под названием SystemSmmRuntimeRt и позволяет исполнить произвольный привилегированный SMM-код в системе.



    В свою очередь, Lenovo выпустила уведомление безопасности, в котором указала, что не занималась разработкой уязвимого драйвера, так как обращается за этим к производителям прошивок BIOS/UEFI, которые, в свою очередь, используют наработки Intel и AMD. После этого стало понятно, что спектр ноутбуков и компьютеров, уязвимых для ThinkPwn, не ограничивается компанией Lenovo. Хотя кроме Lenovo никто из производителей компьютеров и материнских плат не обмолвился об этой уязвимости, стало известно что ей подвержены ноутбуки Hewlett-Packard Pavilion, компьютеры с материнскими платами от GIGABYTE (Z68-UD3H, Z77X-UD5H, Z87MX-D3H, и др), ноутбуки Fujitsu LIFEBOOK, а также Dell.


    Рис. Декомпилированный код уязвимого драйвера из flash-памяти чипа материнской платы Gigabyte Z68-UD3H. (твиттер Cr4sh)


    Рис. Демонстрация успешной работы эксплойта на ноутбуке Dell Latitude E6430.

    Уязвимость ThinkPwn была исправлена Intel еще в 2014 году, однако, производители UEFI до сих пор используют уязвимую версию драйвера при производстве прошивок. Полный масштаб охвата данной уязвимостью компьютеров пока не совсем ясен, так как никто из поставщиков UEFI не прокомментировал данную ситуацию. Очевидно, что речь идет о существенном количестве различных моделей компьютеров разных производителей, среди которых, Lenovo, Hewlett-Packard, GIGABYTE, Fujitsu, и Dell.

    Как мы уже указывали ранее, эксплойт ThinkPwn использует 0day уязвимость в SystemSmmRuntimeRt для исполнения своего SMM-кода, который помогает эксплойту обойти защитную меру SMM LockBox, используемую для обеспечения безопасности системной структуры UEFI Boot Script Table. Данная структура является ключевой для сброса регистров SPI Protected Range при эксплуатации режима работы компьютера S3 sleep. Путем модификации полей структуры, которые отвечают за сохранность регистров SPI Protected Range, SMM-кодом, можно добиться последующей их загрузки нулевыми значениями в сами регистры SPI.

    ThinkPwn позволяет отключить защиту на запись SPI flash-память чипа, что позволяет атакующим встроить туда свой backdoor или руткит для компрометации работы любой ОС на самом низком уровне. Это, в свою очередь, может привести к обходу технологии безопасной загрузки Secure Boot или таких аутентичных технологий как Virtual Secure Mode и Credential Guard на Windows 10.
    ESET NOD32
    Company
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 36

    • UFO just landed and posted this here
      • UFO just landed and posted this here
          0
          Давно пора отказаться от перепрошиваемых компонентов в компьютерах вместо них создать стандартный минимальный функционал.
          • UFO just landed and posted this here
              0
              Это не правда. В случае с CPU прошивку не перезаливают в процессор, а используют микрокод, который заливают в BIOS или ОС. Не знаю как обстоят дела сейчас, но раньше Linux использовал BIOS только для загрузки и микрокод, который был в BIOS не работал. Всеравно используются драйвера — все можно залить в них.
              • UFO just landed and posted this here
                • UFO just landed and posted this here
                    +1
                    но раньше Linux использовал BIOS только для загрузки

                    Ага. Всего-то.
                    «Загрузка» это длиннющий и сложный процесс, за которым скрывается… всё — вся инициализация оборудования. Сервис для чтения, которым пользуется загрузчик — это по сути уже драйвер жесткого диска. А если он на PCI шине, если это SATA…
                  0
                  Так делают во всяких ARM, где все нужно инициализировать из загрузчика, например, u-boot, и это отвратительно.
                    0
                    Согласен. ARM — это совершенно другой случай. Мне нравится концепцыя RISK, но ARM совершенно не тот случай — этот процессор перепрошиваемый, а это уже не то о чем я говорю. Перепрошиваемый процессор для меня это не процессор, а контроллер… Мало того от RISK в этом процессоре почти ничего не осталось.
                • UFO just landed and posted this here
                  • UFO just landed and posted this here
                    • UFO just landed and posted this here
                      • UFO just landed and posted this here
                        • UFO just landed and posted this here
                          • UFO just landed and posted this here
                            • UFO just landed and posted this here
                              • UFO just landed and posted this here
                    0
                    Плюсую
                  0
                  Когда мы уже дождемся open source биос который можно было бы билдить на любой ноут/пк?
                  Думаю многим уже надоели эти legacy/secure уефи и ефи которые не защищают, калечат, деградируют и запрещают использование половины настроек, через которые производители железки могут удаленно управлять вашим пк/настройками через интел амт и др фичи.
                  Которые мне нафиг не нужны, можно было бы отключить на уровне биоса. Пример если вы покупаете ноутбук lenovo лицензированным на win с дискретной видеокартой, установив отличную операционную систему вы не сможете использовать дискретную карточку (!) так как ее блокируют на уровне биоса, а доступ к настройкам Advanced не даетсяz, а так же отключается функция быстрой зарядки ноутбука при работе, только поддержка питания. приходится выключать ставить на зарядку и ждать несколько часов. Вот вам корпорации.
                    0
                      0
                      оно не встанет куда попало, надо поддерживаемую модель и много проблем кирпичных…
                        0
                        Так начинались все open-source — проекты. Это можно было сказать когда-то про Linux, сейчас — про ReactOS, например…
                        0
                        После того, как SAGE загнулась, я очень переживаю за судьбу этого во всех отношениях замечательного проекта. Когда-то давно некие люди из AMD обещали нам клятвенно поддержку coreboot в каждом релизе AGESA. Где она теперь…
                      • UFO just landed and posted this here
                          0
                          Уже есть инициатива OpenPOWER.
                          • UFO just landed and posted this here
                              0
                              Не, Дим, по исходнику все же искать проще, поверь моему опыту. :) Если знать, что искать, на обнаружение совсем уж вопиющих случаев вроде твоего уйдет меньше пары минут, ибо синхронные SMI — все-таки пока еще звери довольно редкие, а во времена EDK1+ — вообще штук 5 на всю прошивку.
                              • UFO just landed and posted this here
                            • UFO just landed and posted this here
                                0
                                Из TianoCore, очевидно же. ;)
                                • UFO just landed and posted this here
                            –1
                            То же самое происходит при замене поврежденной материнской платы, которая с завода Foxconn стоит 200-250$ при чем не себестоимость, а сервисный центр толкает ее вам за 40к ~~630$ без процессора и тд, просто материнка с интегрированным видео стоимостью чипа в 30-50$. Я раньше любил брендовую качественную технику леновы, после такого я как пользователь люто ненавижу их, и считаю что переплатил достаточно денег просто за бренд, а не качество, хотя мне нужно было обратное. Новое время и веяния совсем растлевают умы производителей. Уефи еще не конец…
                              +2
                              Ученый в очередной раз изнасиловал журналиста, к сожалению.
                              Я не спорю, что баг серьезный, и этот конкретный баг — только первая ласточка среди всех проблем с синхронными SMI, которые ждут своего часа. Дело в том, что, как и в свое время а ассинхронными SMI, никто из разработчиков технологии не воспринимал её как вектор атаки, и потому ревью кода обработчиков синхронных SMI практически не проводилось, ибо все считали, что вызвать эти самые обработчики атакующий не сможет, он ведь не знает нужного хендла (SmmBase->Communicate) или GUIDа (SmmCommunicate->Communicate), и формат буфера ему тоже неизвестен, да и вообще, кому это надо все. А потом пришел Дима и не просто все сломал, а еще и выложил все карты на стол.
                              Но вернемся к изнасилованию: в нынешнем виде эксплоит является приложением для UEFI shell, т.е. этот шелл нужно еще запустить как-то, т.е. нужен физический доступ к машине и отключенный SecureBoot (привет коментаторам, которые его костерят). Чтобы обойти это ограничение, нужна собственная реализация Communicate, которая тоже будет работать только из UEFI OS (для legacy OS обработчики синхронных SMI диспетчером не вызываются вообще, такая своеобразная защита от дурака). Сделать это можно, и я не сомневаюсь ни на секунду, что Дима это рано или поздно сделает, но сейчас поводов для паники нет никаких.
                              Более того, на платах Gigabyte, Asrock, ASUS, и прочих десктопных платах такого рода этот конкретный эксплоит вообще не имеет значения, ибо там можно достичь того же эффекта (получить полный доступ к SPI flash) значительно более простыми способами, так что эксплоит, даже если он на этих устаревших платах и работает, опасности для них не представляет, ибо нет смысла просачиваться через вентиляцию, когда у тебя либо двери вообще нет, либо ключ от нее — под ковриком.
                              Отдельно хочу возразить людям, которые в очередной раз убеждают меня в том, что современное железо буквально само инициализируется и там хватит микрокода на пару килобайт, а остальное все Великий и Открытый Линукс сделает за нас. Почти год, ребята. Почти год своей жизни, работая 40 часов в неделю, я потратил на то, чтобы довести плату conga-TR3 из состояния голое мертвое железо до состояния прошла все тесты и готова к массовому производству, имея при этом всю документацию, референсную реализацию UEFI и поддержку со стороны AMI и AMD. Если вы можете сделать то же самое хотя бы за полгода — подавайте резюме в любую компанию, Apple/Microsoft/Dell/HP/Lenovo/etc, любую — и вас там оторвут с руками, предложив не меньше $200к в год, релокацию, жилье, шахматы и поэтесс. И напишите мне оттуда потом, чтобы я еще сильнее загрустил, что тормоз такой.
                                +1

                                Кто бы оплатил эти полгода :)


                                ЗЫ это я не к спору, что всё просто… взять простой ADV7619, взять документацию, а потом материться: оказывается нужно ещё такой-то AppNote найти — там есть список магических констант для программирования регистров, причём для трех режимов: UHD, HD и SD — он разный. Случайно найти на форуме, что одна буковка на корпусе чипа может многое сказать о поддержке HDCP, причём если вдруг откуда-то он возьмётся — чип через документированный регистр для этого вам ничего не скажет… Короче, спеки тоже людьми пишутся, и хардвар тоже глючить может — он тоже, внезапно, людьми разрабатывается.

                                  0
                                  И это только один чип, а не SoC с десятком встроенных устройств, двумя IOAPIC, IOMMU, контролером DDR4, который инициализирует встроенное ARM-ядро PMU с закрытой и подписанной прошивкой, с мостом PCI2PCI на каждой внешней PCIe-линии, и так далее, и тому подобное…
                                  По поводу оплаты — Ланиту, я слышал, очень нужны сейчас специалисты по прошивкам, UEFI, U-boot'у и вот этому всему.

                              Only users with full accounts can post comments. Log in, please.