Files
transcriber/tasks/items/npm-deps-vulnerability-scan.md
T

46 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧹 Проверять уязвимости в зависимостях приложения
- **Тип:** chore
- **Категория:** Очередь — Заведена урожаем ревью и встала в конец машинально: место в плане стройки назначает человек.
- **Зачем:** Зависимости приложения пришли задачей spa-skeleton, а сканера у них нет: govulncheck смотрит только модули Go. Ни проверки, ни объявленного исключения — непроверенная поверхность, о которой никто не решал
Набор проверок судит уязвимости в зависимостях Go — шаг `vulns`, и судит он
достижимость из кода. У зависимостей приложения такого шага нет: `govulncheck` о
них не знает вовсе, а перечень «чего в гейте намеренно нет» их не называет. То
есть это не объявленный долг, а пробел.
Находка ревью задачи `spa-skeleton` 2026-08-15; ручной прогон сканера на
сегодняшнем дереве нашёл ноль уязвимостей, поэтому спешки нет — есть отсутствие
правила.
## Затрагивает
- `Taskfile.yml` — шаг набора проверок: свой либо расширение `front`;
- `CLAUDE.md`, раздел «Гейт» — состав шагов, словарь кодов исхода и перечень
сетезависимых шагов;
- `docs/conventions/go-linters.md`, «Хранилище, документы, секреты, зависимости»
— строка о том, чем механизирована проверка;
- `web/package.json`, `web/package-lock.json` — источник, по которому судит
сканер.
## Критерии приёмки
- Уязвимость в зависимости приложения роняет набор проверок. Оракул — временно
закрепить пакет с известной уязвимостью и увидеть красный шаг.
- Отказ сети и реестра на этом шаге приходит кодом окружения, а красная находка
— кодом дрейфа. Оракул — прогон с пустым кэшем без сети даёт код 3, находка
даёт код 1.
- Шаг не удлиняет обычный прогон заметно. Оракул — замер времени `task gate` до
и после.
- Решение записано там, где его будут искать: либо шаг назван в составе гейта,
либо исключение названо в перечне «чего в гейте намеренно нет» с причиной.
Оракул — чтение `CLAUDE.md`, раздел «Гейт».
## Рамки
Разбирать сами уязвимости и обновлять зависимости эта задача не берётся — она
заводит проверку. Выбор между «сканировать» и «объявить исключение» уже сделан
решением владельца от 2026-08-15 в пользу проверки; если сканер окажется шумным
на зависимостях сборки, сузить его до тех, что уезжают в браузер, — правка этой
же задачи, а не повод отказаться от проверки.