Сколько колец защиты используют современные процессоры Intel и AMD

Обновлено: 05.07.2024

В 1982 году, когда Intel выпустила процессор 80286, они добавили 4 уровня привилегий в схему сегментации (кольца 0–3), определяемые двумя битами в таблице глобальных дескрипторов (GDT) и таблице локальных дескрипторов (LDT).< /p>

В процессоре 80386 Intel добавила пейджинг, но, что удивительно, он имеет только 2 уровня привилегий (руководитель и пользователь), определяемые одним битом в записи каталога страниц (PDE) и записи таблицы страниц (PTE).

Это означает, что ОС, использующая только подкачку (как и большинство современных ОС), не может извлечь выгоду из существования колец 1 и 2, которые могут быть очень полезны, например, для драйверов. (Например, Win9x часто аварийно завершала работу из-за загрузки непроверенных драйверов с ошибками в кольцо 0).

С точки зрения переносимости, существование колец 1 и 2 является причудой архитектуры x86, и переносимые ОС не должны их использовать, поскольку другие архитектуры имеют только 2 уровня привилегий.

Но я уверен, что переносимость на другие платформы — это не то, о чем думали инженеры Intel в 1985 году, разрабатывая 386.

Так почему же Intel не разрешила пейджингу иметь 4 уровня привилегий, например, сегментацию?


@user123 Защищенный режим мало использовался до 90-х годов, когда 386-му было уже 5 лет. Так что нет, когда Intel разрабатывала 386, они не могли знать, что никто не будет использовать 4 уровня привилегий.

3 ответа 3

Мне приходит в голову предположение, что Intel предполагала, что когда работает код кольца 1, он является супервизором, "контролирующим" код кольца 3. Кольцо 1 не работает под кольцом 0.

Если код кольца 1 хочет вызвать код кольца 0, он может позвонить через шлюз вызова, а код кольца 0 может изменить CR3 на таблицу страниц, которая включает сопоставления для физических страниц, которых не было на странице. таблица, в которой использовался код кольца 1 или 2.

Это означает, что ОС, использующая только подкачку [. ] не может извлечь выгоду из существования колец 1 и 2

Это ваша ошибка: вы не можете "использовать только пейджинг". Даже для того, чтобы обработка прерываний из пользовательского пространства работала в обычной ОС x86 (с плоской моделью памяти), требуется настроить материал TSS, чтобы установить ESP на указатель стека ядра при переключении в режим ядра, даже если вы иначе не используете аппаратную задачу -переключение.

x86 имеет "ворота задач" и "ворота вызовов" и все виды действительно сложных вещей, которые, я надеюсь, мне никогда не придется полностью понимать, но я ожидаю, что, потратив некоторое время на чтение, это может пролить некоторый свет на то, что архитекторы 386 могли бы захотеть сделать в операционных системах.

В отличие от моего предыдущего предположения (о кольце 1, контролирующем кольцо 3), возможно, Intel ожидала, что операционные системы будут использовать сегментацию для отделения памяти кольца 1/2 от памяти кольца 0 в той же таблице страниц, если это необходимо 1 . Как вы сказали, они, вероятно, не пытались создать что-то, что портативные микроядерные операционные системы могли бы просто использовать в качестве бонуса.

Ядро может позволить себе роскошь определять структуру виртуального адресного пространства, поэтому оно вполне может назначать его фрагменты для использования кодом кольца 1, соответствующим образом настраивая CS/DS/ES/SS при его вызове.

Я думаю, что это должно означать неплоскую модель, потому что сегментация x86 заставляет адреса идти от 0..limit, а не, например, до. разрешение доступа к диапазону виртуальных адресов от младшего до высокого без изменения значения указателя.

Сноска 1:

Нужно ли иметь полную защиту памяти между кольцом 0 и кольцом 1? ОС может использовать кольцо 1 для полудоверенного кода.

Для некоторых привилегированных инструкций требуется кольцо 0, поэтому кольцо 1 предотвратит это случайно. Уровень привилегий ввода-вывода можно установить отдельно, чтобы разрешить cli и вход/выход в кольце > 0, но для других инструкций, таких как invlpg , lgdt и mov cr, reg, требуется фактическое кольцо 0.


