Исследователи обнаружили ошибку в микрокоде процессоров AMD, эксплуатация которой может позволять злоумышленникам проникать в хост-систему гипервизора из запущенной на нем виртуальной машины. Этой уязвимости подвержены компьютеры, использующие процессоры AMD Piledriver CPU (например, линейка чипов Opteron 6300) и микрокоды версий 0x6000832 и 0x6000836.

В чем проблема


Ошибка в микрокоде приводит к модификации содержимого
регистра, указывающего на верхушку стека во время обработки прерывания — указатель RSP сдвигается на одно поле. В результате при возвращении из обработчика инструкция ``IRETQ`` «выхватывает» следующее за адресом возврата значение со стека.

Злоумышленники могут попытаться управлять этим процессом, подставляя значения, указывающие на использующееся ими адресное пространство — в результате возможно исполнение кода с правами монитора.

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

Эксплуатация этой уязвимости довольно сложна из-за необходимости создания определенного, трудновоспроизводимого состояния системной части программного обеспечения. В ходе обсуждения в рассылке разработчиков ядра Linux LKML ИБ-исследователь Роберт Свецки (Robert Swiecki), заявил, что в ходе тестов ему удалось создать условия для эксплуатации ее «пару раз из 30 “oops”».

Детали эксплуатации уязвимости до сих пор не опубликованы, также отсутствует информация о полном наборе условий, необходимых для этого.

Как защититься


Представители AMD сообщили журналистам издания The Register о том, что в курсе проблемы. Компания разработала патч, который исправляет ошибку в прошивках уязвимых версий — партнеры AMD получили доступ к исправлению начиная с 7 марта. Пользователям необходимо установить патч — скачать его можно в специальных пакетах прошивок для различных ОС или с сайта производителя — и перезапустить систему.

Кроме того, на сайте компании-производителя продуктов для виртуализации VMware опубликованы ссылки на исправления ошибки при работе с машинами, использующими процессоры AMD Opteron 6300, для VMware ESXi. При этом связана ли исправленная ошибки и уязвимостью, обнаруженную в процессорах AMD, на данный момент неизвестно.

За последние несколько месяцев это уже не первая ошибка, обнаруженная в прошивках популярных процессоров. Так в январе 2015 года исследователи обнаружили баг в процессоре Intel Skylake, который приводил к зависанию компьютера во время сложных вычислений.

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


  1. sasha817
    10.03.2016 18:11

    Фамилия исследователя — польськая. Читается "Шьвенцки".


    1. sulnedinfind
      10.03.2016 20:38
      +3

      Если уж "читается", то следует помнить, что "w" оглушается.
      А транслитерировать следует как "Сьвенцкий" или "Сьвентский" (если очевидно происхождение от "swieto" — "праздник").

      Есть неплохая статья на вики, которую я бы рекомендовал всем переводчикам, увидевшим в тексте польскую фамилию: https://ru.wikipedia.org/wiki/Польско-русская_практическая_транскрипция

      Но поскольку распознать принадлежность имени может быть сложно, я бы просто советовал не транслитерировать в кириллицу никакие нетривиальные имена.


      1. sasha817
        10.03.2016 22:18

        Согласен по поводу «не транслитеровать».


      1. deniskreshikhin
        11.03.2016 14:20

        Ну если учитывать языковые аналогии, то эта фамилия эквивалентна русской Святский. Т.к. др. русское святок (ед. число от святки) и swieto это одно и тоже слово.


  1. horlon
    11.03.2016 11:46
    +1

    Насколько я знаю, новый микрокод грузится уже из биоса, т.к. микрокод процессора уже прошит навечно. Или я чего-то не понимаю. Получится, что нужно «прошивать» проц на каждой материнке, на которую будет устанавливаться проц с уязвимостью.


    1. khim
      11.03.2016 16:42
      +2

      Ни в Intel, ни в AMD микрокод не зашивается в процессор. Просто потому что процессор — дорогой, материнка — дешёвая. Так что прошить процессор нельзя.

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

      Поэтому возможны patch'и как для BIOS'а, так и для операционки.


      1. horlon
        12.03.2016 16:13

        Спасибо за ответ. Меня удивило просто само название прошивка. Но оно по сути и есть прошивка, если шьется в BIOS в ОС это уже как драйвер. Я еще когда-то удивлялся зачем процессору драйвера. Но однажды после покупки нового ПК моим знакомым, этот ПК жутко тупил в только что установленной ОС, но после установки драйвера на процессор (какой-то AMD FX) комп начал нормально работать. Я впервые в жизни такое видел (и до сих пор такого большее не видел).


        1. khim
          13.03.2016 22:29
          +1

          Ну примерно этого и следовало ожидать, если материнка про процессор ничего не знает. Как я сказал без залитого микрокода "современные процессоры недееспособны" — но это не значит, что они совсем не могут работать: как-то же они запускаются и работают пока BIOS "не раскачается" и не зальёт в них микрокод? Могут. Но мееедленно-мееедленно.

          Всё взаимодействие между частями такого процессора работает с максимально возможными задержками, в суперконсервативном режиме. Просто потому что "настоящие" задержки выявляются на испытаниях уже после того как процессоры испеклись и их готовят к продаже :-)

          То есть, в качестве примера, есть у вас делитель — вы туда отправляете два числа и через несколько тактов снимаете результат. В один такт ещё ни один процессор делить не научился, но… сколько тактов ждать-то? 1, 2, 100? В "автоматической" прошивке, зашитой на заводе раз и навсегда — без вариантов: ждём 100 тактов. Так надёжно, гарантированно, ошибок не будет ни на какой частоте. А вот уже после испытаний выясняется точно сколько нужно ждать — 10 тактов или 11. Или там "7 для маленьких чисел, 10 для средних, 15 для больших". Потому эти чиселки заливается в BIOS и записывается в драйвер. Конечно это не всё, что "заливается" в процессор — там могут даже некоторые инструкции вообще отключить и реализовать на микрокоде если "в силиконе" ошибка. Но "тупит" процессор обычно именно поэтому: потому что его завели в самом наиконсервативнейшем режиме из всех возможных.

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


          1. horlon
            13.03.2016 23:25

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


  1. deseven
    11.03.2016 22:59

    Непонятно вот что:

    партнеры AMD получили доступ к исправлению начиная с 7 марта

    А пакет от декабря 2014 года и в репах дебиана и на сайте amd64.