Проблемы обеспечения информационной безопасности Пакулин Николай Витальевич, Институт системного программирования РАН (ИСП РАН) npak@ispras.ru http://ispras.ru/ Выступление в МФТИ 4 марта 2013 года Что такое информационная безопасность 2 Что такое информационная безопасность (2) • Информационная безопасность – это процесс обеспечения конфиденциальности, целостности и доступности информации (ГОСТ Р ИСО/МЭК 17799). – Конфиденциальность – свойство информационных ресурсов, в том числе информации, связанное с тем, что они не станут доступными и не будут раскрыты для неуполномоченных лиц. – Целостность: неизменность информации в процессе её передачи или хранения. – Доступность: свойство информационных ресурсов, в том числе информации, определяющее возможность их получения и использования по требованию уполномоченных лиц. 3 Мой процесс – моя крепость • Операционная система строит для приложения процесс – Защищает данные от наблюдения/изменен ия – Защищает код от модификации – Предоставляет доступ через определенные точки («ворота») • Все под контролем? Все под контролем? Stuxnet Разрушение технологического процесса Gauss – кража конфиденциальных данных DuQu – кража конфиденциальных данных Flame – кибер-шпионаж Статистика выявления уязвимостей в ПО 2006 2012 ●Системное ПО Операционные системы Серверное ПО ●Прикладное ПО Браузеры Просмотр мультимедиа ●Информационные системы ●Встроенное ПО По сведениям Национально базы данных уязвимостей, США http://web.nvd.nist.gov/view/vuln/statistics Тенденции роста злонамеренного ПО ●Рост числа выявленных сигнатур на 50-100% в год Ничто не бывает хорошо во всех отношениях… • Для ядра ОС процессы прозрачны – Доступ к оперативной памяти, загрузка кода, … • Ядро ОС монолитно – Все компоненты находятся на одном уровне привилегий • Внедрение злонамеренного кода в ядро дает полный контроль над системой – – – – Использование уязвимостей ОС Краденые сертификаты цифровой подписи Недокументированные возможности … Чем совершеннее вещь, тем реже она удаётся (Ницше) • «Массовые операционные системы характеризуются двумя чертами, которые делают их малонадежными и слабо защищенными: они слишком объемные, а отдельные компоненты крайне плохо изолированы друг от друга» Таненбаум и др. (2006) • «С течением времени цифровые системы будут только усложняться, а сложность – худший враг безопасности» Шнайер (2000) • «Всего лишь одна логическая ошибка в коде операционной системы может полностью свести на нет работу всех защитных механизмов» Мэдник и Донован (1973) 9/26 Уязвимости и закладки • Уязвимость – недостаток в системе, используя который, можно нарушить её целостность и вызвать неправильную работу. – Программные ошибки – Ошибки проектирования – Ненадежные механизмы защиты • Закладка – преднамеренно искаженный или скрытно внедренный исполнимый код, предоставляющий неавторизованный доступ – В аппаратуре, драйверах, системном ПО, прикладном ПО 10 Борьба с уязвимостями • Выпуск обновлений • Исследование и анализ кода – Статическая верификация программ – Динамический анализ программ – Стенды полунатурного моделирования • Контроль ПО внешними средствами 11 Проект Севигатор ЗАЩИТА ПРИКЛАДНЫХ ПРОГРАММ ОТ СКОМПРОМЕТИРОВАННОЙ ОС 12 Проект Севигатор: постановка задачи • Обеспечение конфиденциальности «в целом» – Контроль доступа к каналам передачи и хранения данных в условиях недоверенной операционной системы – Недоверенный код лишен возможности передать конфиденциальные данные внешнему получателю • Обеспечение целостности – Контроль модификации критической информации: • Запись возможна только доверенным процессам • Возможность доступа к критичной информации только «по чтению» для недоверенного кода (в т.ч. ядра ОС) • Передача данных по каналам разрешена только авторизованным приложениям • Отсутствие необходимости модифицировать код операционной системы и приложений 13 Архитектура системы защиты Сервисная виртуальная машина Виртуальная машина пользователя Process Delegate Trusted process Гипервизор Доступ разрешен Syscall interception Модуль защиты Доступ запрещен Internet 14 Введение в виртуализацию VM1 Процессы ОС Драйверы VM2 Процессы ОС Драйверы Гипервизор Virtual Machine Manager Аппаратура вычислительной системы • Виртуализация – разделение ресурсов вычислительной системы между несколькими ОС, выполняющимися одновременно – Виртуальная машина • Гипервизор (Virtual Machine Manager) – программа или аппаратная схема, обеспечивающая одновременное выполнение нескольких ОС на одной вычислительной системе – Изоляция ОС друг от друга, – Защиту и безопасность – Разделение ресурсов между различными запущенными ОС • Технологии: Intel VT и AMD-V 15 Введение в виртуализацию (2) • Задачи гипервизора – Настройка трансляции адресов: из «физических» адресов ВМ в аппаратные физические адреса – Настройка разделения устройств между ВМ – Перехват привилегированных команд – Перехват и маршрутизация прерываний – Обработка явных обращений (VMMCALL) 16 Применение виртуализации для защиты ПО • Привилегии гипервизора выше, чем привилегии ядра ОС • Гипервизор управляет доступом к физической памяти • Гипервизор управляет доступом к аппаратным ресурсам • Объем кода гипервизора << объем кода ядра ОС – Возможен анализ качества (выявление уязвимостей) 17 Архитектура системы защиты Сервисная виртуальная машина Виртуальная машина пользователя Process Delegate Trusted process Гипервизор Доступ разрешен Syscall interception Модуль защиты Доступ запрещен Internet 18 Возможные точки вредоносного воздействия на доверенный процесс Контекст процесса Таблицы приписки Физическая память Виртуальная память Исполняемые файлы Загрузка Ядро ОС Другой процесс DMA Регистры (EIP) Файл подкачки 19 Регистрация доверенного приложения • Стартовый набор ограничений задается «регистрационной» информацией программы – Регистрационная информация содержит контрольные суммы (SHA-1) для всех объектных модулей приложения • в т.ч. ld.so для динамически компонуемых приложений – Регистрационная информация не привязана к конкретному имени или расположению приложения в файловой системе • у каждого приложения есть уникальный ID • Запуск доверенного приложения осуществляется специальной программой «монитором», который сообщает гипервизору ID приложения • Гипервизор сравнивает загруженный образ с сохраненными контрольными суммами Возможные точки вредоносного воздействия на доверенный процесс Контекст процесса Таблицы приписки Физическая память Виртуальная память Исполняемые файлы Загрузка Ядро ОС Другой процесс DMA Регистры (EIP) Файл подкачки 21 Трансляция адресов виртуальной машины Виртуальная машина (таблицы ОС) Таблица страниц Директория страниц Адрес 2 Физ. адрес Таблица страниц Адрес 44 Гипервизор (вложен. таблицы ВМ) Таблица страниц Физ. адрес Директория страниц взаимнооднозначное соответствие Вирт. адрес Адрес 1 Адрес 1* Адрес 2* Маш. адрес Таблица страниц Попытка доступа к закрытой странице Принцип защиты физической памяти Виртуальная машина Процесс 1 Процесс 2 V1 Расшир. таблицы приписки Таблицы приписки P V2 Расшир. таблицы приписки Таблицы приписки Процесс 3 • • Расширенные таблицы приписки контролируют доступ к общей физической памяти Отдельные для каждого доверенного процесса – • V3 деление по PID Отдельные для ядра ОС – деление по режиму привилегий Расшир. таблицы приписки Взаимоисключающие режимы доступа 23 M Контроль за потоком управления Передача управления между процессом и ядром ОС только через гипервизор Доверенныйпроцесс процесс Доверенный процесс Доверенный • Проверка регистров • Переключение домена Гипервизор Перехват возврата управления процессу Проверка ограничений на содержимое памяти Перехват прерывания выполнения процесса • Сохранение регистров • Переключение домена Ядро ОС Другойпроцесс процесс Другой процесс Другой 24 ОБЕСПЕЧЕНИЕ КОНФИДЕНЦИАЛЬНОСТИ: ОГРАНИЧЕНИЕ ДОСТУПА К РЕСУРСАМ 25 Архитектура удалённого исполнения системных вызовов Интернет Сервисная VM Основная VM Ядро ОС Авторизованный процесс Опер. системы в обеих машинах недоверенные Ядро ОС КБ Модуль ядра Хранилище Гипервизор Сервер Клиент Сопоставление КБ Модуль ядра Параметры вызова 26 Обмен данными ВМ и гипервизора Виртуальная машина … Обработчик прерывания ОТВЕТ Кольцевой буфер Виртуальное PCI устройство ЗАПРОС IRQ (извещение о данных в буфере) Гипервизор 27 Сервисная ВМ (доверенная) Основная ВМ (недоверенная) «READ» – разрешен всем «WRITE» – только доверенным процессам Файловая система NFS сервер • запрос допустимости «write» операций • извещение о результатах «read» операций доверенного процесса NFS клиент Ядро ОС Доверенный процесс Процесс Системный вызов Сопоставление Гипервизор Параметры/Результаты вызова 28 УГРОЗЫ И ВОЗМОЖНЫЕ АТАКИ НА СИСТЕМУ ЗАЩИТЫ 29 Возможные точки вредоносного воздействия на гипервизор Гипервизор Загрузка Физическая память Исполняемые файлы DMA Регистрационная информация вм Компонент СЗ Ядро ОС процесс Проект активации “activate” “dynaload” driver • ZERO PCR-17 • HASH(secure loader) SKINIT Secure loader JMP • HASH(hypervisor) PCR-17 • HASH(nonce) PCR17 PCR-17 PCR-17 Hypervisor SHA-1 • SIGN(PCR17 | Private Key) • Signed checksum User TPM Private Key Trusted Platform Module 31 Дополнительные угрозы • • • • • Перепрошивка BIOS System Management Mode (SMM) Эмуляция действий пользователя Подмена конфигурационных файлов Взлом сервисной ОС 32 Теоретические возможности взломать систему Ошибка в реализации системы защиты Нарушение требования доверенности прикладных программ Неправильная конфигурация системы Подмена пакетов программ DMA атака на стабильность системы Уязвимости/Закладки в аппаратуре 33 ОБСУЖДЕНИЕ 34 Обеспечение информационной безопасности • Обеспечение информационной безопасности – комплексная, многофакторная деятельность – – – – Анализ конфигурации системы защиты Анализ исходных текстов системного ПО Анализ бинарных кодов системного ПО Мониторинг во время выполнения 35 Статус проекта Севигатор • Разработана архитектура защиты в условиях уязвимой ОС – Целостность кода и данных доверенного ПО – Целостность каналов связи доверенного ПО – Конфиденциальность данных доверенного ПО • Реализован прототип для Linux/KVM – AMD 32-x битный режим – Защита памяти, ограничение доступа к сети, защищенные файловые хранилища – Защита приложений в ОС Linux – ~ 10 тыс. строк на Си 36 Нерешенные задачи • Перенос на аппаратную платформу (в процессе) • Поддержка многоядерного выполнения ВМ пользователя • Доверенная загрузка СЗ • Поддержка Windows • Поддержка дополнительных видов ресурсов (USB!) • Перенос на ARM / Android • Верификация архитектур защиты (математика!) 37 СПАСИБО ЗА ВНИМАНИЕ! 38