Режим управления системой ( SMM , иногда называемый кольцом -2 в связи с кольцами защиты ) [1] [2] - это режим работы центральных процессоров (ЦП) x86, в котором все нормальное выполнение, включая операционную систему , приостанавливается. Альтернативная программная система, которая обычно находится во встроенном ПО компьютера , или аппаратный отладчик , затем выполняется с высокими привилегиями.
Впервые он был выпущен с Intel 386SL . [3] Хотя изначально для SMM требовались специальные версии SL, Intel включила SMM в свои основные процессоры 486 и Pentium в 1993 году. AMD внедрила SMM Intel с процессорами Am386 в 1991 году. [4] Он доступен во всех более поздних микропроцессорах x86. архитектура .
Некоторые процессоры ARM также включают режим управления для системной прошивки (например, UEFI ). [5]
Операция
SMM - это специальный режим работы, предназначенный для обработки общесистемных функций, таких как управление питанием, управление аппаратным обеспечением системы или собственный код, разработанный OEM. Он предназначен для использования только системным микропрограммным обеспечением ( BIOS или UEFI ), а не прикладным программным обеспечением или системным программным обеспечением общего назначения. Основное преимущество SMM заключается в том, что он предлагает отдельную и легко изолированную среду процессора, которая прозрачно работает для операционной системы, исполнительных и программных приложений.
Для достижения прозрачности SMM устанавливает определенные правила. В SMM можно войти только через SMI (прерывание системного управления). Процессор выполняет код SMM в отдельном адресном пространстве (SMRAM), которое должно быть недоступно для других режимов работы ЦП с помощью встроенного ПО . [6]
Режим управления системой может адресовать до 4 ГБ памяти как огромный реальный режим . В процессорах x86-64 SMM может адресовать> 4 ГБ памяти в режиме реального адреса. [7]
Применение
Первоначально режим управления системой использовался для реализации функций управления питанием и оборудования, таких как Advanced Power Management (APM). Однако производители BIOS и OEM-производители полагались на SMM для новых функций, таких как Advanced Configuration and Power Interface (ACPI). [8] [9]
Некоторые варианты использования режима управления системой:
- Обработка системных событий, таких как ошибки памяти или набора микросхем
- Управление функциями безопасности системы, такими как выключение при высокой температуре процессора
- BIOS управления системой (SMBIOS)
- Расширенная конфигурация и интерфейс питания
- Управляйте операциями управления питанием , такими как управление модулем регулятора напряжения и LPCIO ( Super I / O или встроенный контроллер )
- Эмулировать мышь / клавиатуру USB как мышь / клавиатуру PS / 2 (часто называемую поддержкой устаревших USB ) [10]
- Централизовать конфигурацию системы, например, на ноутбуках Toshiba и IBM / Lenovo.
- Управление доверенным платформенным модулем (TPM) [11]
- Специфичные для BIOS программы управления оборудованием, в том числе горячая замена USB и горячая замена молнии, во время выполнения операционной системы [12]
Режим управления системой также может быть использован для запуска руткитов с высокими привилегиями , как было продемонстрировано на Black Hat 2008 [13] и 2015. [14]
Вход в SMM
SMM вводится через SMI (прерывание системного управления), которое вызывается:
- Передача сигналов оборудования материнской платы или набора микросхем через назначенный контакт SMI # микросхемы процессора. [15] Этот сигнал может быть независимым событием.
- Программное обеспечение SMI запускается системным программным обеспечением через доступ ввода-вывода к месту, которое логика материнской платы считает особенным ( общий порт 0B2h ). [16]
- Запись ввода-вывода в место, которое микропрограммное обеспечение запросило, чтобы микросхема процессора действовала.
При вводе SMM процессор ищет первую инструкцию по адресу SMBASE (содержимое регистра SMBASE) + 8000H (по умолчанию 38000H), используя регистры CS = 3000H и EIP = 8000H. Значение регистра CS (3000H) обусловлено использованием процессором адресов памяти реального режима в SMM. В этом случае CS внутренне добавляется с 0H на крайнем правом конце.
Проблемы
По умолчанию операционная система не может переопределить или отключить SMI. В связи с этим он является целью для размещения вредоносных руткитов [17] [18], включая «имплантаты» NSA [19], которые имеют индивидуальные кодовые имена для конкретного оборудования, например SOUFFLETROUGH для межсетевых экранов Juniper Networks , [20] SCHOOLMONTANA для маршрутизаторов серии J той же компании, [21] DEITYBOUNCE для DELL, [22] или IRONCHEF для серверов HP Proliant . [23]
Неправильно спроектированный и недостаточно протестированный код SMM BIOS может делать неверные предположения и не работать должным образом при прерывании некоторых других рабочих режимов x86, таких как PAE или 64-битный длинный режим . [24] Согласно документации ядра Linux , примерно в 2004 году такие ошибочные реализации функции поддержки устаревших USB-устройств были частой причиной сбоев, например, на материнских платах на базе набора микросхем Intel E7505 . [10]
Поскольку код SMM (обработчик SMI) устанавливается микропрограммой системы ( BIOS ), операционная система и код SMM могут иметь ожидания относительно несовместимых аппаратных настроек, например, различные идеи о том, как должен работать Advanced Programmable Interrupt Controller (APIC). настраивать.
Операции в SMM отвлекают процессорное время от приложений, ядра операционной системы и гипервизора , что усиливает эффект для многоядерных процессоров, поскольку каждый SMI заставляет все ядра переключать режимы. [25] Есть также некоторые накладные расходы, связанные с включением и выключением SMM, поскольку состояние ЦП должно сохраняться в памяти (SMRAM), а все кэши обратной записи должны быть сброшены. Это может нарушить поведение в реальном времени и привести к потере тика часов . Ядра для Windows и Linux определяют «SMI Тайм - аут» настройка периода , в течение которого SMM обработчики должны возвращать управление операционной системы или она будет « висеть » или « аварии ».
SMM может нарушить поведение приложений реального времени с ограниченными требованиями к времени.
Логический анализатор может потребоваться , чтобы определить , если процессор вошел SMM (проверка состояния из SMIACT # штифта CPU). [15] Восстановление кода обработчика SMI для его анализа на наличие ошибок, уязвимостей и секретов требует логического анализатора или разборки микропрограммы системы.
Смотрите также
- Coreboot - включает реализацию обработчика SMM / SMI с открытым исходным кодом для некоторых наборов микросхем.
- Intel 80486SL
- ЗАГРУЗИТЬ
- MediaGX - процессор, эмулирующий несуществующее оборудование через SMM
- Кольцо -3
- Единый расширяемый интерфейс микропрограмм (UEFI)
- Базовая система ввода / вывода (BIOS)
Рекомендации
- ^ Домас, Кристофер (2015-07-20). «Воронка памяти» (PDF) . Черная шляпа . Проверено 22 августа 2015 .
- ^ Терешкин, Александр и Войчук, Рафаль (2009-07-29). «Знакомство с руткитами Ring -3» (PDF) . Лаборатория невидимых вещей , Black Hat USA . п. 4 . Проверено 22 августа 2015 .CS1 maint: использует параметр авторов ( ссылка )
- ^ «СМИ - безумное зло (Часть 1)» . msdn.com . Microsoft.
- ^ «Техническое описание AMD Am386SX / SXL / SXLV» (PDF) . AMD.
- ^ https://documentation-service.arm.com/static/5ed11e40ca06a95ce53f905c?token=
- ^ «Руководство разработчика архитектур Intel 64 и IA-32: Том 3B» (PDF) . Intel .
- ^ Руководство по разработке программного обеспечения Intel 64 и IA-32, Vol. 3, режим управления системой
- ^ «СМИ - безумное зло (Часть 2)» . msdn.com . Microsoft.
- ^ «Режим управления системой - OSDev Wiki» . wiki.osdev.org . Проверено 12 сентября 2020 .
- ^ а б Войтех Павлик (январь 2004 г.). «Документация по ядру Linux: поддержка USB Legacy» . kernel.org . Проверено 6 октября 2013 .
- ^ Google Tech Talks - Coreboot - 00:34:30
- ^ Спецификация инициализации платформы UEFI
- ^ Роберт Макмиллан (10 мая 2008 г.). «Хакеры находят новое место, чтобы спрятать руткиты» . InfoWorld .
- ^ Роб Уильямс (07.08.2015). «Исследователи обнаружили уязвимость руткитов в процессорах Intel, датируемых 1997 годом» . HotHardware.com .
- ^ a b Режим управления системой Intel Роберт Р. Коллинз
- ^ США 5963738 - Компьютерная система для чтения / записи конфигурации системы с использованием инструкций ввода / вывода
- ^ Шон Эмблтон; Шерри Спаркс; Клифф Дзоу (сентябрь 2008 г.). «Руткиты SMM: новое поколение вредоносных программ, не зависящих от ОС» (PDF) . ACM . Проверено 6 октября 2013 .
- ^ «Хакеры находят новое место, чтобы спрятать руткиты» . Мир ПК. 2008-05-09 . Проверено 6 октября 2013 .
- ^ Источник №1 по утечкам во всем мире! (30.12.2013). "Каталог эксплойтов ANT отдела почти для всех основных программных / аппаратных средств / прошивок | LeakSource" . Leaksource.wordpress.com . Проверено 13 января 2014 .
- ^ «Шнайер о безопасности: SOUFFLETROUGH: Подвиг дня АНБ» . Schneier.com. 2013-12-30 . Проверено 13 января 2014 .
- ^ "Шнайер о безопасности: SCHOOLMONTANA: Подвиг дня АНБ" . Schneier.com. 2008-05-30 . Проверено 16 января 2014 .
- ^ «Шнайер о безопасности» . schneier.com .
- ^ «Шнайер о безопасности: IRONCHEF: Уязвимость дня АНБ» . Schneier.com. 2014-01-03 . Проверено 13 января 2014 .
- ^ http://images0.cnitblog.com/cnitblog_com/yuhensong/mode.JPG
- ^ Брайан Дельгадо и Карен Л. Караваник, «Влияние режима управления системой на производительность», Международный симпозиум IEEE 2013 г. по характеристике рабочей нагрузки, 22-24 сентября, Портленд, Орегон США.
дальнейшее чтение
- Патент США 5175853 , «Прозрачная система прерывания», опубликован 29 декабря 1992 г., выдан 29 декабря 1992 г., переуступлен корпорации Intel.
- AMD Hammer BIOS и руководство разработчика ядра , глава 6 (архивировано 7 декабря 2008 г.)
- Руководство разработчика архитектур Intel 64 и IA-32, том 3C , глава 34