Ошибка в микрокоде процессоров AMD позволяет пользователям виртуальных машин получать доступ к хост-системе гипервизора



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

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


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

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

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

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

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

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


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

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

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

    Вакансии компании Positive Technologies

    Комментарии 10
    • 0
      Фамилия исследователя — польськая. Читается "Шьвенцки".
      • +3
        Если уж "читается", то следует помнить, что "w" оглушается.
        А транслитерировать следует как "Сьвенцкий" или "Сьвентский" (если очевидно происхождение от "święto" — "праздник").

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

        Но поскольку распознать принадлежность имени может быть сложно, я бы просто советовал не транслитерировать в кириллицу никакие нетривиальные имена.
        • 0
          Согласен по поводу «не транслитеровать».
          • 0
            Ну если учитывать языковые аналогии, то эта фамилия эквивалентна русской Святский. Т.к. др. русское святок (ед. число от святки) и święto это одно и тоже слово.
        • +1
          Насколько я знаю, новый микрокод грузится уже из биоса, т.к. микрокод процессора уже прошит навечно. Или я чего-то не понимаю. Получится, что нужно «прошивать» проц на каждой материнке, на которую будет устанавливаться проц с уязвимостью.
          • +2
            Ни в Intel, ни в AMD микрокод не зашивается в процессор. Просто потому что процессор — дорогой, материнка — дешёвая. Так что прошить процессор нельзя.

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

            Поэтому возможны patch'и как для BIOS'а, так и для операционки.
            • 0
              Спасибо за ответ. Меня удивило просто само название прошивка. Но оно по сути и есть прошивка, если шьется в BIOS в ОС это уже как драйвер. Я еще когда-то удивлялся зачем процессору драйвера. Но однажды после покупки нового ПК моим знакомым, этот ПК жутко тупил в только что установленной ОС, но после установки драйвера на процессор (какой-то AMD FX) комп начал нормально работать. Я впервые в жизни такое видел (и до сих пор такого большее не видел).
              • +1
                Ну примерно этого и следовало ожидать, если материнка про процессор ничего не знает. Как я сказал без залитого микрокода "современные процессоры недееспособны" — но это не значит, что они совсем не могут работать: как-то же они запускаются и работают пока BIOS "не раскачается" и не зальёт в них микрокод? Могут. Но мееедленно-мееедленно.

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

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

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

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

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

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

            Самое читаемое