SlideShare a Scribd company logo
1 of 20
Download to read offline
Формальная верификация модуля
безопасности ядра Linux
Ефремов Д.В.
defremov@hse.ru
Летняя школа Masterchain, Москва, 2018
Летняя школа Masterchain, Москва, 2018
Модуль безопасности ядра Linux
(Linux Security Modules)
фото
фото
Ядро
Процесс
Ресурс
Модуль
Безопасности
(SELinux, AppArmor, …)
Структуры данных
Интерфейс LSM
Стандартные проверки
доступа
Проверка аргументов
Системный вызов
Реализует
интерфейс
Летняя школа Masterchain, Москва, 2018
Вопросы корректности работы системы с
модулем безопасности (1)
фото
фото
1. Код модуля безопасности
• Правилен ли код модуля безопасности?
• Корректно ли модуль безопасности реализует
модель безопасности (функциональные
требования)?
2. Интерфейс взаимодействия с ядром
• Правильно ли модуль безопасности
использует интерфейсы ядра?
3. Корректность работы всей системы
• Правильно ли ядро работает вместе с
модулем безопасности?
Летняя школа Masterchain, Москва, 2018
Вопросы корректности работы системы с
модулем безопасности (2)
фото
фото
1. Код модуля безопасности
• Дедуктивная верификация кода модуля
безопасности ядра (разработка формальных
спецификаций)
2. Интерфейс взаимодействия с ядром
• Трансляция формальных спецификаций в
исполняемые проверки (assert)
3. Корректность работы всей системы
• Динамическая верификация (runtime
verification) работы ядра ОС на соответствие
формальной модели
Летняя школа Masterchain, Москва, 2018
1.Формальная спецификация кода
на Си (1) (функция)
фото
фото
• Что можно сказать о функции по её коду?
• Это чистая функция;
• Она вычисляет среднее между двумя целыми числами;
• При определённых условиях возможно целочисленное
переполнение.
Летняя школа Masterchain, Москва, 2018
1.Формальная спецификация кода
на Си (2) (контекст вызова)
фото
фото
• Контекст: функция
двоичного поиска;
• Индексы l и h
неотрицательны, l не
превосходит h;
• Возможна ошибка
выхода за границу
массива при
целочисленном
переполнении в avr.
Летняя школа Masterchain, Москва, 2018
1.Формальная спецификация кода
на Си (3) (требования к функции)
фото
фото
• Описать контекст вызова:
𝜙: 𝑍×𝑍 → ⊤, ⊥
𝜙 𝑎, 𝑏 ≡ 𝑎 ≥ 0 ∧ 𝑏 ≥ 0 ∧ 𝑎 ≤ 𝑏
• Описать требования, которым
должны удовлетворять результаты:
𝜓: 𝑍×𝑍×𝑍 → {⊤, ⊥}
𝜓 𝑎, 𝑏, 𝑟𝑒𝑠𝑢𝑙𝑡 ≡ 𝑟𝑒𝑠𝑢𝑙𝑡 =
𝑎 + 𝑏
2
Летняя школа Masterchain, Москва, 2018
1.Формальная спецификация кода
на Си (4) (модель ошибки)
фото
фото
• Формализовать понятие ошибки
(целочисленное переполнение):
𝑖𝑛_𝑏𝑜𝑢𝑛𝑑𝑠: 𝑍 → {⊤, ⊥}
𝑖𝑛_𝑏𝑜𝑢𝑛𝑑𝑠 𝑛 ≡ 𝑀𝐼𝑁_𝐼𝑁𝑇 ≤ 𝑛 ≤ 𝑀𝐴𝑋_𝐼𝑁𝑇
• Формализовать код программы: функция	𝑀 𝑎𝑣𝑟 ,
которая возвращает результат 𝑀 𝑎𝑣𝑟 (𝑎, 𝑏) в
соответствии со своим программным кодом, если
завершается и завершается без ошибки, иначе
возвращается специальное значение 𝜔
• Доказать полную корректность:
∀𝑎, 𝑏	𝜙 𝑎, 𝑏
⇒ 𝑀 𝑎𝑣𝑟 𝑎, 𝑏 ≠ 𝜔	&&	𝜓 𝑎, 𝑏, 𝑀 𝑎𝑣𝑟 𝑎, 𝑏
Летняя школа Masterchain, Москва, 2018
1.Формальная спецификация кода на Си (5)
(Frama-C ACSL) (исправление ошибки)
Статический анализ
Условие верификации
Исправление кода
Уточнение спецификаций
Летняя школа Masterchain, Москва, 2018
2.Трансляция спецификаций в исполняемые
(Frama-C E-ACSL)
Динамический анализ
Спецификации Исполняемый код
Летняя школа Masterchain, Москва, 2018
3.Формальная модель. Функциональные
требования (Event-B)
(непротиворечивость требований)
Входные
параметры
Модельная операция
Предусловия
для операции
Обновление
состояния
модели
Летняя школа Masterchain, Москва, 2018
3.Работа ядра вместе с модулем безопасности
Динамический анализ
Ядро
Модуль
Тесты
Трасса Воспроизведение
на модели
• Сбор трассы системных вызовов
• Ядро + модуль безопасности
• Запросы на доступы
• Тесты и фаззинг (syzkaller)
• Воспроизведение трасс на
формальной модели
• Поиск ошибок: на модели доступ
запрещен, в системе был дан
Летняя школа Masterchain, Москва, 2018
Дополнительная информация
• Проект AstraVer – верификация модуля безопасности
дистрибутива Astra Linux (сертификация МО, ФСТЭК,
ФСБ) http://www.ispras.ru/technologies/astraver_toolset/
• «Моделирование и верификация политик безопасности
управления доступом в операционных системах» П.Н.
Девянин, Д.В. Ефремов, В.В. Кулямин, А.К. Петренко,
А.В. Хорошилов, И.В. Щепетков
http://www.ispras.ru/publications/2018/security_policy_mo
deling_and_verification/
• Базовая кафедра «Системное программирование»
ИСП РАН ВШЭ https://cs.hse.ru/dse/sp/
• Спецификации библиотечных функций ядра Linux
https://github.com/evdenis/verker/
101000, Россия, Москва, Мясницкая ул., д. 20
Тел.: (495) 621-7983, факс: (495) 628-7931
www.hse.ru
Public Key Fingerprint
7654 0336 0294 0DF1 920F
E403 B522 95B0 3350 301F
efremov@linux.com
Летняя школа Masterchain, Москва, 2018
Определения
• Верификация - проверка соответствия программного
обеспечения предъявляемым к нему требованиям;
• Дедуктивная верификация – представление
корректности программы как набора математических
утверждений, называемых условиями верификации,
выполнение которых проверяется автоматическими или
интерактивными доказателями теорем;
• Спецификация - набор требований и параметров,
которым удовлетворяет некоторый объект (представлена
в виде мат. модели, тестовых наборов, формальной
спецификации)
Летняя школа Masterchain, Москва, 2018
Предположения о работе системы
• Компилятор и линковщик работают корректным образом
• В программном обеспечении, использующемся при
верификации, не произошло ошибок
• Компьютер функционирует таким образом, как мы думаем
об этом (rowhammer)
• Нижележащий слой ПО (например, ОС, прошивка сетевой
карты, микрокод процессора) функционирует в рамках
нашего представления о том, что он должен делать и что не
должен делать (и ещё не содержит ошибок)
• Пользователь компьютера, если он есть, специально не
«пакостит»
• Выполнены предположения о входных данных программы,
о начальном состоянии
Летняя школа Masterchain, Москва, 2018
Что дает формальная
верификация
• Гарантии того, что программное
обеспечение функционирует в точном
соответствии с требованиями, к нему
предъявляемыми, на всех входных
данных, начальных состояниях, при любом
поведении окружения * **
• * В предположении что все предположения
выполнены
• ** И не осталось предположений, которых мы не
занесли в списочек
Высшая школа экономики, Москва, 2016
Стек
инструментов
дедуктивной
верификации
фото
фото
CIL
CIL with annotations
С program with
ACSL annotations
Jessie program
(with annotations built-in)
Jessie translator
Why3 support
Why3 VC generator
Why3 WhyML modules
Verification conditions
in Why3MLVC transformations
Why3 encoders + drivers
Logical formulas/scripts in
SMT-LIB/SMT-LIBv2/native format
Coq, PVS, Isabelle
proof templates
Why3
transformation/proof/shapes
database
Alt-Ergo Z3 CVC4 Coq PVS
Why3 IDE
...
Jessie2
CIL
visitors (rewriters)
Frama-C
Jessie plugin
Why3
Isabelle ...
Летняя школа Masterchain, Москва, 2018
Инструменты
Летняя школа Masterchain, Москва, 2018
Логическая формула для
солверов: код + спецификации
Высшая школа экономики, Москва, 2016
function to_int bint : int
function of_int int : bint
predicate in_bounds (n:int) = -2147483648 <= n && n <=
2147483647
constant a, b, o1, o2: bint
axiom H0: a >= of_int 0 && b >= of_int 0 && b >= a
axiom H1: to_int o1 = 2
axiom H2: to_int o2 = (to_int a + to_int b)
goal avr_safety:
in_bounds 2 ->
in_bounds(to_int a + to_int b) ->
not to_int o1 = 0 ->
in_bounds(div (to_int o2) (to_int o1))

