Files
portal/docs/superpowers/specs/2026-06-17-audit-verify-correction-spec.md
T
Дмитрий 3bf5eaed81 docs(security): аудит доведён до конца + поправка по верификации кода + баги стены
Прогон всех 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>
2026-06-17 16:25:23 +03:00

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"}
]