Защита программ в оперативной памяти

Обновлено: 08.07.2024

Содержание

Защита по уровню привилегей

В защищенном режиме процессор имеет четырехуровневую систему привилегий, которая управляет использованием привилегированных инструкций и доступом к сегментам памяти. Уровень привилегии сегмента указывается в его дескрипторе. Нумерация уровней происходит от 0 до 3, высшие привилегии соответствуют нулевому уровню. Для наглядности их принято изображать в виде колец.

Уровни привилегий обеспечивают защиту целостности операционной системы от «недружелюбных» программ. А также защиту адресных пространств одновременно выполняемых задач. Сервисы операционной системы, обработчики прерываний и другое системное обеспечение могут включаться в виртуальное адресное пространство каждой задачи и защищаться системой привилегий. Как правило, назначение уровней следующее. Нулевой уровень – уровень операционной системы (ядро операционной системы). Уровни 1 и 2 – программы системного назначения. Уровень 3 – прочие прикладные программы (уровень прикладных программ). Дескрипторы (сегменты) и селекторы имеют свои атрибуты привилегий. Привилегии задач оказывают влияние на выполнение инструкций и использование дескрипторов. Текущий уровень привилегии задачи CPL (Current Privilege Level) определяется двумя младшими битами регистра CS.

CPL задачи может изменяться только при передаче управления к новому сегменту через дескриптор шлюза. Задача начинает выполняться с уровня CPL, указанного селектором кодового сегмента внутри TSS, когда задача иницииру­ется посредством операции переключения задач. Задача, выполняемая на нуле­вом уровне привилегий, имеет доступ ко всем сегментам, описанным в GDT, и является самой привилегированной. Задача, выполняемая на уровне 3, имеет самые ограниченные права доступа. Текущий уровень привилегии задачи может изме­няться только при передаче управления через шлюзы. Привилегии сегмента задаются полем DPL байта управления доступом.

Image006.jpg

DPL определяет наибольший номер уровня привилегий (фактически, наименьшие привилегии), с которым возможен доступ к данному дескриптору. Самый защищенный (привилегированный) дескриптор имеет DPL=0, к нему имеют до­ступ только задачи с CPL=0. Самый общедоступный дескриптор имеет DPL=3, его могут использовать задачи с CPL=0, 1, 2, 3. Это правило применимо ко всем дескрипторам, за исключением дескриптора LDT. Привилегии селектора задаются полем RPL (Requested Privilege Level) — двумя младшими битами селектора. [2]

Метод защиты ключей

211.jpg

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

Каждой рабочей программе ОС придает специальный ключ — ключ программы. Все выделенные для данной рабочей программы страницы от­мечаются одним и тем же ключом страницы или ключом защиты. В качест­ве ключа защиты обычно указывается двоичный код номера программы. В процессе обращения к ОП производится сравнение ключа выполняемой про граммы с ключами защиты соответствующих страниц памяти. Обращение разрешается только при совпадении сравниваемых кодов ключей. Защита па­мяти по ключам применяется не только при работе ОП с процессором, но и в ходе обмена информацией с ВЗУ через каналы ввода-вывода. Тогда вместо ключей программ используются ключи каналов. Разрядность кодов ключей определяется максимальным количеством параллельно выполняемых программ. [3]

Метод граничных регисторов

1.jpg

Идея метода состоит в том, что вводят два граничных регистра, указывающих верхнюю и нижнюю границы области памяти, куда программа имеет право доступа.