More Related Content

What's hot

TMPA Pakulin: Dynamic Verification of Hybrid Systems
TMPA Pakulin: Dynamic Verification of Hybrid SystemsTMPA Pakulin: Dynamic Verification of Hybrid Systems
TMPA Pakulin: Dynamic Verification of Hybrid Systems
Iosif Itkin
 
Архитектура автоматизированных тестов
Архитектура автоматизированных тестовАрхитектура автоматизированных тестов
Архитектура автоматизированных тестов
SQALab
 

What's hot (16)

Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?
 
Трущобы Application Security
Трущобы Application SecurityТрущобы Application Security
Трущобы Application Security
 
TMPA Pakulin: Dynamic Verification of Hybrid Systems
TMPA Pakulin: Dynamic Verification of Hybrid SystemsTMPA Pakulin: Dynamic Verification of Hybrid Systems
TMPA Pakulin: Dynamic Verification of Hybrid Systems
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program Analysis
 
Архитектура автоматизированных тестов
Архитектура автоматизированных тестовАрхитектура автоматизированных тестов
Архитектура автоматизированных тестов
 
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
 
AppSec -- хакерский путь
AppSec -- хакерский путьAppSec -- хакерский путь
AppSec -- хакерский путь
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Как разработать защищенное веб-приложение и не сойти при этом с ума (вебинар)
Как разработать защищенное веб-приложение и не сойти при этом с ума (вебинар)Как разработать защищенное веб-приложение и не сойти при этом с ума (вебинар)
Как разработать защищенное веб-приложение и не сойти при этом с ума (вебинар)
 
