- •Типы архитектур ядер операционных систем Монолитное ядро
- •Подгружаемые модули
- •Модульное ядро
- •Микроядро
- •Архитектура микроядра, основанная на программах-серверах, работающих в пользовательском режиме
- •Устройство
- •Достоинства и недостатки
- •Поколения
- •История
- •Экзоядро
- •Наноядро
- •Пикоядро
- •Гибридное ядро
- •Примеры
- •Комбинация разных подходов
- •Загружаемый модуль ядра
- •Преимущества
- •Вопросы лицензирования
- •Дело Linuxant
- •Бинарная совместимость
- •Безопасность
- •Основные принципы функционирования
- •Наиболее известные представители данного класса по
- •Идеология построения драйверов
- •Сегментирование памяти
- •Условия и принцип защиты
- •Взаимодействие уровней привилегий
- •Переключение стека
- •Страничная память
- •Механизм ключей защиты
- •Симуляция сегментации Адресация основанная на Capability
- •Режим супервизора
- •Режим гипервизора
- •Режим системного управления (smm)
- •Модель взаимодействия между цп и уровнями абстракции ос
- •Системный вызов
- •Привилегии
- •Интерфейс системных вызовов
- •Промежуточная библиотека
- •Примеры и инструменты
- •Типичные имплементации
- •Категории системных вызовов
- •Режим процессора и переключение контекста
Модель взаимодействия между цп и уровнями абстракции ос
Впервые режим SMM был реализован в МП 80386SL и i486SL. Начиная с Intel-486, этот режим стал обязательным элементом архитектуры IA-32. Режим SMM предназначен для выполнения некоторых действий с возможностью их полной изоляции от операционной системы. Процессор переходит в этот режим только аппаратно по сигналу SMI#. Никакого программного способа для перехода в этот режим не предусмотрено. При возникновении SMI прерывания код SMI обработчика выполняется в отдельном адресном пространстве (SMRAM). На время перехода в SMI режим контекст прерванного процесса сохраняется. Во время выполнения SMM обработчика все прерывания отключены. Код SMI обработчика может выполняться только в SMRAM памяти.
В 2006 году Лоик Дюфло (Loïc Duflot) представил очень любопытную атаку против механизма уровней безопасности OpenBSD, которая использовала режим SMM. В то время SMM режим не был защищен и существовала возможность записать в SMRAM произвольный код. Но затем производители систем начали защищать режим SMM. Для хранения исполняемого в SMM кода была выделена специальная область памяти, названная SMRAM, которая получила особую защиту со стороны чипсета (Memory Controller Hub, если быть точным). На большинстве современных систем уже весьма нетривиально выполнить код с привилегиями SMM. Для этого нужно найти «дыру» в чипсете или BIOS (даже если у нас есть доступ на уровне ядра). На самом деле, на Black Hat 2008 в Лас-Вегасе Шерри Спаркс (Sherri Sparks) и Шон Эмблтон (Shawn Embleton) сделали презентацию о руткитах SMM, но при этом ясно дали понять, что их руткиты можно загрузить только на старых системах (до 2006 года). Также на конференции обсуждалась «дыра» в BIOS Intel, которая позволяла выполнять произвольный код в режиме SMM. Затем были обнаружены ещё два способа пробиться в режим SMM на различных системах. Другая атака, которую обнаружили в конце 2008 года, срабатывала на большом количестве систем Intel (и потенциально на машинах со старыми BIOS).
Руткиты SMM (или руткиты кольца −2) требуют доступа к сильно защищённой памяти SMM, и на большинстве современных систем атакующему придётся использовать «дыры» (найти их весьма нетривиально).
Атаки SMM разрабатываются под конкретную версию BIOS (или линейку BIOS) и семейство чипсетов, например, для линеек 3-й или 4-й серии чипсетов Intel (т.е. атаки на Q35 и Q45, либо атаки на AMI и AWARD BIOS различны).
Intel vPro / Active Management Technology
Invisible Things Lab предложила называть функциональность технологии Intel vPro / Intel AMT кольцом -3.[2] В рамках этой технологии чипсеты, поддерживающие технологию vPro, содержат независимый микропроцессор (архитектура ARC4), имеют отдельный интерфейс к сетевой карте, эксклюзивный доступ к выделенному участку ОЗУ (16 МБ), DMA-доступ к основной ОЗУ. Программы на нём выполняются независимо от центрального процессора, прошивка хранится совместно с кодами BIOS либо на аналогичной флеш-памяти SPI (код имеет криптографическую подпись). Частью прошивки является встроенный веб-сервер. По умолчанию AMT выключен, но часть кода все же работает в этом режиме даже при выключенном AMT. Код кольца -3 активен даже в режиме питания S3 Sleep.
Filesystem in Userspace (FUSE) («Файловая система в пользовательском пространстве») — это модуль для ядер UNIX-подобных операционных систем, с открытым исходным кодом и относящийся к свободному программному обеспечению. Модуль распространяется под лицензиями GNU GPL и GNU LGPL. Он позволяет пользователям без привилегий создавать их собственные файловые системы, не переписывая код ядра. Это достигается за счёт запуска кода файловой системы в пространстве пользователя, в то время как модуль FUSE только предоставляет мост для актуальных интерфейсов ядра. FUSE была официально включена в главное дерево кода Linux в версии 2.6.14.
FUSE особенно полезна для написания виртуальных файловых систем. В отличие от традиционных файловых систем, которые по существу сохраняют информацию для восстановления данных с диска, виртуальные файловые системы не хранят данные непосредственно. Они действуют как представление, трансляция существующей файловой системы или устройства хранения. В принципе, любой ресурс, доступный для использования FUSE, может быть экспортирован в файловую систему.
Сама система FUSE была частью проекта A Virtual Filesystem (AVFS), но потом AVFS выделился в собственный проект на SourceForge.net.
FUSE также доступна для систем FreeBSD, NetBSD (как PUFFS), OpenSolaris, Mac OS X, Minix 3.2[2], AmigaOS.
