Гейт ловит достижимые уязвимости в зависимостях
- шаг vulns гоняет govulncheck последним: ему одному нужна сеть, и он самый долгий; отсутствие инструмента даёт код окружения, а не пропуск - закрыты обе достижимые находки — grpc до 1.82.1, aws-sdk-go-v2/service/s3 до 1.97.3 с eventstream 1.7.8; прогон на реальных ключах Yandex не делался - место шага названо в семантике гейта: он судит достижимость из кода, и недостижимая GO-2026-5932 в golang.org/x/crypto/openpgp его не роняет
This commit is contained in:
@@ -119,9 +119,16 @@ task gate # весь набор проверок разом
|
||||
- **Что красит безусловно и почему:** отказ сборки, тестов, `go vet`,
|
||||
неотформатированный файл, находка `golangci-lint`, расхождение объявленных
|
||||
версий Go, дрейф раскладки документов,
|
||||
дрейф каталога задач, форма `openspec/config.yaml`. Машина проверяет всё
|
||||
дрейф каталога задач, форма `openspec/config.yaml`, достижимая из кода
|
||||
уязвимость в зависимостях (`govulncheck`). Машина проверяет всё
|
||||
перечисленное, и это не обсуждается. Шаг, чей скрипт не найден, краснеет с
|
||||
именем недостающего плагина, а не пропускается молча.
|
||||
- **Шагу `vulns` нужна сеть**, и он один такой: база уязвимостей живёт на
|
||||
vuln.go.dev. Без сети шаг краснеет, а не пропускается молча; сам инструмент
|
||||
ставится `go install golang.org/x/vuln/cmd/govulncheck@latest`. Судит он
|
||||
достижимость из кода: находка в модуле, чей уязвимый символ мы не вызываем,
|
||||
шаг не роняет. Такая сегодня одна — `GO-2026-5932` в
|
||||
`golang.org/x/crypto/openpgp`, исправления у неё нет вовсе.
|
||||
- **Чего в гейте намеренно нет и кто тогда обязан это гонять:**
|
||||
- **сборка образа** — дорога, и отказ от неё сознательный. Дешёвая замена
|
||||
стоит шагом сверки версий: он сравнивает строки и ловит расхождение, из-за
|
||||
|
||||
Reference in New Issue
Block a user