Как разработать защищенное веб-приложение и не сойти при этом с ума? (PHDays 3)
Как разработать защищенное веб-приложение и не сойти при этом с ума? (PHDays 3)Как разработать защищенное веб-приложение и не сойти при этом с ума? (PHDays 3)
Как разработать защищенное веб-приложение и не сойти при этом с ума? (PHDays 3)
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
5 особенностей при вводе в эксплуатацию веб приложения
5 особенностей при вводе в эксплуатацию веб приложения5 особенностей при вводе в эксплуатацию веб приложения
5 особенностей при вводе в эксплуатацию веб приложения
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
The Analysis of Test Scenario Coverage for a UCM-Model
The Analysis of Test Scenario Coverage for a UCM-ModelThe Analysis of Test Scenario Coverage for a UCM-Model
The Analysis of Test Scenario Coverage for a UCM-Model
 

Similar to Formal Verification of a Linux Security Module

Автоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1CАвтоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1C
Alexey Lustin
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
yaevents
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
Iosif Itkin
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения
Rauan Ibraikhan
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
Rauan Ibraikhan
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективы
d_olex
 

Similar to Formal Verification of a Linux Security Module (20)

Formal verification of C code
Formal verification of C codeFormal verification of C code
Formal verification of C code
 
Автоматическая генерация C кода и тестирование на целевых вычислителях
Автоматическая генерация C кода и тестирование на целевых вычислителяхАвтоматическая генерация C кода и тестирование на целевых вычислителях
Автоматическая генерация C кода и тестирование на целевых вычислителях
 
Автоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1CАвтоматическая сборка и развертывание на платформе 1C
Автоматическая сборка и развертывание на платформе 1C
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Aspect Oriented Approach
Aspect Oriented ApproachAspect Oriented Approach
Aspect Oriented Approach
 
Positive Hack Days. Маньков.Технология контроля правильности функционирования...
Positive Hack Days. Маньков.Технология контроля правильности функционирования...Positive Hack Days. Маньков.Технология контроля правильности функционирования...
Positive Hack Days. Маньков.Технология контроля правильности функционирования...
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 
Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Развертывание алгоритмов на ПЛИС
Развертывание алгоритмов на ПЛИСРазвертывание алгоритмов на ПЛИС
Развертывание алгоритмов на ПЛИС
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективы
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
вгу презентация
вгу презентациявгу презентация
вгу презентация
 
Team workflow
Team workflowTeam workflow
Team workflow
 

More from Denis Efremov

More from Denis Efremov (8)

Formal verification of operating system kernels
Formal verification of operating system kernelsFormal verification of operating system kernels
Formal verification of operating system kernels
 
Инструменты тестирования ядра Linux
Инструменты тестирования ядра LinuxИнструменты тестирования ядра Linux
Инструменты тестирования ядра Linux
 
CVEhound
CVEhoundCVEhound
CVEhound
 
Deductive verification of unmodified Linux kernel library functions
Deductive verification of unmodified Linux kernel library functionsDeductive verification of unmodified Linux kernel library functions
Deductive verification of unmodified Linux kernel library functions
 
Health Insurance Support System (Blockchain Based)
Health Insurance Support System (Blockchain Based)Health Insurance Support System (Blockchain Based)
Health Insurance Support System (Blockchain Based)
 
Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...
 
Automation of rule construction for Approof
Automation of rule construction for ApproofAutomation of rule construction for Approof
Automation of rule construction for Approof
 
How to prove programs
How to prove programsHow to prove programs
How to prove programs
 

