Repository navigation
P0 gateway: protect private video thumbnails behind auth #45
Copy link
Copy link
Closed
Labels
area:gatewayarea:gatewayarea:gatewayphase:16Phase 16 security hotfix: CRITICAL chain + CVEPhase 16 security hotfix: CRITICAL chain + CVE
Description
Activity
- addedphase:backlogBacklogBacklogarea:gatewayarea:gatewayarea:gatewayphase:16Phase 16 security hotfix: CRITICAL chain + CVEPhase 16 security hotfix: CRITICAL chain + CVEand removedphase:backlogBacklogBacklog
on Sep 13, 2026 Agent review — iteration 1
Контекст: уязвимость из тикета уже закрыта фиксом #43 — анонимный прокси
/thumbnails/*в gateway удалён, MinIO-бакет полностью приватный, metadata отдаёт presignedthumbnail_url(MINIO_PUBLIC_ENDPOINT). Прямой запросGET /thumbnails/*к gateway → 404, к MinIO без подписи → 403.What was done
services/gateway/cmd/server/main.go— сборка роутера вынесена в тестируемуюnewRouter(cfg)(без изменения логики).services/gateway/cmd/server/main_test.go— регрессионный тестTestNoAnonymousThumbnailsProxy:GET /thumbnails/vid-1/thumb.jpgи/thumbnails/→ 404 (маршрут не существует, анонимный прокси не вернётся).
Findings
- [Low] тест проверяет gateway-уровень (404 = маршрут удалён), а не end-to-end 403 MinIO — end-to-end гарантия живёт в приватности бакета (проверяется в e2e).
- [Low, fixed] в тестовом конфиге
internalTokenтеперь не пустой — покрыт продовый путь director-инъекции.
Verdict
ready for PR
Verification
go test ./...(gateway) — passmake lint-go— 0 issuesmake test-go— все 8 пакетов ok
Ready for review
Implemented
- Регрессионный тест на отсутствие анонимного
/thumbnails/*прокси в gateway (issue P0 infra: restrict MinIO anonymous policy and close 9000/8081 exposure #43 закрыл уязвимость, P0 gateway: protect private video thumbnails behind auth #45 фиксирует её тестом).
Acceptance criteria
- Thumbnail приватного видео недоступен без токена: gateway
/thumbnails/*→ 404, MinIO напрямую без подписи → 403 (бакет приватный, presigned URL из P0 infra: restrict MinIO anonymous policy and close 9000/8081 exposure #43).
Review cycle
- Iterations: 1
- Remaining risks: e2e-проверка
make e2eв этой итерации не запускалась (нужен Docker-стек).
Suggested PR title
fix(gateway): regression-test removed anonymous /thumbnails proxyPull request opened
#73 — will auto-close via
Closes #45on merge.Project status:
In review(synced after PR creation).Verification
-
go test ./...(gateway) — pass, включая новый регрессионный тестTestNoAnonymousThumbnailsProxy -
make lint-go— 0 issues -
make test-go— все 8 пакетов ok
Remaining risks
make e2eне запускался (нужен полный Docker-стек); приватность бакета покрыта конфигом из P0 infra: restrict MinIO anonymous policy and close 9000/8081 exposure #43.
-
Metadata
Metadata
Assignees
Labels
area:gatewayarea:gatewayarea:gatewayphase:16Phase 16 security hotfix: CRITICAL chain + CVEPhase 16 security hotfix: CRITICAL chain + CVE
Превью приватных видео публичны:
/thumbnails/*проксируется в MinIO без auth (gateway/cmd/server/main.go:145-146).Фикс: заворачивать
/thumbnails/*в HLSAuth (private — только владелец, public/unlisted — всем) или отдавать signed URL с TTL.Verify: thumbnail приватного видео → 403 без токена.
Источник: docs/REVIEW-2026-09-13-merged.md §1
Автоматически создано из сводного ревью. Сверяй актуальность номеров строк — они зафиксированы на коммите
91efb5b.