К обсуждениям

Cloudreve: проверка пути remote download внутри назначения

Редакция VOne Технологии

Защитная проверка github.com/cloudreve/Cloudreve/v4 по GHSA-w8j7-39hp-8x59: версия, обратимый fixture, PASS/FAIL/Unknown, stop-rule и обезличенный пакет доказательств.

Что проверить для github.com/cloudreve/Cloudreve/v4

Без resolved-releases и positive control любой вывод останется предположением. Пользователь выбирает каталог загрузки, но команда не может доказать, что имя удалённого файла не выводит запись наружу. Короткий ответ: подтвердите фактический набор и границу «go/github.com/cloudreve/Cloudreve/v4 <= 4.0.0-20260606032813-26b6b1044b02 → исправленная dependency не указана», затем сделайте только обратимую проверку: в пустом временном хранилище исследовать нормализацию обычного и пограничного имени без загрузки чужого контента. Не используйте production, чужие данные или вредоносные payload. GitHub Advisory Database указывает severity medium и обновление 2026-08-24; это приоритет для инвентаризации, а не доказательство атаки или массового спроса. Запишите digest сборки, resolved dependency и снимок затронутой функции. Если набор транзитивный, имя образа или процесса не заменяет lock-файл, SBOM либо provenance артефакта.

Как определить применимость версии

Зафиксированная advisory-периметр: go/github.com/cloudreve/Cloudreve/v4 <= 4.0.0-20260606032813-26b6b1044b02 → исправленная dependency не указана. Сопоставляйте её с реально загруженной библиотекой, а не только с manifest исходников. Разделите исход на `not_present`, `outside_range`, `affected_candidate`, `patched_or_backported` и `unknown`. Для fork зарегистрируйте upstream commit и описание backport. Для категории `path` отдельно отметьте, достигается ли соответствующий путь из доверенной зоны. Если branch или package не удаётся однозначно сопоставить, остановитесь на Unknown и не подменяйте факт общим советом «обновить всё».

Обратимый тест без опасного воспроизведения

Рекомендуемый fixture: в пустом временном хранилище исследовать нормализацию обычного и пограничного имени без загрузки чужого контента. До запуска подготовьте пустой временный контекст, ограничьте время и ресурсы, отключите внешнюю сеть и зафиксируйте expected result. Сначала сделайте benign positive control, который доказывает работоспособность функции. Затем один отрицательный случай, проверяющий только заявленную границу. Не переносите в fixture токены, персональные данные, реальные пути, production-конфигурацию или опубликованные proof-of-concept. После теста удалите временные сущности и подтвердите отсутствие изменения исходного состояния.

Критерии PASS, FAIL и Unknown

Практический артефакт: manifest requested name–normalized target–selected root–write decision. PASS означает, что разрешённый control работает, а пограничный случай отклонён до нежелательного состояния. FAIL фиксируется только при работающем control и наблюдаемом нарушении заявленной границы. Unknown обязателен, если dependency не доказана, test harness не достиг нужного пути, исход нельзя прочитать обратно или ограничитель сам оборвал проверку. Для `path` дополнительно зафиксируйте время, память, нормализованный путь, субъект доступа либо контекст вывода — только те поля, которые относятся к механизму.

План обновления и stop-rule

Если сборка попадает в затронутый диапазон, используйте поддерживаемую исправленную ветку из primary source и повторите тот же fixture до и после изменения. Не меняйте одновременно dependency, proxy, права и формат данных: иначе исход потеряет причинность. Stop-rule: немедленно завершите тест при росте ресурсов вне лимита, неожиданном сетевом обращении, записи за пределами временного каталога, попытке затронуть чужой объект или появлении реальных секретов. WAF, отсутствие жалоб и статус active не равны исправлению GHSA-w8j7-39hp-8x59.

Что приложить к запросу поддержки