При каждом обращении к памяти проверяется, находится ли используемый адрес в установленных границах. При выходе за границы обращение к памяти подавляется и формируется запрос прерывания, передающий управление операционной системе. Содержание граничных регистров устанавливается операционной системой перед тем, как для очередной целевой программы начнется активный цикл. Если для динамического распределения памяти используется базовый регистр, то он одновременно определяет и нижнюю границу. Верхняя граница подсчитывается операционной системой в соответствии с длиной программы в ОП. Преимущество данного способа защиты памяти состоит в том, что он позволяет защищать области памяти произвольной длины. Кроме того, блок защиты достаточно прост, а его функционирование не приводит к значитель­ным временным затратам. Однако необходимость размещения программ в областях памяти с последовательными номерами ячеек и ограниченных дву­мя граничными адресами существенно снижает возможности программиро­вания и даже эффективность работы ЭВМ. Поэтому способ защиты памяти по граничным адресам в настоящее время применяется редко, при статиче­ском распределении памяти, когда для каждой из параллельно выполняемых рабочих программ заранее (до начала их выполнения) отводится определен­ная область памяти. Реализация способа защиты памяти предполагает разделение основной памяти на блоки, каждому из которых ставится в соответствие некоторый ключ защиты памяти. Каждой действующей программе ставится в соответствие ключ защиты, который имеет ту же длину, что и ключ защиты памяти. Если эти ключи совпадают или ключ защиты памяти равен нулю, та использование данного блока памяти разрешается. В противном случае использование памяти запрещено и вырабатывается сигнал прерывания программы. В ключе защиты памяти часто предусматривается бит защиты памяти при выборке. Если этот бит равен нулю, то защита действует только при записи в память. Если же бит защиты при выборке равен единице, защита действует при операции выборки так же, как и при записи.

Защита памяти по маскам

Защита памяти по маскам используется при страничной организации ОП. Для каждой программы перед её выполнением указываются номера страниц, отведенные для размещения её команд и всех необходимых данных. Указание о номерах отведенных страниц для данной программы задается управляющей программой операционной системы в виде кода маски или ко­да признаков страниц. Код маски формируется для каждой рабочей програм­мы. Под маской программы понимается n-разрядный двоичный код, разряд­ность которого определяется количеством страниц ОП. Каждый i-й разряд маски указывает о принадлежности i-й страницы ОП данной программе: если в i-м разряде задано значение 1, то при обращении к ОП разрешен доступ к любой ячейке i-ой страницы, если же i-й разряд маски содержит ноль, то вы­полняемой программе доступ к i-й странице запрещен.

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

Работа содержит 1 файл

№1 Защита программ в оперативной памяти.docx

Защита оперативной памяти осуществляется во всех моделях ЕС ЭВМ по ключам. Сущность такого метода защиты заключается в том, что каждой рабочей программе и отводимым для ее размещения массивам ячеек ( страницам) основной оперативной памяти придается специальный код - ключ защиты. При несовпадении ключей должен формироваться сигнал о нарушении защиты памяти.

Защита оперативной памяти осуществляется в машинах ЕС ЭВМ по ключам. Сущность этого метода защиты заключается в том, что каждой рабочей программе и отводимым для ее размещения массивам памяти придается специальный код - ключ защиты. Обращение к памяти разрешается только в том случае, когда ключ программы совпадает с ключом защиты памяти.

Память ключей зашиты обеспечивает защиту оперативной памяти по записи и чтению. При каждом обращении к оперативной памяти одновременно производится обращение к ПКЗ. При несовпадении ключей обращение к оперативной памяти запрещается. Емкость одного блока ПКЗ составляет 256 байт, цикл обращения 0 5 мкс. В модели ЕС-1050 имеется возможность подключения двух блоков ПКЗ.

Подсистема управления файлами объектов допускает расширение механизмов защиты оперативной памяти системы 1432 на всю память. Сама подсистема управления файлами объектов заслуживает специального изучения, которое будет проведено в гл.

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

Базовый модуль включает расширитель арифметики с фиксированной запятой и диспетчер памяти и выполняет основной набор команд, управление и защиту оперативной памяти, информационный обмен в вычислительном комплексе.

Супервизор в этом режиме выполняет следующие обязательные функции: обработка всех видов прерываний; обеспечение выполнения одной задачи; управление и защита оперативной памяти; поиск программы по ее имени в библиотеке; загрузка программных модулей и передача им управления; загрузка программных модулей, имеющих структуру с планируемым перекрытием, и передача управления между сегментами модуля; регистрация состояния технических средств при обнаружении неисправности; запуск контрольных точек и повторный пуск заданий. В процессе генерации можно построить управляют щую программу, выполняющую еще целый ряд дополнительных функций.

Важным элементом ОС / 360 является супервизор, выполняющий ряд функций: управление одной или несколькими задачами, основной памятью; связь между модулями; управление работой программы; службой времени по часам, резидентными программами доступа к данным, наблюдение за защитой оперативной памяти, обработка запросов на ввод и вывод, динамическая загрузка программ в память, совмещение работы каналов с процессором.

