Курс появился в 2011 году и проводился в 9 семестре (1 семестр V курса) под названием "Уязвимости ПО". С 2014 года курс проводится в 8, 9 семестрах.

Целью курса является изучение методов функционирования эксплоитов и шеллкодов для них.

Изучаемые темы:

 

  1. Уязвимости в Linux
    • создание шеллкодов для эксплоитов;
    • эксплоиты для локальных и сетевых программ;
    • ошибки переполнения буфера в стеке;
    • ошибки переполнения буфера в куче;
    • ошибки форматной строки;
    • защитные механизмы (ASLR, DEP, stack guard);
    • обход защитных механизмов (ret2reg, ret2plt, ret2lib, перебор адресов, memory leak);
    • ROP.
  2. Уязвимости в Windows
    • создание шеллкода для эксплоитов;
    • ошибки переполнения буфера;
    • ошибки форматной строки;
    • защитные механизмы (ASLR, DEP, stack guard);
    • обход защитных механизмов (ret2reg, ret2jmp, ret2lib, перебор адресов, memory leak);
    • ROP.
  3. Эксплуатация в приложениях
    • эксплоиты для браузеров;
    • эксплоиты для виртуальных машин;
    • эксплоиты для офисных приложений.
  4. Эксплуатация в ядре
    • уязвимости в системных вызовах;
    • уязвимости в драйверах.
  5. Поиск уязвимостей
    • исследование кода;
    • фаззинг;
    • diffing binaries;
    • dbi.