Практическая защитная проверка Decidim Verifications по ghsa-3mvf-82qp-8qh5: применимость, обратимый тест границы «авторизационную проверку при каждом чтении verification document вместо bearer-like reusable URL», измеримый результат и stop-rule без production-данных.
Применимость к Decidim Verifications
Применимость устанавливают по исполняемой версии и включённой функции, а не по lock-файлу в одиночку. Для границы «авторизационную проверку при каждом чтении verification document вместо bearer-like reusable URL» запишите версию живого процесса, build digest, источник пакета, включённую функцию и субъект, который вызывает этот путь. Reviewed Advisory перечисляет границы «decidim-verifications < 0.30.9; first patched 0.30.9 | decidim-verifications >= 0.31.0.rc1, < 0.31.5; first patched 0.31.5 | decidim-verifications >= 0.32.0.rc1, < 0.32.0; first patched 0.32.0», однако запись в manifest ещё не доказывает установленную версию и reachability. Если provenance неполон, оставьте статус unknown. Not-applicable допустим только при доказанной версии вне affected range или документированно выключенной функции. Не переносите severity из advisory на свою среду без этих двух доказательств.
Что подтверждает GHSA-3mvf-82qp-8qh5
GitHub Reviewed Advisory опубликована 2026-07-13, обновлена 2026-07-13 и описывает для Decidim Verifications механизм: Decidim: Verification documents can be downloaded through reusable links. Подтверждённая package boundary: «decidim-verifications < 0.30.9; first patched 0.30.9 | decidim-verifications >= 0.31.0.rc1, < 0.31.5; first patched 0.31.5 | decidim-verifications >= 0.32.0.rc1, < 0.32.0; first patched 0.32.0». Upstream-репозиторий https://github.com/decidim/decidim связывает запись с исходным проектом, но сам по себе не сообщает состояние конкретного развёртывания. Даты, summary и диапазоны взяты с прямой advisory-страницы https://github.com/advisories/GHSA-3mvf-82qp-8qh5, а не из поискового сниппета. Эти источники не доказывают эксплуатацию, ущерб, популярность запроса, индексацию или позицию страницы.
Отдельная пользовательская боль и доказательство
Здесь проверяется ровно одна боль: получатель подписанной Active Storage ссылки может скачать документ без текущей admin session до истечения подписи. До любого запуска создайте артефакт «ledger link-type / session-role / organization / response-body / authorization-event» и заранее определите допустимые значения каждой колонки. Normal-control должен пройти на той же сборке, с теми же лимитами и через тот же кодовый путь. Один status code, исключение или отсутствие записи не является доказательством: нужны expected result, observed result, конфигурационная ветвь и cleanup. Маркеры не должны содержать токены, IP, реальные имена, документы, логи или внутренние адреса.
Безопасный обратимый тест
Подготовьте пустое тестовое изображение-marker, admin session и отдельный anonymous client в локальном storage. Затем нужно получить ссылку штатной admin view, затем открыть её в той же и анонимной сессии, не сохраняя содержимое. Заранее заданный защитный исход: admin в своей организации получает marker, anonymous и чужая организация проходят через отказ, а URL сам не является credential. Выполняйте опыт только локально или в одноразовой среде с пределами wall-time, CPU, памяти, файлов, сокетов и количества запросов. Не используйте production secrets, пользовательские данные, внешние цели или инструкции, пригодные для вторжения. Фиксированные лимиты делают опыт воспроизводимым и сохраняют его обратимость. После проверки удалите fixtures, повторите normal-control и сравните итоговый digest с baseline.
Решение по наблюдаемым результатам
Passed фиксируется, когда одновременно выполнено: admin в своей организации получает marker, anonymous и чужая организация проходят через отказ, а URL сам не является credential; normal-control сохранил ожидаемое поведение; cleanup вернул исходное состояние. Failed требует повторяемого расхождения на том же fixture и той же версии. Unknown остаётся при нестабильном trace, неполном provenance или неясной конфигурации. Результат оформляют как «ledger link-type / session-role / organization / response-body / authorization-event», чтобы другой инженер мог проверить вывод без догадок. Не расширяйте вывод с одной границы на всю систему и не обещайте абсолютную защищённость после одного опыта.
Стоп-правило, обновление и пакет поддержки
Критерий остановки задаётся до запуска: удалить marker и остановиться, если анонимная сессия получает file body. Если runtime входит в affected range, получите обновление только из доверенного канала upstream https://github.com/decidim/decidim, зафиксируйте новый digest и повторите тот же fixture с прежними лимитами. Новый сценарий не подтверждает исправление старого. В обезличенный пакет поддержки включите runtime version, package boundary, конфигурационную ветвь, expected/observed, resource limits, timestamps, error class и хэши fixtures. Исключите credentials, cookies, абсолютные пути, внутренние hostname и содержимое данных.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-3mvf-82qp-8qh5 проверено 2026-08-31
- Upstream-репозиторий Decidim Verifications проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.