В состав супервизора входят программы, которые обеспечивают обработку всех типов прерываний, управляют выполнением одной или нескольких задач, распределяют память, осуществляют связь между модулями, обеспечивают работу программы с оверлейной структурой, управляют таймером, распоряжаются резидентными программами доступа к данным, обеспечивают защиту оперативной памяти, осуществляют запрос на ввод-вывод, динамически загружают программы в оперативную память, совмещают работу каналов с процессорами, обеспечивают работу системы в режиме квантования времени, совмещают пакетную обработку и режим квантования времени, обеспечивают режим многопроцессорных комплексов.

В модели ЕС-1050 защита оперативной памяти осуществляется при выделении страниц емкостью 2048 байт каждая. При полном составе ОП включает в свой состав 512 страниц; в соответствии с этим при полной емкости памяти ключей защиты используются два идентичных тонкопленочных ЗУ емкостью по-256 кодов. Коды ключей, размещаемые в этих ЗУ, являются 9-разрядными; собственно ключ защиты представляют разряды 3, 4 - й разряд указывает на характер защиты ( 0 - защита по записи, 1 - защита по считыванию), 5 - й разряд используется для размещения признака обращения к данной странице, 6 - й - для размещения признака записи в данную страницу, 7 - й - резервный, 8 - й - контрольный. При работе блока защиты обычно используются только 3, 4 - й и 8 - й разряды.

Конструктивно устройство выполнено на базе типовой стойки, в которой размещаются блок управления, модуль памяти и система питания. Имеются средства защиты оперативной памяти по записи и чтению. Съемный модуль памяти ЕС-3941 представляет собой автономный блок емкостью 64 кбайта ( 660x419x97 мм) и предназначен для приема, хранения и выдачи двоичной информации в составе оперативного запоминающего устройства. В качестве запоминающего элемента используется ферритовый сердечник типа М5ВТ - 1 - 1К с габаритными размерами 0 6 X 0 4 X 0 13 мм.

Селекторный канал при готовности принять или передать байт или группу байт данных возбуждает запрос на передачу данных, который через схему формирования запроса на АПРС поступает в ЦП. По этому запросу работа последнего приостанавливается после завершения очередного цикла обращения к оперативной памяти и выполняется цикл передачи данных между каналом и оперативной памятью. При этом адрес этой памяти передается из канала через схему передачи адреса данных в адресный регистр оперативной памяти - МН, а также ключ защиты - через схему передачи ключей защиты в блок защиты оперативной памяти. Если выполняется команда ввода, данные из канала передаются через схему передачи данных в информационные регистры оперативной памяти ( Н, 3), если команда вывода, то данные из оперативной памяти передаются через регистры Н, 3 и схему передачи данных в информационный регистр того канала, запрос которого удовлетворяется. При передаче данных между каналами и оперативной памятью в схеме передачи данных осуществляется соответствующая коммутация информационных шин каналов и шин четного и нечетного байт информационного регистра оперативной памяти в зависимости от числа передаваемых байт, четности адреса ОП и выполняемой команды.

Блок управления оперативной памятью ( БУ ОП) обслуживает не только центральный процессор, но и каналы ввода-вывода. Он организует обращение к оперативной памяти, осуществляя ее активизацию и управление работой, задает режим записи или считывания, выдает в ОП адреса обращения, принимает и выдает информацию от ЦП и каналов. Запросы процессора и каналов ввода-вывода удовлетворяются по приоритету, причем высшим обладают каналы. Память ключей защиты, входящая в состав блока, обеспечиваетпостраничную защиту оперативной памяти при записи и считывании. Это необходимо для организации мультипрограммной работы машины.

Защита содержимого основной памяти как в режиме записи, так и в режиме чтения, осуществляется с помощью блока защиты и памяти ключей. При обращении к оперативной памяти центральный процессор использует ключ защиты в текущем ССП, при выполнении операций ввода - вывода используется ключ защиты, содержащийся в УСУ, связанном с данной операцией. Этот ключ защиты указывается программой и записывается в УСУ при его формировании. При обращении к оперативной памяти ключ защиты, связанный с обращением к этой памяти, сравнивается с ключом памяти, связанным с заданной областью оперативной памяти и автоматически извлекаемым из памяти ключей. Пятый, младший разряд ключа памяти определяет способ защиты оперативной памяти.

