Skip to content

P0 gateway: protect private video thumbnails behind auth #45

Description

@SlavaKuntsov

Превью приватных видео публичны: /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.

Activity

  1. self-assigned this
    on Sep 14, 2026
  2. SlavaKuntsov commented on Sep 15, 2026

    @SlavaKuntsov
    OwnerAuthor

    Agent review — iteration 1

    Контекст: уязвимость из тикета уже закрыта фиксом #43 — анонимный прокси /thumbnails/* в gateway удалён, MinIO-бакет полностью приватный, metadata отдаёт presigned thumbnail_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) — pass
    • make lint-go — 0 issues
    • make test-go — все 8 пакетов ok

    Ready for review

    Implemented

    Acceptance criteria

    Review cycle

    • Iterations: 1
    • Remaining risks: e2e-проверка make e2e в этой итерации не запускалась (нужен Docker-стек).

    Suggested PR title

    fix(gateway): regression-test removed anonymous /thumbnails proxy

  3. SlavaKuntsov commented on Sep 15, 2026

    @SlavaKuntsov
    OwnerAuthor

    Pull request opened

    #73 — will auto-close via Closes #45 on 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:gatewayarea:gatewayphase:16Phase 16 security hotfix: CRITICAL chain + CVE

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions