План на курса

Ден 1

ИТ-сигурност и безопасно програмиране

  • Естеството на сигурността
  • Терминология, свързана с ИТ-сигурността
  • Дефиниция на риск
  • Различни аспекти на ИТ-сигурността
  • Изисквания за различни области приложения
  • ИТ-сигурност vs. безопасно програмиране
  • От уязвимости до ботнетове и киберпрестъпност
    • Естеството на сигурносни дефекти
    • Причините за трудности
    • От инфектиран компютър до целенаправени атаки
  • Класификация на сигурносни дефекти
    • Таксономията на Лендвър
    • Седем вредни царства
    • OWASP Top Ten 2013
    • Сравнение на OWASP Top Ten 2003 – 2013

Въведение в Microsoft® Security Development Lifecycle (SDL)

  • Дневен план
  • Приложения под атака...
    • Еволюцията на киберпрестъпността
    • Атаките се фокусират върху приложения
    • Повечето уязвимости са в по-малки приложения на ISV
  • Произходи на Microsoft SDL...
    • Хронологията на сигурността в Microsoft...
    • Какви приложения трябва да следват SDL?
  • Microsoft Security Development Lifecycle (SDL)
    • Microsoft Security Development Lifecycle (SDL)
    • Пред-SLD изисквания: обучение по сигурност
    • Фаза едно: Изисквания
    • Фаза два: Проектиране
    • Фаза три: Реализация
    • Фаза четири: Верификация
    • Фаза пет: Издаване – План за отговор
    • Фаза пет: Издаване – Крайна ревизия по сигурност
    • Фаза пет: Издаване – Архивиране
    • Пост-SLD изисквание: Отговор
    • Ръководство за SDL за LOB приложения
    • Ръководство за SDL за аджилни методологии
    • Безопасната разработка на софтуер изисква подобрение на процесите

Принципи за безопасно проектиране

  • Атакуваната повърхност
    • Намаляване на атакувана повърхност
    • Атакувана повърхност – пример
    • Анализ на атакувана повърхност
    • Намаляване на атакувана повърхност – примери
  • Право на приватност
    • Приватност
    • Разбиране на поведение и загриженията на приложения
  • Защита на много слои
    • Основен принцип на SDL: защита на много слои
    • Зашита на много слои – пример
  • Принципът за най-малка привилегия
    • Най-малка привилегия – пример
  • Безопасни по подразбиране настройки
    • Безопасни по подразбиране настройки – примери

Принципи за безопасна реализация

  • Дневен план
  • Microsoft Security Development Lifecycle (SDL)
  • Основи на перепълването на буфери
    • Регистри на Intel 80x86 процесорите – основни регистри
    • Паметна адресация
    • Механизъм за извикване на функции в C/C++ на x86
    • Локални променливи и стек фрейм
    • Перепълване на стека
      • Перепълване на буфера в стека
      • Упражнения – въведение
      • Упражнение BOFIntro
      • Упражнение BOFIntro – определяне на стека
      • Упражнение BOFIntro – прост атака
  • Проверка на входни данни
    • Концепции за проверка на входни данни
    • Проблеми с цели числа
      • Представяне на отрицателни цели числа
      • Перепълване на цели числа
      • Аритметично перепълване – познайте изхода!
      • Упражнение IntOverflow
      • Какво е стойността на Math.Abs(int.MinValue)?
    • Митигиране на проблемите с цели числа
      • Митигиране на проблемите с цели числа
      • Избягване на аритметично перепълване – събиране
      • Избягване на аритметично перепълване – умножение
      • Разпознаване на изключения с ключовата дума checked в C#
      • Упражнение – Използване на ключовата дума checked в C#
      • Изключения, активираните от перепълванията в C#
    • Кейс изучаване – Перепълване на цели числа в .NET
      • Реална уязвимост, обусловена от перепълване на цели числа
      • Използване на уязвимостта с перепълване на цели числа
    • Уязвимост при преход на пат
      • Митигиране на уязвимостта при преход на пат

Ден 2