При мультипрограммном режиме работы ЭВМ в ее памяти одновременно могут находиться несколько независимых программ. Поэтому необходимы специальные меры по предотвращению или ограничению обращений одной программы к областям памяти, используемым другими программами. Программы могут также содержать ошибки, которые, если этому не воспрепятствовать, приводят к искажению информации, принадлежащей другим программам. Последствия таких ошибок особенно опасны, если разрушению подвергнутся программы операционной системы. Другими словами, надо исключить воздействие программы пользователя на работу программ других пользователей и программ операционной системы. Следует защищать и сами программы от находящихся в них возможных ошибок.

Таким образом, средства защиты памяти должны предотвращать 2

  • неразрешенное взаимодействие пользователей друг с другом,
  • несанкционированный доступ пользователей к данным,
  • повреждение программ и данных из-за ошибок в программах,
  • намеренные попытки разрушить целостность системы ,
  • использование информации в памяти не в соответствии с ее функциональным назначением.

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

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

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

Если нарушается защита памяти , исполнение программы приостанавливается и вырабатывается запрос прерывания по нарушению защиты памяти .

Защита от вторжения программ в чужие области памяти может быть организована различными методами. Но при любом подходе реализация защиты не должна заметно снижать производительность компьютера и требовать слишком больших аппаратурных затрат.

Методы защиты базируются на некоторых классических подходах, которые получили свое развитие в архитектуре современных ЭВМ. К таким методам можно отнести защиту отдельных ячеек, метод граничных регистров , метод ключей защиты [ 7 ] .

Защита отдельных ячеек памяти организуется в ЭВМ, предназначенных для работы в системах управления, где необходимо обеспечить возможность отладки новых программ без нарушения функционирования находящихся в памяти рабочих программ, управляющих технологическим процессом. Это может быть достигнуто выделением в каждой ячейке памяти специального "разряда защиты". Установка этого разряда в "1" запрещает производить запись в данную ячейку, что обеспечивает сохранение рабочих программ. Недостаток такого подхода - большая избыточность в кодировании информации из-за излишне мелкого уровня защищаемого объекта ( ячейка ).

В системах с мультипрограммной обработкой целесообразно организовывать защиту на уровне блоков памяти, выделяемых программам, а не отдельных ячеек.

Метод граничных регистров (рис. 17.1) заключается во введении двух граничных регистров, указывающих верхнюю и нижнюю границы области памяти, куда программа имеет право доступа .


Рис. 17.1. Защита памяти методом граничных регистров

При каждом обращении к памяти проверяется, находится ли используемый адрес в установленных границах. При выходе за границы обращение к памяти не производится, а формируется запрос прерывания , передающий управление операционной системе. Содержание граничных регистров устанавливается операционной системой при загрузке программы в память .

Модификация этого метода заключается в том, что один регистр используется для указания адреса начала защищаемой области, а другой содержит длину этой области.

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

Метод ключей защиты, в отличие от предыдущего, позволяет реализовать доступ программы к областям памяти, организованным в виде отдельных модулей, не представляющих собой единый массив .

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

В ключе защиты памяти предусматривается дополнительный разряд режима защиты. Защита действует только при попытке записи в блок, если в этом разряде стоит 0, и при любом обращении к блоку, если стоит 1. Коды ключей защиты памяти хранятся в специальной памяти ключей защиты, более быстродействующей, чем оперативная память .

Функционирование этого механизма защиты памяти поясняется схемой на рис. 17.2.

При обращении к памяти группа старших разрядов адреса ОЗУ , соответствующая номеру блока, к которому производится обращение, используется как адрес для выборки из памяти ключей защиты кода ключа защиты, присвоенного операционной системой данному блоку. Схема анализа сравнивает ключ защиты блока памяти и ключ программы, находящийся в регистре слова состояния программы ( ССП ), и вырабатывает сигнал "Обращение разрешено" или сигнал " Прерывание по защите памяти". При этом учитываются значения режима обращения к ОЗУ ( запись или считывание), указываемого триггером режима обращения ТгРО, и режима защиты, установленного в разряде режима обращения (РРО) ключа защиты памяти .

Глубокое заражение: 5 угроз, проникающих в железо

Для иллюстрации этой тревожной тенденции рассмотрим пятерку опасных аппаратных уязвимостей, обнаруженных за последнее время в начинке современных компьютеров.

1 место: оперативная память