Кстати, @MichaelPetch или @IraBaxter, или другие пользователи, у которых есть некоторый опыт работы с игрушечными операционными системами/загрузчиками, вероятно, могли бы дать лучший ответ, чем этот, или дополнить некоторые детали, которые я умалчиваю. Айра написал кое-что о защищенном режиме x86 и о том, как он позволяет использовать модель памяти, подобную Multics: для чего предназначен регистр «FS»/«GS»?

Я никогда не проверял, но я почти уверен, что ограничение игнорируется после включения длинного режима, что делает сегментацию непригодной для защиты памяти.

@user123: Да, стерилизованная сегментация в длинном режиме x86-64, base=0 и limit=-1 фиксированы для сегментов, отличных от FS/GS. Эти вопросы и ответы касаются разработки Intel защищенного режима 386, а не разработки AMD AMD64, созданной десятилетиями позже.

@user123: Конечно, вы можете запустить процессор x86-64 в «устаревшем режиме»; просто не включайте длинный режим и запускайте ОС 386. Так что даже современные процессоры должны все это поддерживать, только не в длительном режиме.

Существует четыре уровня привилегий (называемых кольцами) в защищенном режиме 386, а также в 286: кольцо 0 имеет наивысшие привилегии (операционная система), кольца 1 и 2 широко не используются, а кольцо 3 имеет самые низкие привилегии ( пользовательское приложение). Кольца 0–2 называются «Супервизор», а кольцо 3 — «Пользователь».

Текущий уровень привилегий (CPL) определяется адресом инструкции, которую вы выполняете, в соответствии с уровнем привилегий дескриптора (DPL) сегмента кода. Дополнительные сведения о текущем уровне привилегий см. в разделе CPL, DPL и RPL.

Вы имеете в виду следующее. Это бит 2 в 32-битной записи каталога страниц (PDE), которая отображает страницу размером 4 МБ (или 32-битную PDE, которая ссылается на таблицу страниц). Этот бит называется «Пользователь/руководитель» (U/S). Значение «0» в этом бите означает, что доступ в пользовательском режиме к области 4 МБ, контролируемой этой записью, запрещен. Это не значит, что есть, как вы написали, просто "2 уровня привилегий (супервизор и пользователь)". Уровень «руководитель» по-прежнему состоит из трех колец. Это включает в себя вместе с кольцом пользователя четыре кольца.

См. раздел 4.6 Руководства разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 3A: Руководство по системному программированию, часть 1:

Каждый доступ к линейному адресу является либо доступом в режиме супервизора, либо доступом в режиме пользователя. Для всех операций выборки инструкций и большинства операций доступа к данным это различие определяется текущим уровнем привилегий (CPL): доступ осуществляется во время CPL


Вопрос в том, почему нет защиты памяти между кольцом 1 и кольцом 0, как между кольцом 3 и кольцом 0/1/2. Вы не отвечаете на это, просто подробно рассказываете о том, что это «пропало». (Вопрос заключается в том, что кольца 1 и 2 непригодны для использования, если запись в таблице страниц не может отличить их от кольца 0, не говоря уже о том, что они вообще не существуют.)

Желание состоит в том, чтобы защитить вещи от других вещей. До появления пейджинга (и до появления 80x86 — модель «4 кольца» восходит к Multics, если не раньше) самым простым способом было использовать «кольца».

С 4 кольцами у вас может быть схема "D не может получить доступ к C, и они не могут получить доступ к B, и все они не могут получить доступ к A". Это относительно ужасно для противоположного направления («C может получить доступ ко всему в D независимо от того, нужно это или нет») и относительно ужасно для детализации (например, если вы хотите «C может получить доступ к части D, но не ко всему D»). .

С помощью пейджинга вы можете дать каждой вещи собственное виртуальное адресное пространство и сопоставить что угодно где угодно, чтобы контролировать доступ (поскольку вы не можете получить доступ к чему-либо, что не сопоставлено с вашим виртуальным адресным пространством). Вы по-прежнему можете иметь «D не может получить доступ к C, и они не могут получить доступ к B, и все они не могут получить доступ к A» (если это то, что вы действительно хотите), просто сопоставив все страницы, принадлежащие D, в A, B и С; и отображение всех страниц, принадлежащих C, в A и B; и так далее. Однако вы также можете иметь любую другую договоренность - например. имитировать 10 колец вместо 4, или позволить C получить доступ к части D (но не ко всему D) и части B (но не ко всему B), или.

