rs11
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Taciturn А есть пример когда в драйвер VMware подгружали микрокод содержащий заплатку от Spectre и утилиты проверки показывали что защита от бага не работает? В данном сообщении http://forum.ru-board.com/topic.cgi?forum=62&topic=30829&start=100#3 я давал список микрокодов от Intel которые имеют защиту от Spectre (это микрокоды за 2018 год) или возможно имеют (это за 2017 год). Просто не нашел точную информацию от Intel для каких процессоров они выпустили заплатки. В этом же сообщении указывал несколько путей решения проблем с обновлением микрокода. Теперь поясню развернуто. Рассмотрим случай когда в BIOS'е или в составе ОС есть последний исправленный от бага Spectre микрокод. При включении ПК, на первых этапах загрузки процессор через BIOS получает микрокод (или не получает, если его нет в BIOS'е). Микрокод корректирует хардварные ошибки процессора, которые не были выявлены при тестировании во время изготовления. Т. е. в процессоре содержаться инструменты позволяющие посредством загрузки специфического кода корректировать его работу, включать/выключать часть инструкций, менять работу инструкций (для примера по тех. характеристикам определенная инструкция должна выполнятся за два такта, а результате применения микрокода она выполняется за восемь тактов, в следствии того что сбойный блок отключили и инструкция выполняется на других блоках, плохо заточеных под эту конкретную инструкцию). Так же загрузку микрокода может осуществлять ОС. Механизм обновления микрокода ЦПУ производителем ОС включен в архитектуру ЦПУ (производителем ЦПУ) на тот случай, если разработчики ОС выявят или отловят баги в работе ОС или какого либо софта, вызванных хардварными багами или особенностями конкретных моделей ЦПУ (Microsoft и другие производители ОС заинтересованы чтобы их продукт работал на всех ЦПУ одинакового, без "проблем"). Microsoft для выявленных багов включает в свою ОС микрокоды чтобы не надеяться на производителей ПК и мат. плат, когда они соизволят обновить свои BIOS'ы. В случае Windows 7 ядро ОС анализирует какой микрокод используется на загружаемом ПК и сравнивает его со своей базой микрокодов содержащихся в файлах библиотеках mcupdate_AuthenticAMD.dll и mcupdate_GenuineIntel.dll папки %windir%\System32\. По результатом сравнения, если ОС видит что в ее составе есть микрокод новее тогда она инициализирует обновления микрокода в ЦПУ на лету. И так каждый раз при загрузке ПК. Включите лог загрузки ОС Windows 7 и Вы уведите на каком этапе загружаются библиотека mcupdate_AuthenticAMD.dll или mcupdate_GenuineIntel.dll (в зависимости от платформы). Соответственно, время от включения ПК (подачи сигнала на включение) и до загрузки ОС и проверки ядром версии микрокода и по необходимости его обновления, это промежуток времени есть или его нет (если BIOS содержит последнюю версию микрокода). В этот промежуток времени система уязвима для бага Spectre. Теперь рассмотрим откуда будет приходить вектор атаки. Вероятнее всего из Интернета (или локальной сети), в случае если при загрузке ОС какой либо код в стороннем драйвере будет эксплуатировать баг Spectre исключим, так как если это так, то ваша система изначально не "безопасна" раз содержит такие драйверы. Остановимся на атаке со стороны Интернета (или локальной сети). На сколько я знаю (об особенностях работы Windows Firewall в Windows 7 читал давно, эту информацию надо проверять) ОС Windows 7 не осуществляет сетевое взаимодействие (т. е. прием и передачу сетевых пакетов) пока не будет загружена подсистема Windows Firewall (даже если служба отключена). Соответственно, в обсуждаемый промежуток времени эксплуатация бага Spectre мало вероятно, так как загрузка микрокода ОС осуществляется раньше загрузки подсистемы Windows Firewall. И дополнительно (опять же как я понял) атака Spectre не подразумевает выполнения произвольного кода на ЦПУ, она подразумевает извлечение приватных данных из ОЗУ (кеша ЦПУ), т.е. ключей шифрования (грубый пример) и так далее. Драйвер от VMware позволяет включить в состав ОС третий источник откуда можно загрузить новый микрокод для ЦПУ, первый источник - BIOS, второй - сама ОС. Остался вопрос когда драйвер от VMware загружается, на каком этапе. Отследить это можно по включенному логу загрузки ОС Windows 7. Я не буду сейчас проводить тестирование этого вопроса, это можно отследить индивидуально на каждом конкретном ПК. Проследить на каком этапе какая версия микрокода загружается очень просто. В случае BIOS'а нужны инструменты для анализа кода BIOS. В случае ОС Windows 7 изучить библиотеки mcupdate_AuthenticAMD.dll или mcupdate_GenuineIntel.dll, микрокод в данных библиотеках не зашифрован и не сжат ни какими алгоритмами, можно извлечь любым HEX редактором и ознакомится, проанализировать версии содержащиеся в этих библиотеках. С драйвером от VMware там все просто, Вы сами подсовываете ему микрокод. Отследить ту версию микрокода которая у Вас сейчас в системе, по результату загрузки ОС и всего окружения можно, для примера, программой AIDA64 в разделе "Системная плата > CPUID" и сравнить со списком для ЦПУ Intel в моем предыдущем сообщении http://forum.ru-board.com/topic.cgi?forum=62&topic=30829&start=100#3 . Все выше сказанное мое личное мнение, и я не скажу что я компетентен в вопросах ИТ безопасности. Надеюсь мне не прилетит за мой оффтоп. |