Первое место безоговорочно занимает проблема с оперативной памятью DDR DRAM, которую принципиально невозможно решить никаким программным патчем. Уязвимость, получившая название Rowhammer, связана… с прогрессом технологий производства чипов.

По мере того как микросхемы становятся компактнее, их соседние элементы все больше влияют друг на друга. В современных чипах памяти это может приводить к редкому эффекту самопроизвольного переключения ячейки памяти под действием электрического импульса от соседей.

До недавних пор предполагалось, что этот феномен практически невозможно использовать в реальной атаке для получения контроля над компьютером. Однако команде исследователей удалось таким образом получить привилегированные права на 15 из 29 тестовых ноутбуков.

Работает эта атака следующим образом. Для обеспечения безопасности изменения в каждый блок оперативной памяти могут вносить только определенная программа или процесс операционной системы. Условно говоря, некий важный процесс работает внутри хорошо защищенного дома, а неблагонадежная программа — на улице, за входной дверью.

Однако выяснилось, что если за входной дверью громко топать (быстро и часто менять содержимое ячеек памяти), то дверной замок с высокой вероятностью ломается. Такие уж замки ненадежные стали нынче делать.

Память более нового стандарта DDR4 и модули с контролем четности (которые стоят существенно дороже) к этой атаке невосприимчивы. И это хорошая новость.

Плохая же состоит в том, что очень многие современные компьютеры взломать таким образом можно. И сделать с этим ничего нельзя, единственное решение — поголовная замена используемых модулей памяти.

2 место: жесткие диски

Хорошая новость состоит в том, что такая атака — крайне трудоемкое и дорогостоящее мероприятие. Поэтому подавляющему большинству пользователей данная опасность не грозит — только особым счастливчикам, чьи данные настолько ценны, что их кража способна окупить расходы.

3 место: интерфейс USB

На третьем месте в нашем хит-параде уже не очень свежая, но по-прежнему актуальная уязвимость интерфейса USB. Совсем недавно новую жизнь в эту тему вдохнула современная компьютерная мода. Дело в том, что последние модели ноутбуков Apple MacBook и Google Pixel оснащены универсальным портом USB, через который в числе прочего подключается и зарядное устройство.

На первый взгляд ничего плохого здесь нет, всего лишь красивая унификация интерфейсов. Проблема в том, что подключение любого устройства через шину USB — дело небезопасное. Мы уже писали о критической уязвимости BadUSB, обнаруженной летом прошлого года.

Она позволяет внедрить вредоносный код непосредственно в микроконтроллер USB-устройства (флешки, клавиатуры и любого другого устройства) — там, где его не обнаружит, увы, ни одна антивирусная программа, даже самая хорошая. Тем, кому есть что терять, эксперты по безопасности советуют на всякий пожарный просто не пользоваться USB-портами. Вот только для новых Макбуков такая рекомендация нереализуема в принципе — зарядку же нужно подключать!

4 место: интерфейс Thunderbolt

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

После публикации исследования Хадсона Apple заблокировала возможность такой атаки в обновлении операционной системы (OS X 10.10.2). Правда, по словам Хадсона, этот патч — всего лишь временное решение. Принципиальная основа уязвимости по-прежнему остается нетронутой, так что история явно ждет продолжения.

5 место: BIOS

Когда-то каждый разработчик BIOS для материнских плат ПК использовал собственные рецепты, которые держались в секрете. Разобраться в устройстве таких микропрограмм было очень непросто, а значит, мало какой хакер был способен обнаружить в них баги.

С распространением UEFI изрядная часть кода для разных платформ стала общей, и это здорово облегчило жизнь не только производителям компьютеров и разработчикам BIOS, но и создателям зловредов.

Например, одна из недавних уязвимостей UEFI-систем позволяет перезаписать содержимое BIOS, несмотря на все ухищрения защиты, включая новомодную функцию Secure Boot в Windows 8. Ошибка допущена в реализации стандартной функции, поэтому работает во многих версиях BIOS разных производителей.

Большинство описанных выше угроз пока остаются некой экзотикой, с которой рядовые пользователи едва ли столкнутся. Однако завтра ситуация может в корне измениться — возможно, скоро мы с умилением будем вспоминать старые добрые времена, когда самым надежным способом лечения зараженного компьютера считалось форматирование жесткого диска.

Читайте также: