Баллы за практику
Задание Баллы
Практическое задание 1 0 — 20
Практическое задание 2 0 — 10
Практическое задание 3 0 — 30
Всего 0 — 60
Оценка за практику
Оценка Баллы
«Отлично» ≥ 48 (80%)
«Хорошо» ≥ 36 (60%)
«Удовлетворительно» ≥ 24 (40%)
Итоговая оценка
Прак. — 5 Прак. — 4 Прак. — 3 Прак. — 2
Экз. — 5 5 5 4 3
Экз. — 4 5 4 4 3
Экз. — 3 4 3 3 3
Экз. — 2 3 2 2 2
Общая информация о курсе
Программа экзамена

Экзамен состоится 18.01.2024 г. в 09:00 МСК. Экзамен будет проводиться очно в аудитории 579. В билете будет два вопроса, а после ответа на них возможны дополнительные вопросы по всему материалу курса.

  1. Этапы жизненного цикла ПО. Модели жизненного цикла: каскадная, спиральная, итеративная.
  2. Технологии и принципы разработки безопасного ПО. Microsoft Secure Development Lifecycle, Cisco Secure Development Lifecycle. Поверхность атаки. Классификация угроз.
  3. Основные понятия безопасности информации: конфиденциальность, целостность, доступность. Виды защиты информации. Модель Белла-Лападулы.
  4. Понятие ошибки и уязвимости в ПО. Жизненный цикл уязвимости. Понятие и структура эксплоита. Классификация ошибок в ПО. Классификатор CWE. Оценка критичности ошибки по CVSS.
  5. Ошибка типа «переполнение буфера». Выполнение произвольного кода на исполнимом стеке. Противодействие выполнению кода на стеке: «канарейка», DEP.
  6. Выполнение произвольного кода на неисполнимом стеке. Return-to-libc. Противодействие return-to-libc: ASLR. Return-oriented programming (ROP). Аудит передач управления.
  7. Статический анализ исходного кода с целью поиска ошибок. Методы поиска ошибок. Ограничения формальных подходов. Интерпретация результатов анализа. Качество результата анализа.
  8. Представления программы, использующиеся при поиске ошибок в исходном коде. Потоковая и контекстная чувствительность. Типы обнаруживаемых ошибок. Путь распространения ошибки.
  9. Абстрактная интерпретация. Понятие решётки. Понятия конкретного и абстрактного состояний. Связь абстрактной интерпретации и анализа потока данных.
  10. Вычисление необходимых условий для поиска переполнения буфера. Понятия полноты и корректности. Примеры абстракций: интервальная абстракция, предикатная абстракция. SMT-решатели.
  11. Применение отладки для оценки возможности эксплуатации уязвимостей. Технологии отладки. Отладка пользовательского кода. Полносистемная отладка в виртуальной машине.
  12. Статическое и динамическое инструментирование. Получение данных для оффлайн-анализа.
  13. Фаззинг: определение, применение, принципы. Схема инструмента. Разновидности фаззинга: черный ящик, белый ящик, серый ящик. Генетические алгоритмы в фаззинге.
  14. Символьное выполнение: основные понятия. Варианты использования. Схема работы системы символьного выполнения. Предикат пути, предикат безопасности. Ограничения подхода и способы их преодоления.
  15. Программный слайсинг: определение, свойства, применение. Алгоритм обратного статического салйсинг. Виды зависимостей. Статический, динамический, условный слайсинг.
  16. Межпроцедурный слайсинг. Методы вычисления слайса: анализ потоков данных и достижимость на графах. Выявление пути распространения ошибки.
  17. Необходимость и преимущества анализа бинарного кода для обеспечения безопасности. Задачи в анализе бинарного кода. WYSINWYX: определение, примеры, причины возникновения.
  18. Статический и динамический подходы к анализу бинарного кода. Получение и анализ трасс. Повышение уровня представления.
  19. Статическое дизассемблирование. Задача различения кода и данных в программе. Дизассемблирование последовательным просмотром (linear sweep) и методом рекурсивного спуска (recursive descent).
  20. Форматы исполняемых и объектных файлов на примере ELF. Секции и сегменты. Таблицы символов и перемещений. Статическая компоновка. PIC и PIE: способы организации.
  21. Описание межпроцедурного потока управления. Восстановление потока управления программы по ее образу и по трассе выполнения. Нереализуемые пути и автомат с магазинной памятью (PDS).
  22. Восстановление функций: статический и динамический подходы. Идентификация библиотечных функций по сигнатурам. Технология FLIRT. Структура данных «модифицированное префиксное дерево». Алгоритм Ахо-Корасик.
  23. Выделение алгоритма в бинарном коде. Слайсинг по трассе. Слайсинг с учетом зависимостей по управлению.
  24. Анализ помеченных данных: источники, рапространение, обнаружение уязвимостей, варианты использования. Ограничения анализа помеченных данных. Поиск утечек конфиденциальных данных.
  25. Сетевая безопасность. Защита периметра. Системы защиты от вторжений.