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