Тогда возникает вопрос; если одного пейджинга достаточно для имитации любого количества звонков (и больше), почему у нас все еще есть 2 кольца?

Поэтому системы x86 на базе Linux или Windows используют только кольцо 0 для режима ядра и кольцо 3 для пользовательского режима. Почему процессоры вообще различают четыре разных кольца, если все они в конечном итоге используют только два из них? И изменилось ли это на архитектуре AMD64?


кстати, я бы предложил изменить заголовок вопроса на "Почему операционные системы x86 используют только 2 кольца из 4?" или, может быть, «Почему ОС только на процессорах x86». Процессор делает только то, что говорит ему ОС.

1 Ответ 1

Есть две основные причины.

Первая причина заключается в том, что, хотя процессоры x86 предлагают четыре кольца защиты памяти, предлагаемая ими степень детализации защиты обеспечивается только на уровне отдельных сегментов. То есть для каждого сегмента можно установить определенное кольцо («уровень привилегий») от 0 до 3 вместе с другими средствами защиты, такими как отключение записи. Но доступных дескрипторов сегментов не так много. Большинство операционных систем хотели бы иметь гораздо более точную защиту памяти. Нравиться. для отдельных страниц.

Итак, включите защиту на основе записей таблицы страниц (PTE). Большинство, если не все, современные операционные системы x86 более или менее игнорируют механизм сегментации (насколько это возможно) и полагаются на защиту на основе PTE. Это определяется битами флага, которые являются младшими 12 битами в каждом PTE, плюс бит 63 на ЦП, которые поддерживают неисполнение. На каждую страницу приходится один PTE, обычно размером 4 КБ.

Один из этих битов флага называется «привилегированным». Этот бит определяет, должен ли процессор находиться на одном из «привилегированных» уровней для доступа к странице.«Привилегированными» уровнями являются PL 0, 1 и 2. Но это всего лишь один бит, поэтому на уровне постраничной защиты количество «режимов», доступных для защиты памяти, составляет всего два: может быть доступен из непривилегированного режима или нет. Следовательно, всего два кольца.

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

Вторая причина заключается в переносимости ОС. Дело не только в x86; Unix научил нас, что операционная система может быть относительно переносима на многопроцессорные архитектуры, и это хорошо. А некоторые процессоры поддерживают только два кольца. Не завися от нескольких колец в архитектуре, разработчики ОС сделали ОС более переносимыми.

Есть и третья причина, связанная с разработкой Windows NT. Разработчики NT (Дэвид Катлер и его команда, которых Microsoft наняла из DEC Western Region Labs) уже имели большой опыт работы с VMS; на самом деле Катлер и несколько других были одними из первых дизайнеров VMS. И процессор VAX, для которого был разработан VMS (и наоборот), действительно имеет четыре кольца. VMS использует четыре кольца. (На самом деле VAX имеет четыре защитных бита в PTE, что позволяет использовать такие комбинации, как «только для чтения из пользовательского режима, но с возможностью записи из кольца 2 и внутреннего». Но я отвлекся.)

Но компоненты, которые работали в кольцах 1 и 2 VMS (службы управления записями и интерфейс командной строки, соответственно), не учитывались при разработке NT. Кольцо 2 в VMS на самом деле было связано не с безопасностью ОС, а скорее с сохранением пользовательской среды командной строки от одной программы к другой, а в Windows NT такой концепции просто не было; CLI работает как обычный процесс. Что касается кольца 1 VMS, коду RMS в кольце 1 приходилось довольно часто обращаться к кольцу 0, а переходы по кольцу обходятся дорого. Оказалось, что гораздо эффективнее просто перейти к кольцу 0 и покончить с ним, чем иметь множество переходов кольца 0 в коде кольца 1. (Опять же, в NT нет ничего похожего на RMS.)

