Свържете се с нас

Съдържание и теми, включени в курса

Ден 1

ИТ сигурност и сигурно кодиране

  • Същност на сигурността
  • Термини, свързани с ИТ сигурността
  • Дефиниция на риска
  • Различни аспекти на ИТ сигурността
  • Изисквания на различни области на приложение
  • ИТ сигурност срещу сигурно кодиране
  • От уязвимости до ботнети и киберпрестъпност
    • Естество на пропуските в сигурността
    • Причини за трудността
    • От заразен компютър до целенасочени атаки
  • Класификация на пропуските в сигурността
    • Таксономия на Landwehr
    • Седемте пагубни кралства (The Seven Pernicious Kingdoms)
    • OWASP Топ 10 за 2013
    • Сравнение на OWASP Топ 10 между 2003 и 2013

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

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

Принципи за сигурен дизайн

  • Повърхност за атака (Attack surface)
    • Намаляване на повърхността за атака
    • Повърхност за атака – пример
    • Анализ на повърхността за атака
    • Намаляване на повърхността за атака – примери
  • Поверителност
    • Поверителност
    • Разбиране на поведенията и притесненията относно приложението
  • Защита в дълбочина (Defense in depth)
    • Основен принцип на SDL: Защита в дълбочина
    • Защита в дълбочина – пример
  • Принцип на най-малките привилегии (Least privilege)
    • Най-малки привилегии – пример
  • Сигурни настройки по подразбиране (Secure defaults)
    • Сигурни настройки по подразбиране – примери

Принципи за сигурно внедряване

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

Ден 2

Принципи за сигурно внедряване

  • Инжектиране (Injection)
    • Типични методи за SQL инжекционна атака
    • Сляпа (Blind) и времево-базирана SQL инжекция
    • Методи за защита от SQL инжекция
    • Командна инжекция (Command injection)
  • Разбито удостоверяване (Broken authentication) - управление на пароли
    • Упражнение – Слабост на хешираните пароли
    • Управление и съхранение на пароли
    • Специализирани хеш алгоритми за съхранение на пароли
  • Междусайтово скриптиране (Cross-Site Scripting - XSS)
    • Междусайтово скриптиране (XSS)
    • CSS инжекция
    • Експлоатация: инжектиране чрез други HTML тагове
    • Предотвратяване на XSS
  • Липсващ контрол на достъпа на функционално ниво (Missing function level access control)
    • Филтриране на качвания на файлове
  • Практическа криптография
    • Осигуряване на конфиденциалност със симетрична криптография
    • Симетрични алгоритми за криптиране
    • Блокови шифри – режими на работа
    • Хеш или дайджест на съобщението
    • Хеш алгоритми
    • Код за удостоверяване на съобщението (Message Authentication Code - MAC)
    • Осигуряване на цялостност и автентичност със симетричен ключ
    • Осигуряване на конфиденциалност с криптиране с публичен ключ
    • Основно правило – притежание на частния ключ
    • Типични грешки при управление на пароли
    • Упражнение – Твърдо кодирани пароли
    • Заключение

Принципи за сигурна верификация

  • Функционално тестване срещу тестване на сигурността
  • Уязвимости в сигурността
  • Приоритизиране
  • Тестване на сигурността в SDLC
  • Стъпки на планиране на тестове (анализ на риска)
  • Определяне на обхвата и събиране на информация
    • Заинтересовани страни
    • Активи
    • Повърхността за атака
    • Цели на сигурността за тестването
  • Моделиране на заплахи (Threat modeling)
    • Моделиране на заплахи
    • Профили на атакуващия
    • Моделиране на заплахи на базата на дървета на атаките
    • Моделиране на заплахи на базата на случаи на злоупотреба/неправомерна употреба
    • Случаи на злоупотреба/неправомерна употреба – прост пример за уеб магазин
    • Подход STRIDE per element за моделиране на заплахи – MS SDL
    • Идентифициране на целите на сигурността
    • Диаграмиране – примери за DFD елементи
    • Диаграма на потоците от данни (Data flow diagram) – пример
    • Изброяване на заплахи – STRIDE и DFD елементи на MS SDL
    • Анализ на риска – класификация на заплахите
    • Моделът за класиране на заплахи/риск DREAD
  • Техники и инструменти за тестване на сигурността
    • Общи подходи за тестване
    • Техники за различни стъпки от SDLC
  • Преглед на код (Code review)
    • Преглед на код за софтуерна сигурност
    • Анализ на замърсяването (Taint analysis)
    • Евристики
  • Статичен анализ на код
    • Статичен анализ на код
    • Упражнение – Използване на инструменти за статичен анализ на код
  • Тестване на внедряването
    • Ръчна верификация по време на изпълнение
    • Ръчно срещу автоматизирано тестване на сигурността
    • Тестване за проникване (Penetration testing)
    • Стрес тестове
  • Фъзинг (Fuzzing)
    • Автоматизирано тестване на сигурността - фъзинг
    • Предизвикателства на фъзинга
  • Сканери за уеб уязвимости
    • Упражнение – Използване на скенер за уязвимости
  • Проверка и укрепване на средата
    • Common Vulnerability Scoring System – CVSS
    • Сканери за уязвимости
    • Публични бази данни
  • Казус – Заобикаляне на форм базирано удостоверяване
    • Уязвимост от терминиране с NULL байт
    • Уязвимостта за заобикаляне на форм базираното удостоверяване в кода
    • Експлоатиране на заобикалянето на форм базираното удостоверяване

Източници на знания

  • Източници за сигурно кодиране – стартов комплект
  • Бази данни за уязвимости
  • Насоки за сигурно кодиране в .NET в MSDN
  • Измамни листове (Cheat sheets) за сигурно кодиране в .NET
  • Препоръчани книги – .NET и ASP.NET
 14 Часа

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


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

Отзиви от участници (3)

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

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