Formal Verification of a Linux Security Module

  • 1. Формальная верификация модуля безопасности ядра Linux Ефремов Д.В. defremov@hse.ru Летняя школа Masterchain, Москва, 2018
  • 2. Летняя школа Masterchain, Москва, 2018 Модуль безопасности ядра Linux (Linux Security Modules) фото фото Ядро Процесс Ресурс Модуль Безопасности (SELinux, AppArmor, …) Структуры данных Интерфейс LSM Стандартные проверки доступа Проверка аргументов Системный вызов Реализует интерфейс
  • 3. Летняя школа Masterchain, Москва, 2018 Вопросы корректности работы системы с модулем безопасности (1) фото фото 1. Код модуля безопасности • Правилен ли код модуля безопасности? • Корректно ли модуль безопасности реализует модель безопасности (функциональные требования)? 2. Интерфейс взаимодействия с ядром • Правильно ли модуль безопасности использует интерфейсы ядра? 3. Корректность работы всей системы • Правильно ли ядро работает вместе с модулем безопасности?
  • 4. Летняя школа Masterchain, Москва, 2018 Вопросы корректности работы системы с модулем безопасности (2) фото фото 1. Код модуля безопасности • Дедуктивная верификация кода модуля безопасности ядра (разработка формальных спецификаций) 2. Интерфейс взаимодействия с ядром • Трансляция формальных спецификаций в исполняемые проверки (assert) 3. Корректность работы всей системы • Динамическая верификация (runtime verification) работы ядра ОС на соответствие формальной модели
  • 5. Летняя школа Masterchain, Москва, 2018 1.Формальная спецификация кода на Си (1) (функция) фото фото • Что можно сказать о функции по её коду? • Это чистая функция; • Она вычисляет среднее между двумя целыми числами; • При определённых условиях возможно целочисленное переполнение.
  • 6. Летняя школа Masterchain, Москва, 2018 1.Формальная спецификация кода на Си (2) (контекст вызова) фото фото • Контекст: функция двоичного поиска; • Индексы l и h неотрицательны, l не превосходит h; • Возможна ошибка выхода за границу массива при целочисленном переполнении в avr.
  • 7. Летняя школа Masterchain, Москва, 2018 1.Формальная спецификация кода на Си (3) (требования к функции) фото фото • Описать контекст вызова: 𝜙: 𝑍×𝑍 → ⊤, ⊥ 𝜙 𝑎, 𝑏 ≡ 𝑎 ≥ 0 ∧ 𝑏 ≥ 0 ∧ 𝑎 ≤ 𝑏 • Описать требования, которым должны удовлетворять результаты: 𝜓: 𝑍×𝑍×𝑍 → {⊤, ⊥} 𝜓 𝑎, 𝑏, 𝑟𝑒𝑠𝑢𝑙𝑡 ≡ 𝑟𝑒𝑠𝑢𝑙𝑡 = 𝑎 + 𝑏 2
  • 8. Летняя школа Masterchain, Москва, 2018 1.Формальная спецификация кода на Си (4) (модель ошибки) фото фото • Формализовать понятие ошибки (целочисленное переполнение): 𝑖𝑛_𝑏𝑜𝑢𝑛𝑑𝑠: 𝑍 → {⊤, ⊥} 𝑖𝑛_𝑏𝑜𝑢𝑛𝑑𝑠 𝑛 ≡ 𝑀𝐼𝑁_𝐼𝑁𝑇 ≤ 𝑛 ≤ 𝑀𝐴𝑋_𝐼𝑁𝑇 • Формализовать код программы: функция 𝑀 𝑎𝑣𝑟 , которая возвращает результат 𝑀 𝑎𝑣𝑟 (𝑎, 𝑏) в соответствии со своим программным кодом, если завершается и завершается без ошибки, иначе возвращается специальное значение 𝜔 • Доказать полную корректность: ∀𝑎, 𝑏 𝜙 𝑎, 𝑏 ⇒ 𝑀 𝑎𝑣𝑟 𝑎, 𝑏 ≠ 𝜔 && 𝜓 𝑎, 𝑏, 𝑀 𝑎𝑣𝑟 𝑎, 𝑏
  • 9. Летняя школа Masterchain, Москва, 2018 1.Формальная спецификация кода на Си (5) (Frama-C ACSL) (исправление ошибки) Статический анализ Условие верификации Исправление кода Уточнение спецификаций
  • 10. Летняя школа Masterchain, Москва, 2018 2.Трансляция спецификаций в исполняемые (Frama-C E-ACSL) Динамический анализ Спецификации Исполняемый код
  • 11. Летняя школа Masterchain, Москва, 2018 3.Формальная модель. Функциональные требования (Event-B) (непротиворечивость требований) Входные параметры Модельная операция Предусловия для операции Обновление состояния модели
  • 12. Летняя школа Masterchain, Москва, 2018 3.Работа ядра вместе с модулем безопасности Динамический анализ Ядро Модуль Тесты Трасса Воспроизведение на модели • Сбор трассы системных вызовов • Ядро + модуль безопасности • Запросы на доступы • Тесты и фаззинг (syzkaller) • Воспроизведение трасс на формальной модели • Поиск ошибок: на модели доступ запрещен, в системе был дан
  • 13. Летняя школа Masterchain, Москва, 2018 Дополнительная информация • Проект AstraVer – верификация модуля безопасности дистрибутива Astra Linux (сертификация МО, ФСТЭК, ФСБ) http://www.ispras.ru/technologies/astraver_toolset/ • «Моделирование и верификация политик безопасности управления доступом в операционных системах» П.Н. Девянин, Д.В. Ефремов, В.В. Кулямин, А.К. Петренко, А.В. Хорошилов, И.В. Щепетков http://www.ispras.ru/publications/2018/security_policy_mo deling_and_verification/ • Базовая кафедра «Системное программирование» ИСП РАН ВШЭ https://cs.hse.ru/dse/sp/ • Спецификации библиотечных функций ядра Linux https://github.com/evdenis/verker/
  • 14. 101000, Россия, Москва, Мясницкая ул., д. 20 Тел.: (495) 621-7983, факс: (495) 628-7931 www.hse.ru Public Key Fingerprint 7654 0336 0294 0DF1 920F E403 B522 95B0 3350 301F efremov@linux.com
  • 15. Летняя школа Masterchain, Москва, 2018 Определения • Верификация - проверка соответствия программного обеспечения предъявляемым к нему требованиям; • Дедуктивная верификация – представление корректности программы как набора математических утверждений, называемых условиями верификации, выполнение которых проверяется автоматическими или интерактивными доказателями теорем; • Спецификация - набор требований и параметров, которым удовлетворяет некоторый объект (представлена в виде мат. модели, тестовых наборов, формальной спецификации)
  • 16. Летняя школа Masterchain, Москва, 2018 Предположения о работе системы • Компилятор и линковщик работают корректным образом • В программном обеспечении, использующемся при верификации, не произошло ошибок • Компьютер функционирует таким образом, как мы думаем об этом (rowhammer) • Нижележащий слой ПО (например, ОС, прошивка сетевой карты, микрокод процессора) функционирует в рамках нашего представления о том, что он должен делать и что не должен делать (и ещё не содержит ошибок) • Пользователь компьютера, если он есть, специально не «пакостит» • Выполнены предположения о входных данных программы, о начальном состоянии
  • 17. Летняя школа Masterchain, Москва, 2018 Что дает формальная верификация • Гарантии того, что программное обеспечение функционирует в точном соответствии с требованиями, к нему предъявляемыми, на всех входных данных, начальных состояниях, при любом поведении окружения * ** • * В предположении что все предположения выполнены • ** И не осталось предположений, которых мы не занесли в списочек
  • 18. Высшая школа экономики, Москва, 2016 Стек инструментов дедуктивной верификации фото фото CIL CIL with annotations С program with ACSL annotations Jessie program (with annotations built-in) Jessie translator Why3 support Why3 VC generator Why3 WhyML modules Verification conditions in Why3MLVC transformations Why3 encoders + drivers Logical formulas/scripts in SMT-LIB/SMT-LIBv2/native format Coq, PVS, Isabelle proof templates Why3 transformation/proof/shapes database Alt-Ergo Z3 CVC4 Coq PVS Why3 IDE ... Jessie2 CIL visitors (rewriters) Frama-C Jessie plugin Why3 Isabelle ...
  • 19. Летняя школа Masterchain, Москва, 2018 Инструменты
  • 20. Летняя школа Masterchain, Москва, 2018 Логическая формула для солверов: код + спецификации Высшая школа экономики, Москва, 2016 function to_int bint : int function of_int int : bint predicate in_bounds (n:int) = -2147483648 <= n && n <= 2147483647 constant a, b, o1, o2: bint axiom H0: a >= of_int 0 && b >= of_int 0 && b >= a axiom H1: to_int o1 = 2 axiom H2: to_int o2 = (to_int a + to_int b) goal avr_safety: in_bounds 2 -> in_bounds(to_int a + to_int b) -> not to_int o1 = 0 -> in_bounds(div (to_int o2) (to_int o1))