Опис курсу
Ваша програма, написана будь-якою мовою програмування, працює так, як задумано, так що все готово, вірно? Але чи вважали ви, що вводите неправильні значення? 16 ГБ даних? Нуль? Апостроф? Негативні числа, або конкретно -1 або -2^31? Тому що саме так чинять погані хлопці – і цей перелік далеко не повний.
PCI DSS – це обов'язковий стандарт безпеки для всіх компаній, які розробляють системи для роботи з кредитними картками або працюють із ними. Це не тільки вимагає дотримання існуючих правил безпечного кодування, але також вимагає від розробників навчання нових передових методів. Але робити позначку щороку замало.
Забезпечення безпеки вимагає здорового рівня параної, і це те, що пропонує цей курс: сильне емоційне залучення багатьох практичних лабораторних робіт та історій з реального життя, щоб суттєво покращити гігієну коду. Помилки, наслідки та передовий досвід – це наша кров, піт та сльози.
Навчальна програма охоплює загальні проблеми безпеки веб-застосунків, що йдуть за OWASP Top Ten, але виходить далеко за рамки як по охопленню, так і по деталях. Все це поміщено в контекст Java та розширено основними проблемами програмування, обговорюючи підводні камені безпеки Java. мова.
Отже, ви готові до сил темної сторони.
Щоб нічого несподіваного не сталося.
Нічого такого.
Примітка. Цей курс адаптований для відповідності вимогам стандарту PCI DSS 6.3 щодо змісту, так і структури доставки.
Курс охоплює основні навички безпечного кодування, які необхідні всім розробникам, які працюють з даними про власників карток, і включає низку тематичних досліджень із фінансового сектора.
Відповідно до вимог відповідності, проведення навчальних днів можна проводити окремо, розбивши курс на два окремі заходи, які можуть охоплювати межі року, відповідно до ваших довгострокових планів відповідності.
Важливо: доставка одноденного початкового пленарного засідання може бути організована лише в пакетному режимі (з як мінімум двома об'єднаними сесіями).
Аудиторія
Менеджери та розробники, що працюють над веб-додатками у сфері фінансів
Попередні вимоги
Загальна веб-розробка для безпечного кодування
Цілі курсу
- Знайомство з основними концепціями кібербезпеки
- Вивчення спеціальностей безпеки фінансового сектора
- Знання вимог PCI DSS
- Управління вразливістю у сторонніх компонентах
- Розуміння проблем безпеки веб-додатків
- Детальний аналіз елементів OWASP Top Ten
- Впровадження безпеки веб-застосунків у контекст будь-якої мови програмування
- Виходячи за межі фруктів, що низько висять
- Розуміння того, як криптографія підтримує безпеку
- Знайомство з методами та інструментами тестування безпеки
Зміст курсу
ДЕНЬ 2
Десять найкращих за версією OWASP 2021
A01 - Порушення контролю доступу
- Основи контролю доступу
- Нездатність обмежити доступ до URL
- Збитий з пантелику депутат
- Небезпечне пряме посилання на об'єкт (IDOR)
- Лабораторна робота - Посилання на небезпечний прямий об'єкт.
- Обхід авторизації через керовані користувачем ключі
- Приклад використання - Обхід авторизації у Facebook
- Лабораторна робота – Горизонтальна авторизація.
- Файл завантажений
- Необмежене завантаження файлів
- Передовий досвід
- Лабораторна робота – необмежена завантаження файлів.
- Підробка міжсайтових запитів (CSRF)
- Лабораторна робота - Підробка міжсайтових запитів
- Найкращі практики CSRF
- Глибокий захист CSRF
- Лабораторна робота - Захист CSRF за допомогою токенів
A02 - Збої криптографії
- Інформаційний вплив
- Вплив на вилучені дані та агрегування
- Приклад використання – розкриття даних Strava
- Витік системної інформації
- Витік системної інформації
- Найкращі практики розкриття інформації
- Криптографія для розробників
- Основи криптографії
- Елементарні алгоритми
- Генерація випадкових чисел
- Генератори псевдовипадкових чисел (ДПСЧ)
- Криптографічно стійкі ГПСЧ
- Використання віртуальних випадкових потоків
- Лабораторна робота – використання випадкових чисел.
- Приклад - заморожування кредитного рахунку Equifax
- Генерація випадкових чисел
- Захист конфіденційності
- Симетричне шифрування
- Блокові шифри
- Режими роботи
- Режими роботи та IV - найкращі практики
- Лабораторна робота – Симетричне шифрування.
- Асиметричне шифрування
- Комбінування симетричних та асиметричних алгоритмів
Десять найкращих за версією OWASP 2021
A03 - Упорскування
- Принципи ін'єкції
- Ін'єкційні атаки
- SQL-ін'єкція
- Основи SQL-ін'єкцій
- Лабораторна робота - SQL-ін'єкція
- Техніки атаки
- Сліпа SQL-ін'єкція на основі вмісту
- Сліпа SQL-ін'єкція на основі часу
- Найкращі практики SQL-ін'єкцій
- Перевірка введення
- Параметризовані запити
- Лабораторна робота - використання підготовлених операторів.
- Приклад використання - злом облікових записів Fortnite
- Використання коду
- Впровадження команди ОС
- Найкращі практики впровадження команд ОС
- Приклад використання - Shellshock
- Лабораторія - Shellshock
- Впровадження команди ОС
ДЕНЬ 3
Десять найкращих за версією OWASP 2021 року
A03 - Упорскування
- HTML-ін'єкція - міжсайтовий скриптинг (XSS)
- Основи міжсайтового скриптингу
- Типи міжсайтових скриптів
- Постійні міжсайтові сценарії
- Відбитий міжсайтовий скриптинг
- Міжсайтовий скриптинг на стороні клієнта (на основі DOM)
- Лабораторна робота - Збережений XSS
- Лабораторна робота - Відображений XSS
- Приклад використання - XSS в облікових записах Fortnite
- Найкращі практики XSS-захисту
- Принципи захисту - втеча
- Лабораторна робота - XSS виправлено/збережено
- Лабораторна робота - виправлення / відображення XSS
- Додаткові шари захисту - глибокий захист
Десять найкращих за версією OWASP 2021
A07 - Помилки ідентифікації та аутентифікації
- Аутентифікація
- Основи аутентифікації
- Багатофакторна автентифікація
- Одноразові паролі на основі часу (TOTP)
- Слабкі сторони автентифікації
- Спуфінг у мережі
- Приклад використання - обхід двофакторної аутентифікації PayPal
- Кращі практики інтерфейсу користувача
- Приклад - розкриття інформації в Simple Banking для Android
- Лабораторна робота - Підбір пароля в режимі он-лайн.
- Управління паролями
- Управління вхідними паролями
- Зберігання паролів облікових записів
- Пароль у дорозі
- Лабораторна робота. Чи достатньо просто хешування паролів?
- Атаки за словником та брутфорс
- Солення
- Адаптивні хеш-функції для зберігання паролів
- Політика паролів
- Вимоги NIST до автентифікатора для запам'ятовуваних секретів
- Захист пароля
- Використання парольних фраз
- Приклад - витік даних Ешлі Медісон
- Атака за словником
- Кінцева тріщина
- Експлуатація та викладені уроки
- Перенесення бази паролів
- (Неправильно) обробка нульових паролів
- Керування вихідними паролями
- Жорстко закодовані паролі
- Найкращі практики
- Лабораторна робота - Жорстко закодований пароль.
- Захист конфіденційної інформації у пам'яті
- Проблеми захисту пам'яті
- Управління вхідними паролями
A08 - Порушення цілісності програмного забезпечення та даних
- Цілісність підресурсів
- Імпорт JavaScript
- Лабораторна робота - Імпорт JavaScript.
- Приклад - порушення даних British Airways
- Небезпечна десеріалізація
- Проблеми серіалізації та десеріалізації
- Цілісність - десеріалізація ненадійних потоків
- Цілісність - найкращі практики десеріалізації
- Майново-орієнтоване програмування (POP)
- Створення корисного навантаження
- Лабораторна робота - створення корисного навантаження POP.
- Лабораторна робота - використання корисного навантаження POP.
- Резюме - найкращі практики POP
Тестування безпеки
- Методи та інструменти тестування безпеки
- Аналіз коду
- Статичне тестування безпеки додатків (SAST)
- Динамічний аналіз
- Тестування безпеки під час виконання
- Тестування на проникнення
- Стрес-тестування
- Інструменти динамічного аналізу
- Динамічне тестування безпеки додатків (DAST)
- Сканери веб-уразливостей
- Інструменти SQL-ін'єкцій
- Розпливання
Згортання
- Принципи безпечного кодування
- Принципи сталого програмування Метта Бішопа
- І що тепер?
- Джерела безпеки програмного забезпечення та додаткова література