Справочник от Автор24
Поделись лекцией за скидку на Автор24

Технологии защиты ОС от эксплуатации уязвимостей

  • ⌛ 2021 год
  • 👀 261 просмотр
  • 📌 192 загрузки
  • 🏢️ МИРЭА
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Технологии защиты ОС от эксплуатации уязвимостей» pdf
Дисциплина: «Операционные системы» Преподаватель: Алексеев Кирилл Анатольевич учебный год 2020/2021 online.mirea.ru Тема 1 Безопасность ОС Занятие 1.7 лекция Технологии защиты операционных систем от эксплуатации уязвимостей online.mirea.ru Технологии защиты ОС от эксплуатации уязвимостей Учебные вопросы: 1) Защита от исполнения кода в сегментах данных. 2) Рандомизация адресного пространства сегментов программы при их загрузке в память. 3) Технологии контроля целостности потока выполнения программы. Литература Основная: 1) Назаров С. В., Гудыно Л. П., Кириченко А. А. Операционные системы. Практикум. 2) Олифер В.Г., Олифер Н.А. Сетевые операционные системы. 3) Таненбаум Э. Современные операционные системы. Дополнительная: 1) Староверова Н. А. Операционные системы. 2) Стащук П. В. Краткое введение в операционные системы. online.mirea.ru Технологии защиты ОС от эксплуатации уязвимостей Пример уязвимой программы Стек процесса Адреса Стековый кадр функции main адрес возврата RBP int val (локальные переменные) адрес возврата char buf[10] локальные переменные int val Стековый кадр функции func rbp В функции func отсутствует проверка выхода за границы массива buf при копировании строки из пользовательского ввода. Это приводит к возможности эксплуатации уязвимости типа online.mirea.ru переполнение буфера на стеке. Технологии защиты ОС от эксплуатации уязвимостей Переполнение буфера (англ. Buffer Overflow) — явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера. Переполнение буфера обычно возникает из-за неправильной работы с данными, полученными извне, и памятью, при отсутствии жесткой защиты со стороны подсистемы программирования (компилятор или интерпретатор) и операционной системы. В результате переполнения могут быть испорчены данные, расположенные следом за буфером (или перед ним). Переполнение буфера является одним из наиболее популярных способов взлома компьютерных систем, так как большинство языков высокого уровня использует технологию стекового кадра — размещение данных в стеке процесса, смешивая данные программы с управляющими данными (в том числе адреса начала стекового кадра и адреса возврата из исполняемой функции). Переполнение буфера может вызывать аварийное завершение или зависание программы, ведущее к отказу обслуживания (denial of service, DoS). Отдельные виды переполнений, например переполнение в стековом кадре, позволяют злоумышленнику загрузить и выполнить произвольный машинный код от имени программы и с правами учетной записи, от которой она выполняется. Технологии защиты ОС от эксплуатации уязвимостей: • • • Защита от исполнения кода в сегментах данных (управление атрибутами доступа к сегментам памяти процесса) Рандомизация адресного пространства сегментов программы при их загрузке в память online.mirea.ru Технологии контроля целостности потока выполнения программы 1. Защита от исполнения кода в сегментах данных Защита от исполнения кода в сегментах данных (управление атрибутами доступа к сегментам памяти процесса) Программное ограничение доступа на исполнение: • программная эмуляция запрета исполнения. Аппаратный запрет доступа на исполнение с использованием NX-бита/XD-бита: • PaX; • RedHat ExecShield; • Data Execution Protection (DEP). Использование различных атрибутов доступа для сегментов данных и кода: • PaX; • OpenBSD W^X. Запрет на исполнение памяти пользователя с привилегиями ядра • PaX KERNEXEC/UDEREF/kGuard; • SMEP/SMAP; • PXN. online.mirea.ru 2. Рандомизация адресного пространства процесса Рандомизация адресного пространства процесса Технология ASLR была предложена в ответ на появление атак, использующих возврат в системную библиотеку (return-into-libc), позволяющих обойти запрет на исполнение в стеке путем перезаписи адреса возврата таким образом, чтобы он указывал на нужные функции системной библиотеки. online.mirea.ru 2. Рандомизация адресного пространства процесса Атака типа возврат в библиотеку (return-into-libc) Стек уязвимой программы Библиотека libc Другая динамическая библиотека Стек процесса адрес возврата адрес гаджета n RBP int val (локальные переменные) Адреса Адреса 8 Стек процесса 7 ... адрес гаджета i 5 val адресint гаджета 1 (локальные адрес гаджета 2 переменные) Гаджет i 6 1 XOR EAX,EBX RET Гаджет 1 ADD EBX, EDX RET Гаджет 2 DIV EDX, 0x02 ADD EDX, 0x01 CALL [EBX] RET Гаджет n 2 адрес возврата адрес гаджета 1 rbp rbp int val int val char buf[10] char buf[10] 3 4 online.mirea.ru 2. Рандомизация адресного пространства процесса ASLR (англ. address space layout randomization — «рандомизация размещения адресного пространства») — технология, применяемая в операционных системах, при использовании которой случайным образом изменяется расположение в адресном пространстве процесса важных структур данных, а именно образов исполняемого файла, подгружаемых библиотек, кучи и стека. Технология ASLR создана для усложнения эксплуатации нескольких типов уязвимостей. Например, если при помощи переполнения буфера или другим методом атакующий получит возможность передать управление по произвольному адресу, ему нужно будет угадать, по какому именно адресу расположен стек, куча или другие структуры данных, в которые можно поместить шелл-код. Сходные проблемы возникнут и при атаке типа «возврат в библиотеку» (return-to-libc): атакующему не будет известен адрес, по которому загружена библиотека. В приведённых примерах от атакующего скрыты конкретные адреса, и, если не удастся угадать правильный адрес, приложение скорее всего аварийно завершится, тем самым лишив атакующего возможности повторной атаки и привлекая внимание системного администратора. online.mirea.ru 2. Рандомизация адресного пространства процесса Типы реализаций рандомизации адресного пространства Название Разработчик Год Области, подвергающиеся рандомизации Направление защиты Dynamically linked code (shared PaX Team objects) randomization / (mmap base randomization) 2001 Динамически компонуемые Усложнение атак типа return-intoразделяемые библиотеки libc Kernel stack randomization 2002 Стек ядра ОС Heap (brk) randomization of processes 2003 Stack-based randomization 2011 Position-independent executable (PIE) randomization 2011 Open BSD Stack-Gap, mmap base Сообщество randomization OpenBSD 20032004 Динамическая память данных Усложнение абсолютной процесса, выделяемая с помощью адресации элементов кучи системного вызова brk Сегмент(ы) стека Усложнение абсолютной адресации элементов в стеке Сегмент текста, на уровне Усложнение атак типа return-intoисполняемого файла – секции, plt и атак с использованием объединяемые при загрузке в память в возвратно-ориентированного текстовый сегмент: .text, .plt, .init, .fini и программирования т.п. Сегмент(ы) стека за исключением стека Усложнение абсолютной ядра ОС, память, выделяемая адресации элементов в стеке, атак системным вызовом mmap типа return-into-libc (разделяемые библиотеки, пользовательские страницы памяти) Усложнение эксплуатации уязвимостей ядра ОС, вызывающих переполнение буфера в стеке, усложнение атак связанных с исполнением кода пользователя с привилегиями ядра ОС (ret2usr) online.mirea.ru 2. Рандомизация адресного пространства процесса Полностью рандомизирующей ASLR является та, которая рандомизирует положение системных библиотек, стека, кучи и загружаемого образа приложения, то есть та в которой есть PIE randomization. На 32-разрядных системах с PIE randomization для рандомизации секций .plt, .text, .секций startup-кода нужно компилировать программу как позиционнонезависимую. Для этого нужно добавлять при сборке специальные опции компиляции, что разработчиками ПО осуществляется далеко не всегда. Большинство 32-разрядных программ из-за требований совместимости компилируются позиционно-зависимыми, поэтому при их загрузке в память рандомизируется все кроме сегмента текста. В 64 разрядных системах для 64 разрядных программ используется нативная независимость расположения кода программы, поэтому там как правило, рандомизируется и стек, и куча, и разделяемые библиотеки, и сама программа (сегмента текста). online.mirea.ru 3. Технологии контроля целостности потока выполнения программы. 5 Третье направление представляет собой встроенные в компиляторы технологии проверки сохранения определенных свойств программы. При включении определенных опций компиляции при сборке программы современные компиляторы инструментируют код программы таким образом, чтобы она при выполнении сама отслеживала нарушение ряда предикатов безопасности. online.mirea.ru 3. Технологии контроля целостности потока выполнения программы. 5 Компиляторные технологии проверки предикатов безопасности StackGuard StackShield ProPolice Virtual-Table Verification Sanitizers (UBSan, ASAN, MSAN) online.mirea.ru 3. Технологии контроля целостности потока выполнения программы. Стек процесса Адреса адрес возврата RBP (локальные переменные) адрес возврата Стековый кадр предыдущей функции Принцип работы StackGuard заключается в следующем: при входе в функцию в стек после адреса возврата записывается некоторое трудно угадываемое значение (так называемая канарейка), копия которого хранится где-то в другом месте программы. Инструментированный код функции перед возвратом проверяет значение в стеке проверяется на соответствие значению-копии, при обнаружении несоответствия делается вывод о злоумышленной перезаписи стека. 5 canary rbp (локальные переменные) online.mirea.ru Возвратно-ориентированное программирование online.mirea.ru
«Технологии защиты ОС от эксплуатации уязвимостей» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Тебе могут подойти лекции

Смотреть все 81 лекция
Все самое важное и интересное в Telegram

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

Перейти в Telegram Bot