Но тогда зачем они там? Что касается того, почему x86 реализовал четыре кольца, а ОС их не использовали, вы говорите об ОС гораздо более поздней разработки, чем x86. Многие функции «системного программирования» x86 были разработаны задолго до того, как на ней были реализованы NT или настоящие Unix-подобные ядра, и они действительно не знали, что будут использовать ОС. (Только когда мы получили подкачку на x86, которая не появлялась до 80386, мы могли реализовать настоящие Unix-подобные или VMS-подобные ядра, не переосмысливая управление памятью с нуля. .)

Современные ОС x86 не только в значительной степени игнорируют сегментацию (они просто устанавливают сегменты C, D и S с базовым адресом 0 и размером 4 ГБ; сегменты F и G иногда используются для указания на ключевые структуры данных ОС). , они также в значительной степени игнорируют такие вещи, как «сегменты состояния задачи». Механизм TSS был явно разработан для переключения контекста потока, но оказалось, что он имеет слишком много побочных эффектов, поэтому современные ОС x86 делают это «вручную». Единственный раз, когда x86 NT изменяет аппаратные задачи, например, в некоторых действительно исключительных условиях, таких как исключение двойной ошибки.

В версии x64 многие из этих неиспользуемых функций были исключены. (К их чести, AMD действительно поговорила с командами ядра ОС и спросила, что им нужно от x86, что им не нужно или чего они не хотят, и что они хотели бы добавить.) Сегменты на x64 существуют только в том, что может быть называется рудиментарной формой, переключения состояний задач не существует и т. д. И ОС продолжают использовать только два кольца.

Если у вас материнская плата на базе набора микросхем Intel, велика вероятность того, что она оснащена блоком управления Intel (Intel ME). Это не ново. И опасения по поводу проблемы конфиденциальности, стоящей за этой малоизвестной функцией, высказывались в течение нескольких лет. Но внезапно блогосфера, кажется, заново открыла для себя проблему. И мы можем прочитать много полуправдивых или просто неверных утверждений на эту тему.

Позвольте мне попытаться прояснить, насколько это возможно, некоторые ключевые моменты, чтобы вы могли составить собственное мнение:

Что такое Intel ME?

Во-первых, давайте дадим определение прямо с веб-сайта Intel:

Во многих платформах на базе наборов микросхем Intel® встроена небольшая компьютерная подсистема с низким энергопотреблением, которая называется Intel® Management Engine (Intel® ME). Intel® ME выполняет различные задачи, когда система находится в спящем режиме, во время процесса загрузки и когда ваша система работает.

Проще говоря, это означает, что Intel ME добавляет еще один процессор на материнскую плату для управления другими подсистемами. На самом деле это больше, чем просто микропроцессор: это микроконтроллер с собственным процессором, памятью и вводом-выводом. Точно так же, как если бы это был маленький компьютер внутри вашего компьютера.

Этот дополнительный блок является частью набора микросхем и НЕ находится на кристалле основного процессора.Будучи независимым, это означает, что Intel ME не зависит от различных состояний сна основного ЦП и будет оставаться активным, даже когда вы переводите компьютер в спящий режим или когда вы его выключите.

Насколько я могу судить, Intel ME присутствует, начиная с чипсета GM45, что возвращает нас примерно в 2008 год. В своей первоначальной реализации Intel ME располагался на отдельном чипе, который можно было физически удалить. К сожалению, современные чипсеты включают Intel ME как часть северного моста, который необходим для работы вашего компьютера. Официально отключить Intel ME невозможно, даже если для его отключения был успешно использован какой-либо эксплойт.

Я читал, что он работает на «кольце -3», что это значит?

Говорить, что Intel ME работает в «кольце -3», может возникнуть некоторая путаница. Кольца защиты — это различные механизмы защиты, реализованные процессором, позволяющие, например, ядру использовать определенные инструкции процессора, в то время как приложения, работающие поверх него, не могут этого делать. Ключевым моментом является то, что программное обеспечение, работающее в «кольце», имеет полный контроль над программным обеспечением, работающим в кольце более высокого уровня. Что-то, что можно использовать для мониторинга, защиты или предоставления идеализированной или виртуализированной среды выполнения для программного обеспечения, работающего в кольцах более высокого уровня.

