Прогон всех 5 сканеров: gitleaks 0 / Semgrep 0 / Ward 2(dev) / Nuclei 0(medium+) / ZAP 0(high). pg_anonymizer не установлен (факт). Три ложных P0 сняты проверкой кода (E9/E18/admin/SSRF закрыты). Вердикт NO-GO держат F-P1, pg_anonymizer, прод-.env. Трекер открытых вопросов + файл-баг (чтение под стеной, десинк F-J, зацикл наставника) для claude-brain. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.1 KiB
Спека — поправка аудита по факту кода (верификация маршрутов и SSRF)
Цель
Внести в отчёт и трекер аудита поправку: три пункта, ранее помеченные как P0 «из
модели угроз, в коде не переподтверждено», проверены по реальному коду и оказались
закрытыми. Документы должны отражать факт, а не устаревшую STRIDE-карту. Правки —
только в docs/; код/схема/git не трогаются.
V1 — что подтверждено фактом
Контракт. По app/routes/web.php (актуальный код): /api/dashboard/summary,
/api/managers, /api/lead-statuses — под auth:sanctum(+tenant); группа
/api/admin/* — под middleware saas-admin (dev пропускает, prod fail-closed 503);
/api/webhooks/test — под auth:sanctum + tenant. По WebhookSettingsController:
WebhookUrlGuard::blockReason() вызывается на сохранении и на тесте, блокирует
cloud-metadata/loopback/RFC1918, URL обязан быть https://.
Конвенция. Закрытое в коде не остаётся в списке блокеров; переводится в «закрыто фактом» либо в остаточный пункт (config/edge).
Критерий. В отчёте и трекере E9/E18/E20/SSRF помечены как закрытые/смягчённые с указанием остатка.
V2 — что остаётся реальным блокером
Контракт. Реально открыты (подтверждено фактом): F-P1 (нет ретеншена телефонов
лидов — по модели Deal и схеме), pg_anonymizer (не установлен), APP_DEBUG/APP_ENV
на боевом .env.production (проверить). Остаточные не-блокеры: bypass-флаг и SSO
админки (config/Б-1), DNS-rebind на будущей доставке webhook (edge), rate-limit на
login (P1, проверить throttle-конфиг).
Критерий. Вердикт NO-GO сохраняется, но список блокеров пересобран на подтверждённые пункты.
V3 — где править
Контракт. Поправка вносится в отчёт docs/security/2026-06-17-go-live-security-report.md
(блок вердикта/угроз) и в трекер docs/security/2026-06-17-open-items.md (строки
B3/B4/B5), аддитивно, без слома структуры.
Критерий. Оба файла обновлены, прежний текст не повреждён.
[
{"id":"vc1","kind":"EXTRACTED","ref":"app/routes/web.php","anchor":"Go-live: auth:sanctum"},
{"id":"vc2","kind":"EXTRACTED","ref":"app/app/Http/Controllers/Api/WebhookSettingsController.php","anchor":"WebhookUrlGuard::blockReason"}
]