День 02 · полный учебный архив

От проверки уязвимости — к устойчивому процессу безопасной разработки.

Второй день связывает OWASP A07–A10, инженерную безопасность non-web‑приложений, SSDLC и практикум. Здесь собраны нормализованная полная стенограмма, 133 слайда, методический конспект и задания, переработанные после технического ревью.

03 фрагмента полной стенограммы133 HTML‑слайда в веб‑колоде12 лабораторных работ
133текстовых HTML‑слайда: самостоятельная веб‑реконструкция учебной колоды
A07–A10аутентификация, целостность, журналирование, обработка исключительных ситуаций
2021 ↔ 2025явно разведены историческая нумерация лабораторных работ и действующая редакция OWASP
evidenceв каждой практике оцениваются артефакт, первопричина, исправление и регрессионная проверка

Карта материала

Сначала технический риск, затем инженерное решение и доказательство результата.

Страница читает второй день как связный курс. Фотослайды дают первичный визуальный ряд, а подробные Markdown‑материалы — удобный для поиска, проверки и повторного применения текст.

Редакционное решение

Два издания OWASP нельзя смешивать под одной нумерацией.

В исходной лекции рядом существуют текущая классификация 2025 года и лабораторный маршрут, сформированный по OWASP Top 10:2021. Это не повод сокращать материал: это повод точно обозначить границу версий.

ТемаИсторическая лабораторная картаOWASP Top 10:2025Как читать этот архив
АутентификацияA07:2021 — Identification and Authentication FailuresA07:2025 — Authentication FailuresТема и номер сохранились; современное название используется в конспекте.
Целостность ПО и данныхA08:2021 — Software and Data Integrity FailuresA08:2025 — Software or Data Integrity FailuresСмысл темы сохранён; особое внимание — цепочке поставки и небезопасной десериализации.
Журналирование и мониторингA09:2021 — Security Logging and Monitoring FailuresA09:2025 — Security Logging & Alerting FailuresРасширено понятие: записи без обнаружения и реакции не образуют контроль.
SSRF / исключительные ситуацииA10:2021 — Server-Side Request Forgery (SSRF)A10:2025 — некорректная обработка исключительных ситуацийSSRF сохранён как историческая ЛР и тематическое дополнение; fail-open, таймауты и ошибки выделены как самостоятельная современная тема.

OWASP Top 10:2025 — A07–A10

Граница доверия должна быть защищена в коде, конфигурации и процессе.

Лекционная последовательность идёт от идентичности пользователя к целостности данных, наблюдаемости и корректному отказу. Для каждой категории важны не только «атака» и «фикс», но и критерий, по которому команда докажет исправление.

Аутентификация: путь учётных данных к разрешённому действию

Схема 16

Контроли в цепочке аутентификацииПользователь проходит проверку идентификатора, секрета и дополнительного фактора; после неё выдаётся защищённая сессия, а сервер отдельно проверяет право на каждое действие.Пользовательидентификатор + секретПроверка входаrate limit · deny-listMFA / рискфактор, контекст, шаг-upСессияrotation · Secure · HttpOnlyОперацияserver-side authorisationОТДЕЛЬНАЯ ПРОВЕРКА ПРАВ НА КАЖДОМ ИЗМЕНЯЮЩЕМ ДЕЙСТВИИУспешный вход не доказывает право читать, менять или удалять конкретный объект.
Аутентификация не равна авторизации. Против credential stuffing и password spraying нужны rate limiting, обнаружение аномалий, MFA и безопасное восстановление; против фиксации сессии — смена идентификатора после входа и флаги cookie.
A07:2025

Authentication Failures

Credential stuffing, password spraying, слабое восстановление доступа, предсказуемые или зафиксированные сессии — разные сценарии, но общая задача одна: не принимать неубедительное доказательство идентичности.

  • Хеширование паролей современным адаптивным алгоритмом; проверка скомпрометированных паролей.
  • Защита от автоматизации без блокировки легитимного пользователя.
  • Короткоживущие токены, ротация после входа и чувствительных изменений.
A08:2025

Software or Data Integrity Failures

Безопасность сборки, зависимостей, обновлений и сериализованных данных зависит от проверяемой цепочки доверия. Данные структурированного формата не становятся безопасными только потому, что «это YAML» или «это JSON».

  • Проверка происхождения артефакта, версий, хешей и подписей.
  • Никакой десериализации недоверенного объекта с выполнением кода.
  • Минимальные парсеры, лимиты размеров и глубины, отказ безопасным способом.
A09:2025

Security Logging & Alerting Failures

Логирование нужно проектировать как измеримый контроль: какие события, какие поля, как защищена целостность записи, кто реагирует и по какому порогу. Много логов без корреляции и владельца реакции не равно мониторингу.

  • Вход, смена прав, сброс пароля, отказ доступа, системная ошибка и действие администратора.
  • Корреляционный идентификатор, время, субъект, объект, результат и источник.
  • Не помещать в журнал пароли, токены, полные персональные и секретные данные.
A10:2025 + SSRF:2021

Ошибки, таймауты и server-side fetch

Fail-open, скрытая ошибка, бесконечное ожидание и неконтролируемый переход по URL могут превратить вспомогательную функцию в уязвимость. SSRF показывает, почему серверу нельзя доверять URL, выбранному клиентом.

  • Явные состояния отказа, таймауты, лимиты, безопасные сообщения пользователю.
  • Для server-side fetch: allowlist, проверка схемы/хоста/IP после DNS, повторная проверка redirect.
  • Сегментация сети и egress-контроль — обязательный второй рубеж.

Историческая ЛР 10

SSRF — это запрос, который делает сервер, а не браузер пользователя.

Вместо нестабильного challenge в конкретной версии Juice Shop практикум использует воспроизводимый стенд: локальный gateway передаёт запрос приватному приложению, а уязвимый fetch и синтетический внутренний сервис остаются в закрытой сети. В нём нет доступа к корпоративной сети, внешним URL или реальным metadata endpoints.

Контролируемая граница SSRF‑стенда

Схема 17

Поток SSRF в учебной Docker-сетиБраузер на localhost направляет URL в минимальный gateway. Gateway обращается только к фиксированному приватному приложению. Уязвимый server-side fetch приложения получает ответ синтетического внутреннего контейнера.Браузер127.0.0.1:8080Локальный gatewayфиксированный proxy → appURL не интерпретируетПриватное appURL от клиентауязвимый server-side fetchinternal:9000синтетическиеметаданныеAPP + INTERNAL: DOCKER NETWORK INTERNAL = TRUEИсправление: идентификатор вместо URL или allowlist; DNS/IP и redirect-проверка;timeout/лимиты и egress policy. Артефакт — только синтетический ответ internal.
Принцип учебной безопасности. Уязвимый fetch показан только в закрытой сети; gateway нужен лишь для совместимости с localhost‑публикацией Docker Desktop и не выбирает адрес по данным пользователя.

Non-web AppSec

Поверхность атаки не заканчивается HTTP‑формой.

Во второй части дня обсуждались нативные C/C++‑программы, мобильные и desktop‑приложения. Во всех трёх случаях важны входные точки, границы доверия, привилегии процесса, обновления и диагностические интерфейсы.

C / C++ и память

Память — ресурс с жизненным циклом, а не бесконечный массив байтов.

Buffer overflow, integer overflow/underflow, use-after-free и ошибки владения могут менять управление или данные процесса. Защита начинается с API и модели владения, затем усиливается компилятором, линковщиком, анализом и тестами.

  • Проверять диапазоны до арифметики размеров и выделения памяти; исключать неявные сужения типов.
  • Предпочитать RAII, контейнеры и безопасные интерфейсы; описывать владение и время жизни.
  • Для поддерживаемых toolchain: stack protector, PIE/ASLR, RELRO, fortify и предупреждения как ошибки; в CI — ASan/UBSan, SAST, fuzzing.
  • Отделять демонстрационный намеренно уязвимый код от production-конфигурации.
Mobile и desktop

Проверяйте IPC, deep links, WebView, обновления и локальные секреты.

У мобильного приложения атака часто начинается с exported component, intent, deeplink, небезопасного WebView или резервной копии. У desktop‑приложения — с updater, конфигурации, локального IPC, плагинов, файловых ассоциаций и прав процесса.

  • Минимизировать экспорт компонентов и проверять отправителя/разрешения на стороне получателя.
  • Не включать JavaScript bridge и произвольную навигацию WebView без модели угроз.
  • Подписывать и проверять обновления; защищать канал и метаданные обновления.
  • Не хранить долговременный секрет в клиенте; разделять привилегии и изолировать данные.

Четыре слоя контроля нативного кода

Схема 18

Линии защиты нативного кодаВнешний ввод проходит проектирование API, проверку значений, механизмы компилятора и линковщика, затем тестирование и наблюдаемость.Внешний вводфайл · сеть · IPC · CLIБезопасный APIграницы · типы · владениеHardeningSP · PIE · RELRO · fortifyВерификацияSAST · sanitizers · fuzzing · regressionНи одна защитная опция не заменяет корректную модель владения и проверки входа; ни один тест не отменяет необходимость устранить первопричину.
Defense in depth в C/C++. Флаги hardening и санитайзеры служат проверяемыми компенсирующими и обнаруживающими мерами, но не оправдывают сохранение небезопасного интерфейса.

SSDLC

Безопасность становится свойством процесса, когда результат каждого этапа передаётся следующему.

В лекции рассматривались водопадная, итеративная, agile‑подходы, V‑модель, спираль и прототипирование. SSDLC не отменяет выбранную модель: он добавляет в неё безопасность как критерий готовности и обратную связь.

Минимальная петля SSDLC

Схема 19

Последовательность SSDLCТребования, моделирование угроз, архитектура, реализация, автоматические проверки, выпуск, мониторинг и обратная связь образуют непрерывную петлю.Требованияактивы · роли · критерииМодель угрозпотоки · границы · рискиРеализацияsecure coding · reviewПроверкиSAST · SCA · testsЭксплуатациялогирование · реакцияВыпускподпись · SBOM · changeОбратная связьдефекты → требованияНа каждом переходе остаётся проверяемый артефакт: требование, модель угроз, review;результат автоматической проверки, SBOM, журнал, postmortem или regression test.
Не «разовая проверка перед релизом», а трассируемая цепочка решений. В терминах НИСТ SSDF это помогает встроить безопасные практики в подготовку организации, защиту ПО, производство хорошо защищённого ПО и реакцию на уязвимости.
Минимум для команды

Артефакты, которые можно проверить

  1. Паспорт актива и security‑требования с владельцем.
  2. Модель угроз для изменений архитектуры и внешних интерфейсов.
  3. Правила secure coding, review и управление секретами.
  4. Автоматические SAST/SCA/тестовые gates с политикой исключений.
  5. SBOM, контроль зависимостей, подпись и provenance релиза.
  6. Логи, alerting, план реакции и закрытие причин через regression.
Методическая связка

Стандарт не заменяет инженерную проверку

ГОСТ Р 56939‑2024, ISO/IEC 27034, NIST SSDF, OWASP ASVS и SAMM задают язык требований и зрелости. В этой лекции они используются как опоры для формулы «угроза → требование → контроль → доказательство», но сама страница не заявляет соответствие организации какому-либо стандарту.

Моделирование угроз удобно вести с помощью STRIDE; CVSS относится к оценке тяжести уже найденной уязвимости и не заменяет моделирование угроз.

Конструктор ЛР

Главный результат дня — не решить чужой challenge, а собрать своё проверяемое задание.

Практическая часть второго дня учит преподавателя конструировать лабораторную работу так, чтобы она оценивала понимание первопричины, а не факт срабатывания. Ниже — каркас, по которому собрана каждая из 12 работ практикума.

Каркас лабораторной работы: от цели к проверяемой сдаче

Схема 20

Шесть частей конструктора лабораторной работыЦель через наблюдаемое действие задаёт паспорт задания; легенда, правила и среда ограничивают контур; 6–10 шагов ведут к артефакту; вопросы на понимание и задание со звёздочкой проверяют перенос; сдаётся артефакт с первопричиной, исправлением и регрессией.ЦельнаблюдаемоедействиеЛегенда и средаправила, границы,разрешённый стенд6–10 шаговведут к артефактуфактаВопросы + ★перенос модели,а не пересказСдачаартефакт, причина,фикс, регрессияСильный вопрос требует объяснить «почему» и перенести модель на свой проект;слабый вопрос воспроизводит фразу инструкции. Задание оценивается по первопричинеи регрессии, а не по найденному флагу.
Задание — это учебный проект, а не набор кнопок. Шестой пункт шаблона — «как не допустить повторного появления» — группа пропускает чаще всего; именно он переводит работу от симптома к профилактике.

