Баллы за практику
Задание Баллы
Практическое задание 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
Общая информация о курсе
Программа экзамена
Экзамен состоится 17.01.2026 г. в 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. Сетевая безопасность. Защита периметра. Системы защиты от вторжений.