Защитный разбор Cloudreve и ghsa-vgj4-345g-jcf8: применимость, обратимый тест «проверку client_id claim вместе со scope перед принятием OAuth access token», измеримый исход и stop-rule.
Определите применимость к Cloudreve
Сначала исследуется не severity, а граница «проверку client_id claim вместе со scope перед принятием OAuth access token». Запишите версию живого процесса, build digest, путь компонента, способ установки и включённую функцию. Advisory перечисляет «github.com/cloudreve/Cloudreve/v4 >= 4.0.0-20260114075425-bc6845bd742c, < 4.0.0-20260606015557-ed20843dc3df; first patched 4.0.0-20260606015557-ed20843dc3df», но зависимость в manifest не равна доказанной runtime-версии. Отдельно установите reachability и субъекта, вызывающего путь. При неполном provenance оставьте статус unknown, а не переносите оценку advisory на ваше развёртывание.
Фактическая рамка GHSA-vgj4-345g-jcf8
Reviewed record опубликован 2026-07-20, обновлён 2026-07-20 и формулирует проблему как «Cloudreve: OAuth access tokens bypass scope enforcement due to missing client_id claim». Package boundaries: «github.com/cloudreve/Cloudreve/v4 >= 4.0.0-20260114075425-bc6845bd742c, < 4.0.0-20260606015557-ed20843dc3df; first patched 4.0.0-20260606015557-ed20843dc3df». Upstream https://github.com/cloudreve/cloudreve подтверждает происхождение кода, но не состояние вашей установки. Даты, affected range и механизм берутся из прямой advisory-страницы. Ни record, ни форумный лид не доказывают атаку, ущерб, спрос, индексацию или позицию; для этого нужны другие измерения.
Отдельная боль: проверку client_id claim вместе со scope перед принятием OAuth access token
Узкая пользовательская боль: token одного test client может быть принят другим client context и получить не предназначенный ему scope. Чтобы не спутать её с ошибкой стенда, заранее задайте поля артефакта: матрица token-client / request-client / scope / policy-result / handler-count / audit-reason. Normal-control обязателен: token с совпадающим client_id и разрешённым scope достигает одного mock resource. Только после него запускают один граничный case. Marker не должен быть реальным credential, идентификатором или пользовательским содержимым. Так получается проверяемое дерево решения, а timeout, падение или неверная роль не выдаются за подтверждение механизма.
Безопасный обратимый опыт
Создайте локальный issuer, два dummy clients, короткие signed test tokens, resource handler counter и фиксированные часы. Затем нужно проверить matching client control и cross-client token до resource handler, фиксируя claim и policy decision. Все операции выполняются в локальной или одноразовой среде с пределами wall-time, CPU, памяти, файлов, сокетов и запросов. Ожидаемый защитный результат задан до запуска: matching client получает разрешённый mock scope, cross-client token отклоняется, handler count равен нулю. Не используйте production secrets, настоящие документы, внутренние адреса, пользовательские логи или публичные цели. После опыта очистите fixture, повторите normal-control и сверьте baseline digest.
Правило решения без догадок
Решение хранится как матрица token-client / request-client / scope / policy-result / handler-count / audit-reason. Passed возможен, когда одновременно наблюдается «matching client получает разрешённый mock scope, cross-client token отклоняется, handler count равен нулю», normal-control успешен и cleanup возвращает baseline. Failed фиксируют лишь после воспроизводимого расхождения с тем же fixture и лимитами. Not-applicable требует доказанной runtime-версии вне range либо документированно выключенного пути. Unknown остаётся при неполном provenance, нестабильном trace или неоднозначной конфигурации. Одного status code, падения или отсутствия события недостаточно для окончательного вывода.
Остановка, обновление и пакет поддержки
Stop-rule: прекратить при handler call для cross-client token. Если runtime входит в affected range, обновление получают из доверенного канала https://github.com/cloudreve/cloudreve, после чего повторяют тот же fixture с прежними лимитами; новый сценарий не подтверждает исправление старого. В обезличенный пакет включают runtime version, digest, конфигурационную ветвь, expected/observed, лимиты, timestamps, error class и хэши fixtures. Исключите токены, cookies, IP, внутренние имена, абсолютные пути и содержимое данных. Инструкция не обещает абсолютную защищённость.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-vgj4-345g-jcf8 проверено 2026-08-31
- Upstream-репозиторий cloudreve/cloudreve проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.