Слушателю

Когда сами собираете или решаете задание, начинайте не с payload, а с формулировки: какой актив, какая граница доверия, какой контроль отсутствует. Проверяйте себя вопросом «если внедрить моё исправление, наблюдение перестанет воспроизводиться?».

Заметка преподавателя

Дайте каждой группе собрать одно задание по каркасу и обменяться с соседней на проверку. Слабое место — цель «через инструмент» вместо цели «через наблюдаемое действие»; разберите это на общем примере до начала.

План внедрения

Что именно изменить в своём курсе, а не «добавить лекцию про безопасность».

Безопасность становится свойством курса, когда каждый этап проектной работы студентов получает проверяемый security-критерий. Ниже — минимальный набор изменений, который переносится в существующую программу без её слома.

В проектную работу студентов

Пять точек, где добавляется критерий

  1. Требования: к каждому проекту — паспорт активов и хотя бы одно security-требование с владельцем.
  2. Проектирование: короткая модель угроз (STRIDE по потокам) для внешних интерфейсов.
  3. Реализация: правило secure coding и запрет секретов в репозитории.
  4. Проверка: один автоматический gate — линтер или SAST/SCA — с политикой исключений.
  5. Защита проекта: отрицательный regression-тест как обязательный артефакт сдачи.
Чего не делать

Типичные ошибки внедрения

  • Не превращать SSDLC в декларацию соответствия стандарту: выполнение одного упражнения — не соответствие ГОСТ/ISO.
  • Не оценивать «найденный флаг»: оценивается объяснение причины и проверяемое исправление.
  • Не выносить безопасность в отдельный курс-приложение: она встраивается в уже существующие проектные этапы.
  • Не требовать боевых payload-ов: контур практики — только локальная разрешённая среда.

Слушателю

Даже в учебном проекте предъявляйте один проверяемый security-артефакт: модель угроз, результат сканера или regression-тест. Это и есть навык, который переносится в работу.

Заметка преподавателя

Начните с одного gate и одного артефакта на проект, а не со всей цепочки сразу. Готовые критерии, рубрика и чек-листы — в методике дня 2.

ИИ и образование

Модель или агент не снимает ответственность с автора решения.

Финальная дискуссия дня касалась LLM, агентных систем и образования: как использовать инструмент для исследования, черновика и проверки гипотез, не подменяя понимание заимствованным ответом.

Для обучающегося

Фиксируйте, что сгенерировал инструмент, что вы проверили самостоятельно и по какому первоисточнику. Не передавайте в внешний сервис секреты, персональные данные, исходный код без разрешения или внутренние материалы. Результат сдаётся с рассуждением и проверяемым артефактом.

Для преподавателя

Оценивать стоит не только финальный текст: задайте вариативный контекст, попросите объяснить границы решения, показать следы проверки и защитить выбор. ИИ‑инструмент полезен для подготовки кейса, но критерии должны проверять самостоятельное инженерное мышление.

Практикум из 12 лабораторных

Точная карта: A01–A09:2025, SSRF A10:2021 и нативная память.

Подготовительная ЛР_0 строит карту активов, ЛР_1–ЛР_9 покрывают A01–A09:2025, ЛР_10 сохраняет историческую SSRF A10:2021, а ЛР_11 закрывает безопасность памяти. A10:2025 рассматривается в лекционном блоке об обработке исключительных ситуаций, но отдельной лабораторной в наборе не заявлена. Идеи работ подгрупп прошли редакторское и техническое ревью; исходные документы не публикуются.