Обычно на платформе x86 приложения выполняются в кольце 1, ядро ​​— в кольце 0, а возможный гипервизор — в кольце -1. «кольцо -2» иногда используется для микрокода процессора. И «кольцо -3» используется в нескольких статьях, чтобы рассказать об Intel ME, как способ объяснить, что он имеет даже более высокий контроль, чем все, что работает на основном ЦП. Но «кольцо -3» — это точно не рабочая модель вашего процессора. И позвольте мне повторить еще раз: Intel ME даже не находится на кристалле процессора.

Рекомендую вам обратить особое внимание на первые страницы отчета Google/Two Sigma/Cisco/Системы с разделенными рабочими столами, чтобы получить представление о нескольких уровнях выполнения типичного компьютера на базе Intel.

В чем проблема с Intel ME?

По умолчанию Intel ME имеет доступ к другим подсистемам материнской платы. Включая оперативную память, сетевые устройства и криптографический механизм. И это при условии, что материнская плата включена. Кроме того, он может напрямую обращаться к сетевому интерфейсу, используя выделенный канал для внеполосной связи, поэтому, даже если вы отслеживаете трафик с помощью таких инструментов, как Wireshark или tcpdump, вы не обязательно увидите пакет данных, отправленный Intel ME.

Обзор архитектуры Intel ME

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

Например, Intel ME имеет потенциал для чтения любого байта в ОЗУ в поисках некоторого ключевого слова или для отправки этих данных через сетевую карту. Кроме того, поскольку Intel ME может обмениваться данными с операционной системой и, возможно, с приложениями, работающими на основном ЦП, мы можем представить сценарии, в которых Intel ME будет (аб)использоваться вредоносным программным обеспечением для обхода ОС. политики безопасности уровня.

Это научная фантастика? Ну, я лично не знаю об утечке данных или других эксплойтах, использующих Intel ME в качестве основного вектора атаки. Но цитата Игоря Скочинского может дать вам некоторое представление о том, для чего может быть использована такая система:

У Intel ME есть несколько специфических функций, и хотя большинство из них можно рассматривать как лучший инструмент, который вы можете дать ИТ-специалисту, отвечающему за развертывание тысяч рабочих станций в корпоративной среде, есть некоторые инструменты, которые были бы очень интересные возможности для подвига. Эти функции включают в себя технологию активного управления с возможностью удаленного администрирования, инициализации и ремонта, а также работу в качестве KVM. Функция System Defense — это брандмауэр самого низкого уровня, доступный на компьютере Intel. IDE Redirection и Serial-Over-LAN позволяют компьютеру загружаться с удаленного диска или исправлять зараженную ОС, а Identity Protection имеет встроенный одноразовый пароль для двухфакторной аутентификации. Есть также функции для функции «антивор», которая отключает ПК, если он не может зарегистрироваться на сервере через какой-то заданный интервал или если по сети была доставлена ​​«таблетка яда». Эта функция защиты от кражи может убить компьютер или уведомить шифрование диска о необходимости стереть ключи шифрования диска.

Предлагаю вам взглянуть на презентацию Игоря Скочинского для конференции REcon 2014, чтобы получить представление о возможностях Intel ME из первых рук:

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

Что мы знаем об Intel ME? Как это связано с Minix?

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

Intel ME совместно использует флэш-память с BIOS для хранения прошивки. Но, к сожалению, большая часть кода недоступна простым дампом флэш-памяти, потому что он использует функции, хранящиеся в недоступной части ПЗУ микроконтроллера ME. Кроме того, оказывается, что доступные части кода сжаты с использованием нераскрытых таблиц сжатия Хаффмана. Это не криптография, а сжатие — можно сказать, запутывание. В любом случае, это не помогает в обратном проектировании Intel ME.

До версии 10 Intel ME базировался на процессорах ARC или SPARC. Но Intel ME 11 основан на x86. В апреле команда Positive Technologies попыталась проанализировать инструменты, которые Intel предоставляет OEM-производителям/поставщикам, а также некоторый код обхода ПЗУ. Но из-за сжатия Хаффмана они не смогли продвинуться далеко.

