Как безопасно проверить Dulwich: thin-pack delta не диктует размер allocation: точная версия, reachability, обратимый fixture, измеримые PASS/FAIL/Unknown и stop-rule без production-данных.
Граница проблемы: Dulwich: thin-pack delta не диктует размер allocation
Самостоятельная пользовательская боль: маленький push объявляет несоразмерный delta dest_size и заставляет сервер резервировать большой объём памяти. Защитное правило для проверки сформулировано заранее: «как безопасно проверить что declared object delta size ограничен per object и per pack budget до allocation и apply delta в dulwich receive pack thin pack без production данных». GitHub Reviewed Advisory ghsa-xrvj-v92f-53gj описывает: «Dulwich has unbounded memory allocation in receive-pack from crafted thin packs»; запись опубликована 2026-06-08 и обновлена 2026-06-11. Эти сведения подтверждают технический сигнал и upstream-контекст, но не доказывают наличие затронутой версии, достижимость пути, эксплуатацию конкретной системы или популярность запроса. Поэтому итог по локальной среде начинается как Unknown и меняется только после inventory, reachability и изолированного теста.
Сверьте версии и достижимость для dulwich-thin-pack-delta-size-budget
Первый шаг — доказать provenance сборки и состояние нужной функции. Boundary из reviewed record и прямого upstream-источника: «pip/dulwich >= 0.1.0, < 1.2.5; first patched 1.2.5». Разнесите состояния в таблице: компонента нет; версия вне диапазона; исправление backported; функция выключена; путь недостижим; provenance неясен; нужен fixture. Рабочий набор полей именно для этой темы: received bytes, declared size, object budget, pack budget, allocator calls, rejection. Banner, lockfile без resolved tree или совпадение имени пакета не являются доказательством. Если схема версий форка не сопоставима с upstream, оставьте Unknown и запросите build provenance вместо категоричного PASS.
Обратимый тест без production-данных: received bytes
Безопасный fixture: in-memory pack fixture с маленьким payload и synthetic oversized header проходит только size parser с recording allocator. До запуска запишите expected invariant, лимиты времени и памяти, допустимые side effects и способ полной очистки. Добавьте положительный control для штатного пути и отрицательный case, который меняет только одну проверяемую границу. Используйте фиктивные identifiers и временное состояние; токены, реальные адреса, пользовательские данные, рабочие конфиги и внешние цели исключены. После каждого case удалите temp-state и повторите малый control: он подтверждает, что отказ относится к механизму, а не к сломанному harness.
Зафиксируйте доказательство по полям rejection
Артефакт проверки хранит только минимизированные поля: received bytes, declared size, object budget, pack budget, allocator calls, rejection. Для каждого поля отметьте источник: configuration, измерение, parser output или решение policy. Критерий PASS определён до запуска: oversized header отклонён до allocator call, control создаёт один disposable object. FAIL допустим только если запрещённый эффект наблюдается в изоляции, boundary и runtime-mode совпали, а оба controls дают ожидаемый результат. Во всех остальных случаях ставьте Unknown или Inconclusive. Не прикладывайте сырые логи: достаточно hash fixture, версии, обезличенной матрицы, результата controls и времени проверки.
Проверьте причинность вывода о как безопасно проверить что declared object delta size ограничен per object и per pack bud
Рецензент должен связать наблюдение «маленький push объявляет несоразмерный delta dest_size и заставляет сервер резервировать большой объём памяти» с конкретной границей «как безопасно проверить что declared object delta size ограничен per object и per pack budget до allocation и apply delta в dulwich receive pack thin pack без production данных», а не с похожим внешним симптомом. Попросите показать, где в resolved build применяется boundary «pip/dulwich >= 0.1.0, < 1.2.5; first patched 1.2.5», почему операция «in-memory pack fixture с маленьким payload и synthetic oversized header проходит только size parser с recording allocator» обратима и какие значения received bytes, declared size, object budget, pack budget, allocator calls, rejection получены измерением. Затем отдельно объясните, почему результат «oversized header отклонён до allocator call, control создаёт один disposable object» проверяет и отказ, и штатный control. Если хотя бы одно звено отсутствует, вывод возвращается в Unknown; severity advisory нельзя переносить на локальную установку автоматически.
Особенность механизма dulwich-thin-pack-delta-size-budget
Для thin-pack важны два независимых бюджета: размер одного заявленного объекта и суммарный бюджет приёма pack. Заголовок можно разобрать без материализации payload, поэтому allocator recorder должен срабатывать только после обеих проверок. Малый valid control подтверждает, что отказ не сломал обычный путь. Не увеличивайте лимиты ради воспроизведения: это скрывает порядок validation и превращает защитный fixture в нагрузочный тест.
Обновление, повторная проверка и граница остановки
Предпочтительное действие — перейти на исправленную upstream-ветку из boundary «pip/dulwich >= 0.1.0, < 1.2.5; first patched 1.2.5», затем повторить тот же fixture и штатный control. Временная мера допустима только если разрывает описанный механизм, имеет владельца, срок действия, наблюдаемый сигнал и проверяемый rollback. Обязательный stop-rule: не принимать push в реальный repository и не поднимать memory limit ради теста.. При его срабатывании эксперимент прекращают, не расширяя доступ и не повышая нагрузку. В обращение к maintainer включите provenance, feature state, матрицу полей и ссылки на reviewed advisory и прямой upstream-источник; эксплуатационные инструкции и данные реальной среды исключите.
Минимальный пакет для поддержки по dulwich-thin-pack-delta-size-budget
Соберите короткую причинную карточку: боль — «маленький push объявляет несоразмерный delta dest_size и заставляет сервер резервировать большой объём памяти»; invariant — «как безопасно проверить что declared object delta size ограничен per object и per pack budget до allocation и apply delta в dulwich receive pack thin pack без production данных»; версия — «pip/dulwich >= 0.1.0, < 1.2.5; first patched 1.2.5»; операция — «in-memory pack fixture с маленьким payload и synthetic oversized header проходит только size parser с recording allocator»; поля — received bytes, declared size, object budget, pack budget, allocator calls, rejection; PASS — «oversized header отклонён до allocator call, control создаёт один disposable object». Добавьте hash теста, результат positive/negative controls, cleanup result и причину, по которой тест не касается внешней системы. Не включайте IP, токены, реальные имена, ключи, содержимое документов или полные логи. Если direct source подтверждает только release context, так и укажите: он не является доказательством локальной уязвимости. Граница остановки остаётся неизменной: не принимать push в реальный repository и не поднимать memory limit ради теста..
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые источники, безопасный fixture, privacy-границы и отсутствие рекламных обещаний затем перепроверены.
Источники и проверка
- GitHub Reviewed Advisory ghsa-xrvj-v92f-53gj проверено 2026-08-31
- Прямой upstream-источник для Dulwich: thin-pack delta не диктует размер allocation проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.