5.9 KiB
5.9 KiB
П59 · 2023-01 · Модель угроз — три прохода саморевью
Рамка пакета
- Slug:
editorial-2023-01-practice-threat-model,editorial-2023-01-mechanism-threat-model,editorial-2023-01-field-threat-model. - Голос: М6, начало 2023 года. Прагматичный системный практик говорит коротко: один учебный поток данных, asset, trust boundary, abuse, control, evidence и rollback.
- Граница: это не security review, pentest, аттестация, аудит соответствия, browser/API run, криптографическая реализация, сканирование, trace или измерение. Fixture создаёт только детерминированные объекты в памяти; все actor/asset/boundary/abuse вручную заданы строками.
- Sidecar содержит ровно пять новых файлов: этот review, один upgrade-скрипт и три локальных SVG. Registry, README,
articles.json, очередь, документация, Git, чужие файлы и прежние месяцы не менялись.
Проход 1 — факты и техника
- Источники перепроверены 31.07.2026 по HTTP 200 и их статусам/датам, исторически они были доступны к январю 2023: NIST SP 800-154 Initial Public Draft, 14.03.2016, NIST SP 800-218 SSDF v1.1 Final, 03.02.2022 и NIST SP 800-53 Rev. 5, 2020. SP 800-154 везде назван именно initial public draft, не final.
planTeachingThreatModel()принимает только явныеactor,asset,boundary,abuseи один известныйcontrol; отсутствие asset или boundary и неизвестный control детерминированно отклоняются. Valid branch связывает один control с одним evidence.rollbackTeachingThreatModel()восстанавливает лишь snapshot учебной записи и возвращаетassessment: not-performed.runThreatModelFixture()содержит 13 assertions только о локальной модели: обязательные поля, boundary, связь threat/control/evidence, три отрицательные ветки, отсутствие system assessment/environment observation и предел rollback. Нет assertions о безопасности endpoint, подписи, сети, пользователях или продуктивной системе.
Проход 2 — голос, полнота и объём
- В первых двух абзацах всех трёх статей названы проблема и цена: чек-листовый control без asset/boundary создаёт непроверяемое изменение и опасный откат. Маршрут везде построен как «симптом → причина → проверка → действие».
- У каждой статьи есть доступная таблица, исполнимый code/example, упорядоченный маршрут, фигура с содержательными alt/caption, ограничения, rollback и следующий шаг. Слово threat model не подменяет доказательство: рядом названы asset, злоупотребление, control и evidence.
- Внутренний revision builder считает основной текст без списка источников и удерживает диапазон 5 000–15 000 знаков. Фактический объём: 7 269 / 8 048 / 7 701 знак; зрелость соответствует 2023 году: системная точность без выдуманного опыта и метрик.
Проход 3 — визуал, безопасность и выпуск
- SVG разделяют роли: DFD-поток, контракт threat/control/evidence и маршрут диагностики/rollback. В них нет
script,foreignObject, внешних URL,data:image, пользовательского ввода или интерактивного поведения. Подписи явно отделяют схему от реальной сети, протокола, incident report и deployment. - До интеграции выполнены:
node --check web/scripts/upgrade-2023-01.mjs— PASS;node web/scripts/upgrade-2023-01.mjs --verify-fixture— PASS 13/13;cd web && npm run audit:draft -- scripts/upgrade-2023-01.mjs— PASS для всех трёх slug; import-safe export безdate/author— PASS;xmllint— PASS; SVG safety scan — PASS; Sharp-review всех SVG на 375 px — PASS.
Интеграционная приёмка
- Ревизии добавлены в
web/data/editorial-revisions.mjsповерх трёх исходных slug.web/data/articles.json, даты и авторы не изменялись; в registry 172 уникальные ревизии без дубликатов. - Строгий аудит
npm run audit:articles -- editorial-2023-01-practice-threat-model editorial-2023-01-mechanism-threat-model editorial-2023-01-field-threat-model— PASS: у каждой статьи 1 figure, 1 table и 1 code example. - Production-сборка
cd web && npm run build— PASS: 374 статические страницы. README обновлён с 178/358 до 181/358 принятых материалов; осталось 177.