Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
Съдържание и теми, включени в курса
Ден 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)
Споделянето на опит е ценно и важно знание на учителя.
Carey Fan - Logitech
Курс - C/C++ Secure Coding
Машинен превод
знанието на тренера беше много високо - той знаеше за какво говори и имаше отговорите на нашите въпроси
Adam - Fireup.PRO
Курс - Advanced Java Security
Машинен превод
Темата е актуална и аз бях нужден да се обновя
Damilano Marco - SIAP s.r.l.
Курс - Secure Developer Java (Inc OWASP)
Машинен превод