Сохраните GHSA-w8j7-39hp-8x59, package name, resolved version, artifact digest, ветку и commit, feature state, hash синтетического fixture, verdicts control и negative case, а также итог PASS/FAIL/Unknown. Приложите ссылки на GitHub Advisory Database и primary upstream source, но не вставляйте большие фрагменты чужого текста. Отдельная боль: пользователь выбирает каталог загрузки, но команда не может доказать, что имя удалённого файла не выводит запись наружу. Результат — manifest requested name–normalized target–selected root–write decision. Механизм GHSA-w8j7-39hp-8x59 (Cloudreve's remote download file paths can escape the selected destination directory) не совпадает с соседними intent и требует собственного набора наблюдений. Такой набор позволяет maintainer повторить решение без доступа к production. Если advisory, локальная сборка и regression test расходятся, перечислите расхождение как Unknown вместо предположения о безопасности.

Контрольная карточка GHSA-w8j7-39hp-8x59 для path

Карточка именно этого решения связывает вопрос «пользователь выбирает каталог загрузки, но команда не может доказать, что имя удалённого файла не выводит запись наружу» с проверкой «в пустом временном хранилище исследовать нормализацию обычного и пограничного имени без загрузки чужого контента». В первой строке укажите github.com/cloudreve/Cloudreve/v4, затем границу go/github.com/cloudreve/Cloudreve/v4 <= 4.0.0-20260606032813-26b6b1044b02 → исправленная dependency не указана. Во второй строке зарегистрируйте исходный сигнал: Cloudreve's remote download file paths can escape the selected destination directory. Третья строка — ожидаемый практический исход «manifest requested name–normalized target–selected root–write decision». Для этого механизма не подходят доказательства соседних страниц: название продукта, общий статус службы, один HTTP 200, отсутствие жалоб или скриншот интерфейса не отвечают на заявленный вопрос. Отдельно зафиксируйте, какой benign control подтверждает достижимость пути, какое наблюдение считается отказом до побочного эффекта и при каком условии решение становится Unknown. Пакет не должен содержать токены, реальные имена, адреса узлов, содержимое документов, дампы памяти или полный production-log. Финальная подпись включает дату 2026-08-31, GHSA-w8j7-39hp-8x59, digest сборки и ссылку на upstream. Так другой специалист проверит категорию path по тем же полям, не повторяя опасный сценарий и не получая доступ к данным пользователя.

Минимальный record для повторной проверки cloudreve-remote-download-destination-containment

Пользователь выбирает каталог загрузки, но команда не может доказать, что имя удалённого файла не выводит запись наружу. Рабочее действие для этой карточки: в пустом временном хранилище проверить нормализацию обычного и пограничного имени без загрузки чужого контента. Ожидаемый артефакт: manifest requested name–normalized target–selected root–write decision. Upstream формулировка механизма: Cloudreve's remote download file paths can escape the selected destination directory. Компонентная граница: go/github.com/cloudreve/Cloudreve/v4 <= 4.0.0-20260606032813-26b6b1044b02 → исправленная версия не указана. Для filesystem containment сохраните requested name, результат нормализации, canonical target, canonical root и булево `is_relative_to_root`. Не читайте системные файлы и не создавайте ссылки на реальные каталоги. Positive control пишет нейтральный marker внутрь временного root; отрицательный случай должен быть отклонён до открытия файла. Цепочка наблюдения «cloudreve → remote → download → destination → containment» задаёт названия колонок и порядок read-back. Машиночитаемые ключи record: cloudreve-remote-download-destination-containment-baseline, cloudreve-remote-download-destination-containment-inventory, cloudreve-remote-download-destination-containment-control, cloudreve-remote-download-destination-containment-boundary, cloudreve-remote-download-destination-containment-fixture, cloudreve-remote-download-destination-containment-deadline, cloudreve-remote-download-destination-containment-readback, cloudreve-remote-download-destination-containment-sideeffects, cloudreve-remote-download-destination-containment-verdict, cloudreve-remote-download-destination-containment-provenance, cloudreve-remote-download-destination-containment-rollback, cloudreve-remote-download-destination-containment-timestamp, cloudreve-remote-download-destination-containment-owner, cloudreve-remote-download-destination-containment-digest, cloudreve-remote-download-destination-containment-unknownreason. После обновления повторяется тот же fixture, поэтому изменение github.com/cloudreve/Cloudreve/v4 можно отделить от изменения окружения. Для GHSA-w8j7-39hp-8x59 verdict остаётся Unknown при пропущенном control, несовпадающей ветке либо недоступном read-back.

Материал подготовлен редакцией VOne с помощью ИИ; версии, источники, безопасный fixture, stop-rule, privacy-ограничения и отсутствие рекламных обещаний перепроверены человеком.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.