Asus автоматически обновляет BIOS/UEFI по HTTP без верификации

405eefc838af497193b1a48820436c9f.png

Asus снова взялся за старое. Вы можете отправить любой исполняемый файл или даже прошивку BIOS на компьютер Asus под видом обновления — этот файл будет автоматически запущен на исполнение с максимальными привилегиями, а прошивка установлена, без каких-либо проверок. Ничего не нужно предпринимать — система взломает сама себя, автоматически.

Вкратце: компьютеры с материнскими платами Asus осуществляют запросы к удалённому серверу по HTTP на регулярной основе. Причиной является программное обеспечение LiveUpdate, которое предустанавливается на компьютеры Asus. Оно отвечает за скачивание новых прошивок BIOS/UEFI и исполняемых файлов. Обновления поступают в архивах ZIP по чистому HTTP, распаковываются во временную папку, а исполняемый файл запускается от имени пользователя. Не происходит никакой верификации файлов или аутентификации при их загрузке, что позволяет провести MiTM-атаку и банальную эскалацию привилегий до NT AUTHORITY\SYSTEM.
Asus распространяет программу LiveUpdate со своими ноутбуками и ПК очень давно, ещё со времён Windows XP, более десяти лет. За это время принцип её работы практически не изменился. Клиент делает незашифрованные запрорсы по HTTP к серверам обновления Asus (liveupdate01.asus.com или dlcdnet.asus.com, в зависимости от версии).

Наапример, на ноутбуке модели UX303UA последняя версия LiveUpdate пытается достучаться по следующим адресам. Она делает это до тех пор, пока не получит ответ, отличный от ошибки 404.


Эти файлы ».idx» довольно сложные, они позволяют накатить разные обновления, в том числе перепрошить BIOS через WinFlash (если программа установлена) и установить драйверы.

Например, вот запись в XML-файле обновлённого драйвера ACPI для ноутбука ET1602:


  ATK0110 ACPI Utility
  ATK0110 ACPI Utility
  ATK0110 ACPI Utility
   driver 
   ACPI\ATK0110 
   WinXP 
   1043.2.15.37 
   837015 
   1219104000 
   pub/ASUS/DigitalHome/DAV/B202/ACPI_V104321537.zip 
   .\AsusSetup.exe 
   1 


Здесь самое классное — это процедура распаковки и автоматического запуска на исполнение файла .exe.

Это ещё цветочки. Представьте, что можно легко непринуждённо и перепрошить BIOS.


  To solve the issue which charge speed will be slower when battery capacity is above 60%
  解決當電池容量大於60%時,充電速度變慢的問題
  解决当电池容量大于60%时,充电速度变慢的问题
   BIOS 
  
   210 
   2717731 
   1422628620 
   pub/ASUS/nb/X453MA/X453MAAS210.zip 
   X453MAAS.210 
   1 


Не предусмотрено никакой процедуры проверки аутентичности этого XML-файла.

В планировщике задач выставлена частота выполнять задачу раз в час, вдобавок программа обновления постоянно обращается к серверу LiveUpdate по HTTP. Полученный файл будет распакован и запущен на исполнение, что бы в нём ни находилось.

Уязвимость обнаружил специалист по безопасности Морган [indrora] Гангвер (Morgan Gangwere).

Таймлайн событий с момента обнаружения уязвимости 27 апреля до момента публичного разглашения информации очень забавный:

From the vendor that brought you a
                        vulnerable cloud storage platform comes

           ___              ____  __        __     __ 
          / _ \___ ___ ____/ / / / /__  ___/ /__ _/ /____ 
         / // / -_) _ `/ _  / /_/ / _ \/ _  / _ `/ __/ -_)
        /____/\__/\_,_/\_,_/\____/ .__/\_,_/\_,_/\__/\__/ 
         Because popping SYSTEM /_/ is easy when you trust HTTP

                        Or, "How I learned to stop worrying and
                       execute arbitrary executables from HTTP"

Affected software:          LiveUpdate (any version? 3.3.5 tested)
Vulnerability:              HTTP MITM to SYSTEM execution + more.
CVSS: est. 9.3 CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
   (N.B.: This assumes "Hijack some HTTP" is easy and you're local) 

Timeline:
    2016-04-27      Initial discovery
    2016-04-28      Attempt to contact vendor (security@asus.com - bounce)
    2016-04-28      Disclosure to MSFT MSRC attempting vendor coordination
    2016-05-09      Attempt to contact vendor (via phone; told to go away)
    2016-05-10      Disclosure to CERT/CC (tracked as VU#215055)
    2016-05-11      CERT/CC attempts to contact vendor
    2016-05-24      CERT/CC: No response from vendor
    2016-06-01      CERT/CC: Disclose at will
    2016-06-03      Public disclosure


Как видим, хакер дважды пытался связаться с вендором. Первый раз он написал на адрес security@asus.com, но получил автоматический отлуп.

Delivery to the following recipient failed permanently:

     security@asus.com

Technical details of permanent failure: 
Google tried to deliver your message, but it was rejected by the server for the recipient domain asus.com by mg.asus.com. [103.10.4.32].

The error that the other server returned was:
550 #5.1.0 Address rejected.


Затем позвонил по телефону, но ему сказали… больше не звонить.

PoC


Исходя из логики работы автообновления можно запустить любой файл с валидной подписью.

28655fdb229344aa9929cbccab97f04f.png

Для наглядной демонстрации атаки с эскалацией привилегий Морган Гангвер использовал SysInternals PSEXEC. Он составил поддельное «обновление».


  Shoutout to Joey.
     AP 
     Win10(64) 
     48 
     199465 
     1459468800 
     pub/ASUS/nb/Apps/LiveUpdate/LiveUpdate.zip 
     update.bat
     22 
     1 
     SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FA540E67-095C-4A1B-97BA-4D547DEC9AF4}\DisplayVersion 
  


В архив «обновления» упакованы копия psexec, вымышленный whoami и скрипт для запуска.

08fe0875fb024184836bd7f4ad1a4581.png

Asus LiveUpdate сразу видит «критически важное» обновление.

405eefc838af497193b1a48820436c9f.png

Получая «критически важное» обновление, оно немедленно назначается на исполнение со всеми правами.

b444892b3a4d48e288deae807cdbc85b.png

Вот результат.

7961be6c60464505a1f64f8b4c04c2ac.png

Таким образом, мы запустили на исполнение произвольный код как NT AUTHORITY\SYSTEM, просто отдав его системе в ответ на вызов по HTTP. Всё остальное за вас делает LiveUpdate.

Вообще, ужасная с точки зрения безопасности процедура обновления прошивки свойственна не только материнским платам Asus, но и оборудованию от других производителей. Небезопасным способом обновляются, например, прошивки многих маршрутизаторов.

© Habrahabr.ru