Принципи за безопасна реализация

  • Инжекция
    • Типични методи на атака с инжекция на SQL код
    • Слепа и времева инжекция на SQL код
    • Методи за защита от инжекция на SQL код
    • Инжекция на команди
  • Сломена аутентикация – управление на паролите
    • Упражнение – Слабостта на хешираните пароли
    • Управление и съхранение на пароли
    • Специални алgoritми за хешуване при съхранение на пароли
  • Cross-Site Scripting (XSS)
    • Cross-Site Scripting (XSS)
    • Инжекция на CSS
    • Използване: инжекция чрез други HTML тагове
    • Предотвратяване на XSS
  • Липсващ контрол на достъп на функционалностите
    • Филтриране при качването на файлове
  • Практическа криптография
    • Обезпечаване на конфиденциалността с симетрична криптография
    • Симетрични алgoritми за шифриране
    • Блокови шифри – режими на функциониране
    • Хеш или съобщение-дайджест
    • Алgoritми за хешуване
    • Message Authentication Code (MAC)
    • Обезпечаване на цялостта и автентичността със симетричен ключ
    • Обезпечаване на конфиденциалността с публично-ключово шифриране
    • Правило за преход – притежание на частния ключ
    • Типични грешки в управлението на паролите
    • Упражнение – Хард кодирани пароли
    • Заключение

Принципи за безопасно верифициране

  • Функционално тестуване vs. сигурно тестуване
  • Уязвимости на сигурността
  • Приоритизация
  • Тестуване на сигурността в SDLC
  • Стъпки за планиране на тестовете ( Анализ на риска)
  • Освен и събираане на информация
    • Заинтересованите лица
    • Активи
    • Атакувана повърхност
    • Цели на сигурността за тестуване
  • Моделиране на угрозите
    • Моделиране на угрозите
    • Профили на атакуващите
    • Моделиране на угрозите базирано на дървета от атаки
    • Моделиране на угрозите базирано на злоупотребни/незаконни случаи
    • Злоупотребни/незаконни случаи – прост пример с виртуален магазин
    • Модел на угрозите по елемент – MS SDL
    • Идентифициране на цели на сигурността
    • Диаграми – примери за елементи на DFD
    • Диаграма на потоците от данни – пример
    • Енумерация на угрозите – MS SDL и елементи на DFD
    • Анализ на риска – класификация на угрозите
    • Модел за ранжиране на угрози/рискове DREAD
  • Техники и инструменти за сигурно тестуване
    • Общи подходи към тестуването
    • Техники за различни стадии на SDLC
  • Ревизия на кода
    • Ревизия на кода за сигурност на софтуера
    • Анализ на замърсяване
    • Евристики
  • Статичен анализ на кода
    • Статичен анализ на кода
    • Упражнение – Използване на инструменти за статичен анализ на кода
  • Тестуване на реализацията
    • Ръчна верифициране в runtime
    • Ръчно vs. автоматично сигурно тестуване
    • Тестове за проникване (penetration testing)
    • Стресни тестове
  • Фазинг
    • Автоматизирано сигурно тестуване – фазинг (fuzzing)
    • Изключения при фазинга
  • Сканиране за уязвимости в уеб-приложения
    • Упражнение – Използване на сканер за уязвимости
  • Проверка и хардениране на околната среда
    • Общ система за оценка на уязвимостите – CVSS
    • Сканери за уязвимости
    • Публични бази данни
  • Кейс изучаване – Обход на формова аутентикация (Forms Authentication Bypass)
    • Уязвимост при завършване на NULL байт
    • Уязвимостта за обход на формова аутентикация в кода
    • Използване на уязвимостта за обход на формова аутентикация

Извори на знания

  • Източници за безопасно програмиране – начален набор
  • Бази данни с уязвимости
  • Ръководства за безопасно програмиране на .NET в MSDN
  • Листове с ръководства за безопасно програмиране на .NET
  • Препоръчани книги – .NET и ASP.NET
 14 часове

Брой участници


Цена за участник

Отзиви от потребители (5)

Предстоящи Курсове

Свързани Kатегории