Files
huncode 31ed7053e7
Build and deploy / deploy (push) Successful in 16s
revise January 2023 threat model articles
2026-07-31 14:24:50 +03:00

5.9 KiB
Raw Permalink Blame History

П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.