Кроме того, когда мы заглянули внутрь распакованного модуля vfs, мы обнаружили строки «FS: поддельный дочерний элемент для разветвления» и «FS: разветвление поверх используемого дочернего элемента», которые явно происходят из кода Minix3. . Казалось бы, ME 11 базируется на ОС MINIX 3, разработанной Эндрю Таненбаумом :)

Поясню: TXE содержит код, «позаимствованный» у Minix. Это точно. Другие подсказки предполагают, что он вероятно запускает полные реализации Minix. Наконец, несмотря на отсутствие доказательств, мы можем предположить без особого риска, что ME 11 тоже будет основан на Minix.

До недавнего времени Minix определенно не был широко известным названием ОС. Но пара броских названий недавно изменила это. Это, а также недавнее открытое письмо Эндрю Танненбаума, автора Minix, вероятно, лежат в основе нынешнего ажиотажа вокруг Intel ME.

Эндрю Таненбаум?

Если вы его не знаете, Эндрю С. Таненбаум – ученый-компьютерщик и почетный профессор Амстердамского свободного университета в Нидерландах. Поколения студентов, в том числе и я, изучали информатику по книгам, работам и публикациям Эндрю Таненбаума.

В образовательных целях он начал разработку операционной системы Minix на основе Unix в конце 80-х годов. И был известен своим спором в Usenet с тогдашним молодым парнем по имени Линус Торвальдс о преимуществах монолитных ядер по сравнению с микроядрами.

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

По словам Танненбаума, Intel так и не объяснила причину своего интереса к Minix. "После того первоначального всплеска активности на пару лет воцарилось радиомолчание", то есть до сегодняшнего дня.

В заключение Танненбаум объясняет свою позицию:

Для протокола я хотел бы заявить, что, когда представители Intel связались со мной, они не сказали, над чем они работают. Компании редко говорят о будущих продуктах без NDA. Я подумал, что это был новый чип Ethernet или графический чип или что-то в этом роде. Если бы я подозревал, что они могут создавать шпионскую машину, я бы точно не стал сотрудничать […​]

Стоит упомянуть, можем ли мы поставить под сомнение моральное поведение Intel, как в отношении того, как они подошли к Танненбауму и Minix, так и в отношении цели, преследуемой Intel ME, строго говоря, они действовали в полном соответствии с условиями лицензии Беркли, сопровождающей Миникс-проект.

Дополнительная информация о ME?

Если вам нужна дополнительная техническая информация об Intel ME и текущем состоянии знаний сообщества об этой технологии, я рекомендую вам ознакомиться с презентацией Positive Technology, опубликованной для конференции TROOPERS17 IT-Security. Хотя не всем понятно, это, безусловно, ссылка для оценки достоверности информации, прочитанной в другом месте.

А как насчет использования AMD?

Я не знаком с технологиями AMD. Так что, если у вас есть больше информации, дайте нам знать, используя раздел комментариев. Но из того, что я могу сказать, линейка микропроцессоров AMD Accelerated Processing Unit (APU) имеет аналогичную функцию, заключающуюся в том, что они встраивают дополнительный микроконтроллер на базе ARM, но на этот раз непосредственно на кристалле ЦП.Удивительно, но AMD рекламирует эту технологию как TrustZone. Но, как и в случае с его аналогом от Intel, никто толком не знает, что он делает. И ни у кого нет доступа к источнику, чтобы проанализировать поверхность эксплойта, которую он добавляет на ваш компьютер.

Итак, что думать?

Очень легко стать параноиком в отношении этих тем. Например, что доказывает, что микропрограмма, работающая на вашем Ethernet или беспроводном сетевом адаптере, не шпионит за вами, чтобы передавать данные по какому-то скрытому каналу?

Что делает Intel ME более опасным, так это то, что он работает в другом масштабе, будучи буквально небольшим независимым компьютером, наблюдающим за всем, что происходит на хост-компьютере. Лично я был обеспокоен Intel ME с момента его первоначального объявления. Но это не помешало мне использовать компьютеры на базе Intel. Конечно, я бы предпочел, чтобы Intel сделала выбор в пользу открытого исходного кода модуля мониторинга и связанного с ним программного обеспечения. Или если бы они предоставили способ физически отключить его. Но это мнение касается только меня. У вас наверняка есть свои идеи на этот счет.