ЛРЗаданиеЧто доказывает студентКарта
ЛР_0Инвентаризация активовАктивы, точки входа, границы доверия и топ-5 критических активов.подготовительная
ЛР_1Контроль доступа (BOLA/IDOR)Сервер проверяет владение объектом и роль, а не клиентский идентификатор.A01:2025 · CWE‑639/862
ЛР_2Устаревший интерфейсСкрытый endpoint — часть поверхности; файл проверяется по содержимому.A02:2025 · CWE‑16/434
ЛР_3Уязвимая зависимостьSBOM, SCA и контроль состава против известной уязвимости компонента.A03:2025 · CWE‑1104
ЛР_4Утечка данных + неподписанный JWTКонтроль доступа к файлам и проверка подписи и алгоритма токена.A04:2025 · CWE‑548/347
ЛР_5Инъекции: SQLi и XSSРазделение кода и данных: параметризация и контекстное кодирование.A05:2025 · CWE‑89/79
ЛР_6Инвариант корзиныОтрицательное количество нарушает бизнес-правило; фиксируется в API, БД и регрессии.A06:2025 · CWE‑20/840
ЛР_7Дефолтные учётные данныеЗащита жизненного цикла учётки без массового подбора.A07:2025 · CWE‑521
ЛР_8Небезопасная десериализацияСтруктурированный вход недоверен; лимиты и безопасный парсер в изолированном стенде.A08:2025 · CWE‑502/400
ЛР_9Метрики и логированиеСобытие как контроль с alerting и владельцем; закрытые метрики и секреты.A09:2025 · CWE‑778/532
ЛР_10SSRF: server-side fetchГраница браузер/сервер, egress-изоляция, allowlist и отрицательные тесты.A10:2021 · CWE‑918
ЛР_11Переполнение буфераОтсутствие проверки границ ведёт к выполнению команды; hardening лишь компенсирует.память · CWE‑787/120

Открыть полный набор из 12 заданий ↓Практикум на сайте →

Архив второго дня

Полный текст, Markdown-версия веб‑колоды и материалы для повторного применения.

Полная стенограмма не является исходным ASR‑файлом: она приведена к литературной и технической норме, содержит время, роли говорящих и редакторские пометки. Рабочие TXT‑файлы, документы подгрупп и персональные данные в скачивание не включены.

MD · полный текст

Нормализованная стенограмма

Все содержательные реплики, вопросы, переходы и открытая дискуссия трёх фрагментов дня.

Скачать Markdown ↓
MD · кратко

Редактированный протокол

Решения, оговорки по версиям OWASP, выводы и материал для преподавателя.

Скачать протокол ↓
HTML · 133 слайда

Веб‑колода слайдов

Интерактивная текстовая дека с делением на тематические блоки, поиском и доступной навигацией. Исходные изображения слайдов не размещаются и не входят в ZIP‑пакеты.

Открыть слайды →
MD · методика

Методический конспект

Структурированная версия лекции с контрольными вопросами, связями с SSDLC и источниками.

Скачать конспект ↓
ZIP · проверенный пакет

Пакет второго дня

Отредактированные стенограмма и протокол, конспект, Markdown-версия веб‑колоды, практикум и безопасный SSRF‑стенд с манифестом и контрольными суммами.

Скачать пакет ↓
MD · provenance

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

Что послужило исходником, какие правки внесены и какие материалы сознательно не публикуются.

Открыть реестр ↓
MD · 12 ЛР

Набор заданий практикума

Двенадцать работ ЛР_0–ЛР_11: подготовка, A01–A09:2025, историческая SSRF A10:2021 и нативная память, с рубрикой оценивания.

Скачать задания ↓
ZIP · стенограмма

Стенограмма и протокол

Полная нормализованная стенограмма и редактированный протокол дня 2 одним архивом.

Скачать ZIP ↓
HTML · справочник

Глоссарий терминов дня 2

MFA, десериализация, STRIDE, RELRO, WebView и ещё десятки понятий — понятным языком.

Открыть глоссарий →
HTML · методика

Преподавателю: как вести день 2

Тайминг, уровни сложности, рубрика на 10 баллов, типичные ошибки и чек-лист.

Открыть методику →
MD · контроль

Контрольные суммы и манифест

SHA-256 и манифест публичных пакетов дня 2 для проверки целостности при переиспользовании.

SHA-256 ↓ Манифест ↓

Проверяемые опоры

Нормативные и методические источники отделены от учебной интерпретации.

Текст лекции не подменяет стандарт или техническую документацию. При разработке и аудите сверяйте требования с актуальной версией первоисточника и применимостью к системе.

OWASP Top 10:2025

Актуальная таксономия веб‑рисков, включая A07, A08, A09 и A10.

OWASP ASVS

Проверяемые требования для проектирования и верификации приложений.

NIST SP 800‑218 SSDF

Практики подготовки, защиты, производства и реагирования в жизненном цикле ПО.

OWASP SAMM

Модель зрелости практик управления, проектирования, реализации, верификации и эксплуатации.

OWASP SSRF Prevention

Практики прикладной и сетевой защиты server-side requests.