stringtranslate.com

Режим управления системой

Режим управления системой ( SMM , иногда называемый кольцом −2 в отношении колец защиты ) [1] [2] — это режим работы центральных процессоров x86 (ЦП), в котором все нормальное выполнение, включая операционную систему , приостанавливается. Затем с высокими привилегиями выполняется альтернативная программная система, которая обычно находится в прошивке компьютера , или аппаратно-управляемый отладчик .

Впервые он был выпущен с Intel 386SL . [3] [4] Хотя изначально для SMM требовались специальные версии SL, Intel включила SMM в свои основные процессоры 486 и Pentium в 1993 году. AMD реализовала SMM Intel с процессорами Am386 в 1991 году. [5] Он доступен во всех более поздних микропроцессорах в архитектуре x86 . [ требуется ссылка ]

В архитектуре ARM режим Exception Level 3 (EL3) также называется режимом безопасного монитора или режимом управления системой. [6]

Операция

SMM — это режим работы специального назначения, предназначенный для обработки общесистемных функций, таких как управление питанием, управление аппаратным обеспечением системы или фирменный код, разработанный OEM. Он предназначен для использования только системной прошивкой ( BIOS или UEFI ), а не прикладным программным обеспечением или системным программным обеспечением общего назначения. Главное преимущество SMM заключается в том, что он предлагает отдельную и легко изолируемую среду процессора, которая работает прозрачно для операционной системы или исполнительных и программных приложений. [ необходима цитата ]

Для достижения прозрачности SMM налагает определенные правила. Вход в SMM возможен только через SMI (System Management Interrupt). Процессор выполняет код SMM в отдельном адресном пространстве (SMRAM), которое должно быть сделано недоступным для других режимов работы ЦП с помощью прошивки . [7]

Режим управления системой может адресовать до 4 ГБ памяти как огромный реальный режим . В процессорах x86-64 SMM может адресовать >4 ГБ памяти как реальный режим адреса. [8]

Использование

Первоначально режим управления системой использовался для реализации функций управления питанием и аппаратного контроля, таких как Advanced Power Management (APM). Однако производители BIOS и OEM-производители полагаются на SMM для более новых функций, таких как Advanced Configuration and Power Interface (ACPI). [9] [10]

Некоторые варианты использования режима управления системой:

Режим управления системой также может быть использован для запуска высокопривилегированных руткитов , как было продемонстрировано на конференциях Black Hat 2008 [14] и 2015 [15].

Вхождение в SMM

Вход в SMM осуществляется через SMI (прерывание управления системой), которое вызывается:

При входе в 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 Timeout» — период, в течение которого обработчики SMM должны вернуть управление операционной системе, иначе она « зависнет » или « вылетит ».

SMM может нарушить работу приложений реального времени с ограниченными требованиями по времени.

Для определения того, вошел ли ЦП в режим SMM (проверка состояния контакта SMIACT# ЦП), может потребоваться логический анализатор. [ 16 ] Для восстановления кода обработчика SMI с целью его анализа на наличие ошибок, уязвимостей и секретов требуется логический анализатор или разборка системной прошивки.

Смотрите также

Ссылки

  1. ^ Домас, Кристофер (2015-07-20). "The Memory Sinkhole" (PDF) . Black Hat . Получено 2015-08-22 .
  2. ^ Терешкин, Александр; Войтчук, Рафал (29.07.2009). "Введение в Ring -3 Rootkits" (PDF) . Invisible Things Lab , Black Hat USA . стр. 4 . Получено 22.08.2015 .
  3. ^ «SMI - это ЗЛО (Часть 1)» . msdn.com . Майкрософт. 17 июля 2020 г.
  4. ^ Эллис, Симсон К., «Микропроцессор 386 SL в ноутбуках», Intel Corporation, Microcomputer Solutions, март/апрель 1991 г., стр. 20
  5. ^ "Техническое описание AMD Am386SX/SXL/SXLV" (PDF) . AMD.
  6. ^ https://documentation-service.arm.com/static/5ed11e40ca06a95ce53f905c?token= [ пустой URL-адрес PDF ]
  7. ^ "Руководство разработчика архитектур Intel 64 и IA-32: Том 3B" (PDF) . Intel.
  8. ^ Руководство по разработке программного обеспечения Intel 64 и IA-32, том 3, Режим управления системой.
  9. ^ «SMI - это ЗЛО (Часть 2)» . msdn.com . Майкрософт.
  10. ^ "Режим управления системой - OSDev Wiki". wiki.osdev.org . Получено 12.09.2020 .
  11. ^ ab Vojtech Pavlik (январь 2004 г.). "Документация ядра Linux: поддержка USB Legacy". kernel.org . Получено 2013-10-06 .
  12. ^ Google Tech Talks – Coreboot – 00:34:30.
  13. ^ Спецификация инициализации платформы UEFI .
  14. ^ Роберт Макмиллан (2008-05-10). «Хакеры нашли новое место для скрытия руткитов». InfoWorld .
  15. ^ Роб Уильямс (2015-08-07). «Исследователи обнаружили уязвимость руткита в процессорах Intel, которая датируется 1997 годом». HotHardware.com .
  16. ^ ab Режим управления системой Intel Роберта Р. Коллинза
  17. ^ US 5963738, «Компьютерная система для чтения/записи конфигурации системы с использованием инструкций ввода/вывода»  .
  18. ^ Шон Эмблтон; Шерри Спаркс; Клифф Зоу (сентябрь 2008 г.). "SMM Rootkits: A New Breed of OS Independent Malware" (PDF) . ACM . Получено 2013-10-06 .
  19. ^ «Хакеры нашли новое место для скрытия руткитов». PC World. 2008-05-09 . Получено 2013-10-06 .
  20. ^ Источник №1 утечек по всему миру! (2013-12-30). "Каталог эксплойтов ANT Division АНБ для почти каждого крупного программного обеспечения/оборудования/прошивок | LeakSource". Leaksource.wordpress.com. Архивировано из оригинала 2014-01-02 . Получено 2014-01-13 .{{cite web}}: CS1 maint: numeric names: authors list (link)
  21. ^ "Шнайер о безопасности: SOUFFLETROUGH: АНБ эксплойт дня". Schneier.com. 2013-12-30 . Получено 2014-01-13 .
  22. ^ "Шнайер о безопасности: SCHOOLMONTANA: АНБ эксплойт дня". Schneier.com. 2008-05-30 . Получено 2014-01-16 .
  23. ^ "Шнайер о безопасности". schneier.com .
  24. ^ "Schneier о безопасности: IRONCHEF: АНБ эксплойт дня". Schneier.com. 2014-01-03 . Получено 2014-01-13 .
  25. ^ http://images0.cnitblog.com/cnitblog_com/yuhensong/mode.JPG [ URL-адрес файла изображения ]
  26. ^ Брайан Дельгадо и Карен Л. Караваник, «Влияние режима управления системой на производительность», Международный симпозиум IEEE 2013 по характеристике рабочей нагрузки, 22–24 сентября, Портленд, штат Орегон, США.

Дальнейшее чтение