Наконец, как я сказал выше, моей целью при написании этой статьи было предоставить вам как можно больше достоверной информации, чтобы вы могли составить собственное мнение…

Уязвимости современных компьютеров приводят к утечке паролей и конфиденциальных данных.

Meltdown и Spectre работают на персональных компьютерах, мобильных устройствах и в облаке. В зависимости от инфраструктуры облачного провайдера возможна кража данных у других клиентов.

Расплав

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

Если ваш компьютер имеет уязвимый процессор и работает под управлением неисправленной операционной системы, работать с конфиденциальной информацией небезопасно без возможности утечки информации. Это относится как к персональным компьютерам, так и к облачной инфраструктуре. К счастью, существуют программные исправления против Meltdown.

Призрак

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

Кто сообщил о Meltdown?

Кто сообщил о Spectre?

  • Янн Хорн (Google Project Zero) и в сотрудничестве с (в алфавитном порядке) Дэниелом Генкиным (Университет Пенсильвании и Университет Мэриленда), Майком Гамбургом (Rambus), Морицем Липпом (Технологический университет Граца) и Ювалем Яром (в алфавитном порядке) ( Университет Аделаиды и Data61)

Вопросы и ответы

Подвержен ли я уязвимости?

Конечно, да.

Могу ли я определить, использовал ли кто-то Meltdown или Spectre против меня?

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

Может ли мой антивирус обнаружить или заблокировать эту атаку?

Хотя это и возможно в теории, на практике это маловероятно. В отличие от обычных вредоносных программ, Meltdown и Spectre трудно отличить от обычных безопасных приложений. Однако ваш антивирус может обнаруживать вредоносные программы, использующие атаки, сравнивая двоичные файлы после того, как они станут известны.

Что можно слить?

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

Не злоупотребляли ли Meltdown или Spectre в дикой природе?

Есть ли обходной путь/исправление?

Существуют исправления для защиты от Meltdown для Linux (KPTI (ранее KAISER)), Windows и OS X. Также ведется работа по защите программного обеспечения от использования Spectre в будущем, соответственно, для исправления программного обеспечения после эксплуатации через Spectre (заплата LLVM, MSVC , заголовок барьера спекуляции ARM).

Какие системы затронуты Meltdown?

Настольные, портативные и облачные компьютеры могут быть затронуты Meltdown. С технической точки зрения потенциально затронут каждый процессор Intel, который реализует неупорядоченное выполнение, то есть фактически каждый процессор с 1995 года (за исключением Intel Itanium и Intel Atom до 2013 года). Мы успешно протестировали Meltdown на поколениях процессоров Intel, выпущенных еще в 2011 году. В настоящее время мы проверили Meltdown только на процессорах Intel. На данный момент неясно, затронуты ли Meltdown процессоры AMD. По словам ARM, некоторые из их процессоров также затронуты.

На какие системы влияет Spectre?

Какие облачные провайдеры затронуты Meltdown?

В чем разница между Meltdown и Spectre?

Meltdown разрушает механизм, не позволяющий приложениям обращаться к произвольной системной памяти. Следовательно, приложения могут получить доступ к системной памяти.Spectre обманывает другие приложения, заставляя их обращаться к произвольным местам в их памяти. Обе атаки используют побочные каналы для получения информации из области памяти, к которой осуществляется доступ. Для более технического обсуждения мы ссылаемся на документы ( Meltdown и Spectre)

Почему это называется Meltdown?

Эта уязвимость практически разрушает границы безопасности, которые обычно обеспечиваются аппаратным обеспечением.

Почему он называется Spectre?

Название основано на первопричине — спекулятивном исполнении. Так как исправить это непросто, это будет преследовать нас еще довольно долго.

Есть ли дополнительная техническая информация о Meltdown и Spectre?

Да, есть научная статья и запись в блоге о Meltdown, а также научная статья о Spectre. Кроме того, об обеих атаках есть запись в блоге Google Project Zero.

Читайте также: