Кольца защиты

Поделись знанием:
Перейти к: навигация, поиск

Кольца защиты — архитектура информационной безопасности и функциональной отказоустойчивости, реализующая аппаратное разделение системного и пользовательского уровней привилегий. Структуру привилегий можно изобразить в виде нескольких концентрических кругов. В этом случае системный режим (режим супервизора или нулевое кольцо, так называемое «кольцо 0»), обеспечивающий максимальный доступ к ресурсам, является внутренним кругом, тогда как режим пользователя с ограниченным доступом — внешним. Традиционно семейство микропроцессоров x86 обеспечивает четыре кольца защиты.

Архитектуре колец защиты обычно противопоставляют системы, основанные на мандатной адресации, обеспечивающей доступ к объекту по его описанию (англ. Capability-based security).





Реализация

Поддержка нескольких колец защиты была одной из революционных концепций, включённых в операционную систему Multics, предшественника сегодняшних UNIX-подобных операционных систем. Однако, большинство UNIX-систем используют только 2 кольца, даже если аппаратные средства поддерживают больше режимов центрального процессора.

Многие современные архитектуры центральных процессоров (включая популярную архитектуру x86) включают некоторые формы защиты. Но несмотря на это, операционная система Windows NT, также как и UNIX, полностью не используют эти возможности. Предшественница Windows NT операционная система OS/2 использовала три кольца: кольцо 0 для кода ядра и драйверов устройств, кольцо 2 для привилегированного кода (программы с доступом к операциям ввода-вывода), и кольцо 3 для непривилегированного кода (почти все пользовательские программы).

Оригинальная система Multics имела восемь колец защиты, но многие современные системы имеют, как правило, меньше. Процессор всегда знает, в каком кольце исполняется код, благодаря специальным машинным регистрам. В некоторых системах области виртуальной памяти также связаны с номерами колец, и более привилегированному кольцу даются специальные права (такие, как адресация реальной памяти в обход механизма виртуальной памяти).

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

Защита кольца может сочетаться с режимами процессора (режим master/kernel/privileged против режима slave/user/unprivileged) в некоторых системах. Операционные системы, выполняющиеся на аппаратном обеспечении, поддерживающем такие режимы, могут использовать оба способа защиты или только один из них.

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

Режим супервизора

Термином режим супервизора (Supervisor mode) разработчики и производители процессоров как правило называют наиболее привилегированный режим работы процессора. Чаще всего этот режим используется для выполнения кода ядра операционной системы. Обычно этот режим по функциональности соответствует 0-му кольцу защиты (Ring 0) в x86 процессорах, то есть предоставляет неограниченный доступ ко всем возможностям процессора, работе с периферией и так далее. Код, работающий в данном режиме, как правило, занимается управлением доступными аппаратными ресурсами, разделением их использования между отдельными задачами (процессами) и так далее, что и привело к такому названию режима.

Некоторые фирмы-разработчики и производители процессоров, например ARM, не используют классификацию режимов работы процессора в виде колец защиты. Тем не менее, у большинства современных процессоров (кроме простейших) как правило присутствует несколько режимов работы отличающихся друг от друга доступными в данном режиме привилегиями.

Режим гипервизора

Некоторые современные процессоры могут предоставлять дополнительный режим работы, известный как режим гипервизора (Hypervisor mode). Как правило данный режим реализуется с целью поддержки технологий виртуализации на уровне аппаратного обеспечения. Это позволяет достигнуть не только одновременного выполнения нескольких задач, но и одновременного выполнения нескольких операционных систем на одном процессоре без существенных потерь производительности и без изменения самих операционных систем. Как правило при использовании данного режима полный доступ ко всем ресурсам возможен именно из режима гипервизора. В таком случае режим супервизора уже не является максимально привилегированным и ограничивает многие привилегированные операции. При выполнении привилегированных операций операционными системами в режиме супервизора управление передается специальной программе — гипервизору. Гипервизор осуществляет арбитраж использования имеющихся аппаратных ресурсов несколькими операционными системами аналогично тому как сами операционные системы осуществляют распределение ресурсов между несколькими задачами. По сути, гипервизор обычно является небольшим ядром, которое управляет распределением ресурсов между несколькими операционными системами и работает уровнем ниже, чем сами операционные системы. В силу этого в терминологии x86 данный режим часто условно называют кольцом −1 (Ring −1).

Режим системного управления (SMM)

Режим системного управления (System Management Mode) — самый привилегированный режим выполнения на процессорах архитектуры x86/x86-64[1] (впервые появился в 386SL). Режим SMM (условно называемый «Кольцо -2») более привилегированный, чем «Кольцо 0» и аппаратный гипервизор (VT/AMD-v) «Кольцо -1». В этом режиме приостанавливается нормальное выполнение кода, и начинается выполнение специального кода из системного ОЗУ (SMRAM) недоступного в других режимах. Этот код получает доступ ко всей системной памяти, включая ядро и память гипервизора.

Йоанна Рутковская опубликовала информацию об уязвимости «Blue Pill», позволяющей выполнить произвольный код в режиме 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.

См. также

Напишите отзыв о статье "Кольца защиты"

Примечания

  1. [www.intel.com/Assets/PDF/manual/253669.pdf Intel® 64 and IA-32 Architectures Software Developer's Manual. Volume 3B: System Programming Guide. Chapter 26].PDF (3.93 MB)
  2. [invisiblethingslab.com/resources/bh09usa/Ring%20-3%20Rootkits.pdf Introducing Ring -3 Rootkits] // Alexander Tereshkin, Rafal Wojtczuk; BH 29.07.2009

Ссылки

  • [www.insidepro.com/kk/165/165r.shtml Blue pill/red pill - the matrix has windows longhorn] (рус.). InsidePro Software. Проверено 25 марта 2010. [www.webcitation.org/65iTyvD9A Архивировано из первоисточника 25 февраля 2012].

Отрывок, характеризующий Кольца защиты

– Хорошо, хорошо, – сказал полковой командир и обратился к майору Экономову.
Но Долохов не отошел; он развязал платок, дернул его и показал запекшуюся в волосах кровь.
– Рана штыком, я остался во фронте. Попомните, ваше превосходительство.

Про батарею Тушина было забыто, и только в самом конце дела, продолжая слышать канонаду в центре, князь Багратион послал туда дежурного штаб офицера и потом князя Андрея, чтобы велеть батарее отступать как можно скорее. Прикрытие, стоявшее подле пушек Тушина, ушло, по чьему то приказанию, в середине дела; но батарея продолжала стрелять и не была взята французами только потому, что неприятель не мог предполагать дерзости стрельбы четырех никем не защищенных пушек. Напротив, по энергичному действию этой батареи он предполагал, что здесь, в центре, сосредоточены главные силы русских, и два раза пытался атаковать этот пункт и оба раза был прогоняем картечными выстрелами одиноко стоявших на этом возвышении четырех пушек.
Скоро после отъезда князя Багратиона Тушину удалось зажечь Шенграбен.
– Вишь, засумятились! Горит! Вишь, дым то! Ловко! Важно! Дым то, дым то! – заговорила прислуга, оживляясь.
Все орудия без приказания били в направлении пожара. Как будто подгоняя, подкрикивали солдаты к каждому выстрелу: «Ловко! Вот так так! Ишь, ты… Важно!» Пожар, разносимый ветром, быстро распространялся. Французские колонны, выступившие за деревню, ушли назад, но, как бы в наказание за эту неудачу, неприятель выставил правее деревни десять орудий и стал бить из них по Тушину.
Из за детской радости, возбужденной пожаром, и азарта удачной стрельбы по французам, наши артиллеристы заметили эту батарею только тогда, когда два ядра и вслед за ними еще четыре ударили между орудиями и одно повалило двух лошадей, а другое оторвало ногу ящичному вожатому. Оживление, раз установившееся, однако, не ослабело, а только переменило настроение. Лошади были заменены другими из запасного лафета, раненые убраны, и четыре орудия повернуты против десятипушечной батареи. Офицер, товарищ Тушина, был убит в начале дела, и в продолжение часа из сорока человек прислуги выбыли семнадцать, но артиллеристы всё так же были веселы и оживлены. Два раза они замечали, что внизу, близко от них, показывались французы, и тогда они били по них картечью.
Маленький человек, с слабыми, неловкими движениями, требовал себе беспрестанно у денщика еще трубочку за это , как он говорил, и, рассыпая из нее огонь, выбегал вперед и из под маленькой ручки смотрел на французов.
– Круши, ребята! – приговаривал он и сам подхватывал орудия за колеса и вывинчивал винты.
В дыму, оглушаемый беспрерывными выстрелами, заставлявшими его каждый раз вздрагивать, Тушин, не выпуская своей носогрелки, бегал от одного орудия к другому, то прицеливаясь, то считая заряды, то распоряжаясь переменой и перепряжкой убитых и раненых лошадей, и покрикивал своим слабым тоненьким, нерешительным голоском. Лицо его всё более и более оживлялось. Только когда убивали или ранили людей, он морщился и, отворачиваясь от убитого, сердито кричал на людей, как всегда, мешкавших поднять раненого или тело. Солдаты, большею частью красивые молодцы (как и всегда в батарейной роте, на две головы выше своего офицера и вдвое шире его), все, как дети в затруднительном положении, смотрели на своего командира, и то выражение, которое было на его лице, неизменно отражалось на их лицах.
Вследствие этого страшного гула, шума, потребности внимания и деятельности Тушин не испытывал ни малейшего неприятного чувства страха, и мысль, что его могут убить или больно ранить, не приходила ему в голову. Напротив, ему становилось всё веселее и веселее. Ему казалось, что уже очень давно, едва ли не вчера, была та минута, когда он увидел неприятеля и сделал первый выстрел, и что клочок поля, на котором он стоял, был ему давно знакомым, родственным местом. Несмотря на то, что он всё помнил, всё соображал, всё делал, что мог делать самый лучший офицер в его положении, он находился в состоянии, похожем на лихорадочный бред или на состояние пьяного человека.
Из за оглушающих со всех сторон звуков своих орудий, из за свиста и ударов снарядов неприятелей, из за вида вспотевшей, раскрасневшейся, торопящейся около орудий прислуги, из за вида крови людей и лошадей, из за вида дымков неприятеля на той стороне (после которых всякий раз прилетало ядро и било в землю, в человека, в орудие или в лошадь), из за вида этих предметов у него в голове установился свой фантастический мир, который составлял его наслаждение в эту минуту. Неприятельские пушки в его воображении были не пушки, а трубки, из которых редкими клубами выпускал дым невидимый курильщик.
– Вишь, пыхнул опять, – проговорил Тушин шопотом про себя, в то время как с горы выскакивал клуб дыма и влево полосой относился ветром, – теперь мячик жди – отсылать назад.
– Что прикажете, ваше благородие? – спросил фейерверкер, близко стоявший около него и слышавший, что он бормотал что то.
– Ничего, гранату… – отвечал он.
«Ну ка, наша Матвевна», говорил он про себя. Матвевной представлялась в его воображении большая крайняя, старинного литья пушка. Муравьями представлялись ему французы около своих орудий. Красавец и пьяница первый номер второго орудия в его мире был дядя ; Тушин чаще других смотрел на него и радовался на каждое его движение. Звук то замиравшей, то опять усиливавшейся ружейной перестрелки под горою представлялся ему чьим то дыханием. Он прислушивался к затиханью и разгоранью этих звуков.
– Ишь, задышала опять, задышала, – говорил он про себя.
Сам он представлялся себе огромного роста, мощным мужчиной, который обеими руками швыряет французам ядра.
– Ну, Матвевна, матушка, не выдавай! – говорил он, отходя от орудия, как над его головой раздался чуждый, незнакомый голос:
– Капитан Тушин! Капитан!
Тушин испуганно оглянулся. Это был тот штаб офицер, который выгнал его из Грунта. Он запыхавшимся голосом кричал ему:
– Что вы, с ума сошли. Вам два раза приказано отступать, а вы…
«Ну, за что они меня?…» думал про себя Тушин, со страхом глядя на начальника.
– Я… ничего… – проговорил он, приставляя два пальца к козырьку. – Я…
Но полковник не договорил всего, что хотел. Близко пролетевшее ядро заставило его, нырнув, согнуться на лошади. Он замолк и только что хотел сказать еще что то, как еще ядро остановило его. Он поворотил лошадь и поскакал прочь.
– Отступать! Все отступать! – прокричал он издалека. Солдаты засмеялись. Через минуту приехал адъютант с тем же приказанием.
Это был князь Андрей. Первое, что он увидел, выезжая на то пространство, которое занимали пушки Тушина, была отпряженная лошадь с перебитою ногой, которая ржала около запряженных лошадей. Из ноги ее, как из ключа, лилась кровь. Между передками лежало несколько убитых. Одно ядро за другим пролетало над ним, в то время как он подъезжал, и он почувствовал, как нервическая дрожь пробежала по его спине. Но одна мысль о том, что он боится, снова подняла его. «Я не могу бояться», подумал он и медленно слез с лошади между орудиями. Он передал приказание и не уехал с батареи. Он решил, что при себе снимет орудия с позиции и отведет их. Вместе с Тушиным, шагая через тела и под страшным огнем французов, он занялся уборкой орудий.
– А то приезжало сейчас начальство, так скорее драло, – сказал фейерверкер князю Андрею, – не так, как ваше благородие.
Князь Андрей ничего не говорил с Тушиным. Они оба были и так заняты, что, казалось, и не видали друг друга. Когда, надев уцелевшие из четырех два орудия на передки, они двинулись под гору (одна разбитая пушка и единорог были оставлены), князь Андрей подъехал к Тушину.
– Ну, до свидания, – сказал князь Андрей, протягивая руку Тушину.
– До свидания, голубчик, – сказал Тушин, – милая душа! прощайте, голубчик, – сказал Тушин со слезами, которые неизвестно почему вдруг выступили ему на глаза.


Ветер стих, черные тучи низко нависли над местом сражения, сливаясь на горизонте с пороховым дымом. Становилось темно, и тем яснее обозначалось в двух местах зарево пожаров. Канонада стала слабее, но трескотня ружей сзади и справа слышалась еще чаще и ближе. Как только Тушин с своими орудиями, объезжая и наезжая на раненых, вышел из под огня и спустился в овраг, его встретило начальство и адъютанты, в числе которых были и штаб офицер и Жерков, два раза посланный и ни разу не доехавший до батареи Тушина. Все они, перебивая один другого, отдавали и передавали приказания, как и куда итти, и делали ему упреки и замечания. Тушин ничем не распоряжался и молча, боясь говорить, потому что при каждом слове он готов был, сам не зная отчего, заплакать, ехал сзади на своей артиллерийской кляче. Хотя раненых велено было бросать, много из них тащилось за войсками и просилось на орудия. Тот самый молодцоватый пехотный офицер, который перед сражением выскочил из шалаша Тушина, был, с пулей в животе, положен на лафет Матвевны. Под горой бледный гусарский юнкер, одною рукой поддерживая другую, подошел к Тушину и попросился сесть.
– Капитан, ради Бога, я контужен в руку, – сказал он робко. – Ради Бога, я не могу итти. Ради Бога!
Видно было, что юнкер этот уже не раз просился где нибудь сесть и везде получал отказы. Он просил нерешительным и жалким голосом.
– Прикажите посадить, ради Бога.
– Посадите, посадите, – сказал Тушин. – Подложи шинель, ты, дядя, – обратился он к своему любимому солдату. – А где офицер раненый?
– Сложили, кончился, – ответил кто то.
– Посадите. Садитесь, милый, садитесь. Подстели шинель, Антонов.
Юнкер был Ростов. Он держал одною рукой другую, был бледен, и нижняя челюсть тряслась от лихорадочной дрожи. Его посадили на Матвевну, на то самое орудие, с которого сложили мертвого офицера. На подложенной шинели была кровь, в которой запачкались рейтузы и руки Ростова.
– Что, вы ранены, голубчик? – сказал Тушин, подходя к орудию, на котором сидел Ростов.