Защитная проверка Coder ZIP upload по ghsa-2mg2-p7r7-g27f: применимость, обратимый fixture для границы «двойная защита: metadata-preflight и streaming budget на суммарный decompressed output», измеримый результат и stop-rule без production-данных.
Докажите применимость к Coder ZIP upload
Для безопасного решения сначала зафиксируйте границы наблюдения. Для Coder ZIP upload и границы «двойная защита: metadata-preflight и streaming budget на суммарный decompressed output» внесите в карточку runtime-сборку, package source, digest сборки, активный feature/config path и роль, которая достигает функции. Reviewed Advisory фиксирует «github.com/coder/coder/v2 >= 2.34.0, < 2.34.2; first patched 2.34.2 | github.com/coder/coder/v2 >= 2.33.0, < 2.33.8; first patched 2.33.8 | github.com/coder/coder/v2 >= 2.30.0, < 2.32.7; first patched 2.32.7 | github.com/coder/coder/v2 >= 2.17.0, < 2.29.17; first patched 2.29.17», публикацию 2026-07-06 и обновление 2026-07-06, но не подтверждает наличие у вас уязвимого бинарника, реальную эксплуатацию или спрос. Именно reachability, а не громкость заголовка, определяет приоритет проверки. Если версия собрана из fork или vendor patch, зафиксируйте commit/patch provenance отдельно: одна строка semver не отвечает, присутствует ли исправление.
Зафиксируйте отдельный защитный контракт
Опишите проверяемый инвариант своими словами: превышение суммы отклоняется до allocation; несовпадение metadata ловится streaming cap; control archive успешно завершается. Исходная пользовательская боль здесь конкретна — каждая запись укладывается в лимит, но их сумма создаёт неограниченный in-memory tar и аварийный расход памяти. Не смешивайте её с общими страницами про обновления, XSS, SSRF или отказ в обслуживании: механизм и ожидаемый ответ должны быть самостоятельными. Перед стартом укажите субъект, объект, доверенную границу, разрешённый побочный эффект и сигнал нарушения. Для этого материала артефакт решения — матрица entries / declared-total / streamed-total / preflight / writer-stop / peak-bytes. Он не содержит токены, IP, содержимое файлов или персональные данные; достаточно классов результата, счётчиков и digest тестового состояния.
Поставьте обратимый минимальный опыт
Подготовьте обратимый стенд: маленький синтетический ZIP с несколькими compressible entries и очень низким тестовым budget; гигантские данные не создаются. После этого сначала просуммировать declared sizes, затем повторить с подменённой metadata через counting writer и проконтролировать обе линии защиты. Используйте минимальные синтетические значения, запрет внешней сети, отдельный temp root и положительный контроль, который проходит тот же код без пограничного условия. Перед опытом внесите в карточку digest fixture, версию и timeout, после — digest состояния и cleanup result. Не переносите пример на production и не увеличивайте нагрузку ради наглядности. Если проверяемый модуль нельзя подменить или изолировать, ограничьтесь статической проверкой patch/release и отложите runtime-подтверждение.
Сведите наблюдения в матрицу решения
Наблюдение классифицируйте по заранее заданному правилу, а не по впечатлению от лога. Защитный исход: превышение суммы отклоняется до allocation; несовпадение metadata ловится streaming cap; control archive успешно завершается. Для всякого ряда в «матрица entries / declared-total / streamed-total / preflight / writer-stop / peak-bytes» зафиксируйте expected и observed, а также точную стадию отказа: parse, validate, authorize, allocate, open, mutate или cleanup. Ошибка до опасного действия и ошибка после него — разные результаты. Normal-control обязан доказать, что тест не сломан целиком. Повторите fixture не менее двух раз только в пределах локального бюджета: одинаковый категорию результата важнее длинного stdout.
Остановитесь при первом выходе за границу
Примените stop-rule без торга: сразу завершить проверку при росте fixture выше килобайтного бюджета, записи на диск вне temp или попытке нагрузочного теста production. Вторичные красные флаги — изменение объекта вне temp, неожиданный сетевой вызов, рост памяти, privilege prompt, необратимая запись, расхождение digest или отсутствие положительный контроль. Если обнаружен хотя бы один флаге завершите процесс, зафиксируйте лишь обезличенную матрицу и верните стенд к исходному состоянию. Не публикуйте payload, реальные конфиги и подробности чужой системы. Severity не разрешает расширять тест: цель — подтвердить защитный контракт с минимальным воздействием.
Передайте поддержке минимальный пакет
Для владельца компонента подготовьте короткий пакет: ghsa-2mg2-p7r7-g27f, Coder ZIP upload, installed/build version, upstream commit, применимый диапазон «github.com/coder/coder/v2 >= 2.34.0, < 2.34.2; first patched 2.34.2 | github.com/coder/coder/v2 >= 2.33.0, < 2.33.8; first patched 2.33.8 | github.com/coder/coder/v2 >= 2.30.0, < 2.32.7; first patched 2.32.7 | github.com/coder/coder/v2 >= 2.17.0, < 2.29.17; first patched 2.29.17», описание fixture без чувствительных значений, матрица entries / declared-total / streamed-total / preflight / writer-stop / peak-bytes, положительный контроль, stop-rule, cleanup proof и ссылки на advisory/upstream. Отдельно отметьте unknown: reachability, vendor backport, runtime configuration и наличие compensating control. Решение может быть только одним из трёх: not-applicable с доказательством, update/test по утверждённому окну или blocked до безопасного стенда. Так поддержка получает минимальные данные для воспроизведения, а публичный материал не содержит обещаний индексацию, позиции, универсальную защищённость или результат на чужой инфраструктуре.
Свяжите исправление с механизмом Coder ZIP upload
Для Coder ZIP upload свяжите исправление именно с механизмом «двойная защита: metadata-preflight и streaming budget на суммарный decompressed output», а не только с номером релиза. В changelog или diff найдите изменение, которое делает истинным результат «превышение суммы отклоняется до allocation; несовпадение metadata ловится streaming cap; control archive успешно завершается», и сопоставьте его с диапазоном «github.com/coder/coder/v2 >= 2.34.0, < 2.34.2; first patched 2.34.2 | github.com/coder/coder/v2 >= 2.33.0, < 2.33.8; first patched 2.33.8 | github.com/coder/coder/v2 >= 2.30.0, < 2.32.7; first patched 2.32.7 | github.com/coder/coder/v2 >= 2.17.0, < 2.29.17; first patched 2.29.17». После этого повторите fixture «маленький синтетический ZIP с несколькими compressible entries и очень низким тестовым budget; гигантские данные не создаются» на текущем и кандидатном артефакте в одинаковой изоляции; сравнивайте «матрица entries / declared-total / streamed-total / preflight / writer-stop / peak-bytes», а не произвольные строки лога. Если vendor backport меняет номер версии, зафиксируйте commit/diff provenance и сборочный digest. План возврата должен восстанавливать предыдущий тестовый артефакт, но не возвращать production к заведомо сомнительной версии. Критерий приёмки для этой отдельной боли — превышение суммы отклоняется до allocation; несовпадение metadata ловится streaming cap; control archive успешно завершается; критерий прекращения — сразу завершить проверку при росте fixture выше килобайтного бюджета, записи на диск вне temp или попытке нагрузочного теста production. Пока оба критерия не доказаны, статус обозначьте blocked или unknown, не подменяя результат предположением.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-2mg2-p7r7-g27f проверено 2026-08-31
- Upstream-репозиторий Coder ZIP upload проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.