Защитная диагностика Netty OHTTP по GHSA-vmr9-j6wf-pmh2: version inventory, обратимый fixture, PASS/FAIL/Unknown, stop-rule и минимальный пакет доказательств без production-данных.
Что именно проверяет карточка Netty OHTTP
Здесь не проводится общий аудит продукта и не пересказывается чужая публикация. Проверяется одна граница: native direct memory может удерживаться после ошибки аутентификации зашифрованного сообщения. Advisory GHSA-vmr9-j6wf-pmh2 задаёт проверяемый inventory-контекст «io.netty.incubator:netty-incubator-codec-ohttp: < 0.0.23.Final; первая исправленная версия: 0.0.23.Final». Само совпадение версии означает только affected_candidate. Оно не подтверждает достижимость пути, наличие инцидента или ущерба. Для not_present нужен runtime/SBOM, для outside_range — resolved dependency, для patched_or_backported — release либо commit и повторяемый regression result. Если связать работающий artifact с revision нельзя, честный ответ — Unknown. Уникальная модель наблюдения для этой карточки связывает гарантию «буфер AEAD должен освобождаться на успешной и ошибочной ветке ровно один раз» с действием «локальный EmbeddedChannel получает штатный пакет и ограниченную серию синтетических пакетов с ошибкой AEAD; сравниваются allocator counters до и после закрытия канала». Она считается полной только вместе с колонками «ветка decode | CryptoException | active allocations | direct memory после cleanup | verdict» и отдельным аварийным условием «direct memory или число allocations растёт после заданного лимита повторов». Эти пять элементов образуют самостоятельную проверку именно Netty OHTTP, а не заменяемый шаблон для соседнего продукта.
Дерево решения по версии и функции Netty OHTTP
Соберите package manager, lock-файл, digest образа или бинарника, feature flag и фактическую точку вызова. Сначала установите, присутствует ли io.netty.incubator:netty-incubator-codec-ohttp в runtime, а не только в исходном manifest. Затем сравните доказанную версию с границей «io.netty.incubator:netty-incubator-codec-ohttp: < 0.0.23.Final; первая исправленная версия: 0.0.23.Final». Ветка not_present завершает проверку без запуска fixture; outside_range требует сохранённого вывода inventory; affected_candidate переходит к изолированному тесту; patched_or_backported требует ссылки на исправление и его test evidence. Не подменяйте эти состояния одним HTTP 200, названием контейнера, датой сборки или отсутствием жалоб.
Обратимый fixture для механизма GHSA-vmr9-j6wf-pmh2
Целевая гарантия сформулирована так: буфер AEAD должен освобождаться на успешной и ошибочной ветке ровно один раз. Проверка: локальный EmbeddedChannel получает штатный пакет и ограниченную серию синтетических пакетов с ошибкой AEAD; сравниваются allocator counters до и после закрытия канала. Среда должна быть одноразовой, без production snapshot, персональных данных, токенов и открытого исходящего доступа. До boundary-case выполните benign control, чтобы доказать достижимость нужной ветки. Заранее установите таймаут, лимит CPU/RSS, разрешённое дерево temp и сетевой allowlist loopback. После каждого шага прочитайте состояние обратно и удалите созданные объекты. Не используйте опубликованные exploit payload или реальные идентификаторы.
Как заполнить таблицу «ветка decode | CryptoException | active allocations | direct memory после cleanup | verdict»
Записывайте по одной строке на benign control и boundary-case: ветка decode | CryptoException | active allocations | direct memory после cleanup | verdict. PASS означает, что control дошёл до нужной функции, граничный случай был управляемо отклонён, состояние и side effects не изменились. FAIL допустим только при работающем control и наблюдаемом нарушении заявленной гарантии. Unknown обязателен при недоказанной версии, недостижимой ветке, неполной телеметрии, раннем срабатывании limiter или неоднозначном readback. Такая матрица отделяет наблюдение от догадки и позволяет другому инженеру повторить проверку без доступа к исходной среде.
Исправление и безопасная последовательность rollout
Если получен affected_candidate или воспроизводимый FAIL, следуйте remediation из upstream source; ориентир inventory: io.netty.incubator:netty-incubator-codec-ohttp: < 0.0.23.Final; первая исправленная версия: 0.0.23.Final. Когда исправленная версия не названа или проект больше не поддерживается, не придумывайте patch: изолируйте функцию и спланируйте миграцию на поддерживаемую замену. Сначала сохраните lock/digest и fixture, затем измените только компонент, повторите benign и boundary cases, проверьте readback и лишь потом переходите к canary. Не смешивайте обновление с заменой proxy, прав, storage и формата данных: это разрушает причинность. Защитный фильтр может быть временной мерой, но не заменяет исправление. Stop-rule этого материала: direct memory или число allocations растёт после заданного лимита повторов. При его срабатывании тест немедленно прекращается, артефакты изолируются, production не меняется.
Пакет доказательств для владельца Netty OHTTP
В handoff включите GHSA-vmr9-j6wf-pmh2, границу «io.netty.incubator:netty-incubator-codec-ohttp: < 0.0.23.Final; первая исправленная версия: 0.0.23.Final», artifact digest, source revision, feature state, hash fixture, лимиты, результаты control и boundary-case, одну строку из таблицы «ветка decode | CryptoException | active allocations | direct memory после cleanup | verdict», итог PASS/FAIL/Unknown и точную причину Unknown. Добавьте ссылки на GitHub Advisory Database и upstream advisory/fix, но не копируйте длинные фрагменты. Отдельной строкой укажите, что проверялась боль «native direct memory может удерживаться после ошибки аутентификации зашифрованного сообщения», а не весь продукт. Уберите hostname, IP, usernames, cookies, tokens, конфиги и содержимое пользовательских объектов. Так evidence остаётся минимальным, проверяемым и пригодным для повторного решения. Для машиночитаемого журнала используйте независимые ключи `netty-ohttp-aead-buffer-release-check-inventory-proof`, `netty-ohttp-aead-buffer-release-check-benign-control`, `netty-ohttp-aead-buffer-release-check-boundary-observation`, `netty-ohttp-aead-buffer-release-check-state-readback`, `netty-ohttp-aead-buffer-release-check-sideeffect-diff`, `netty-ohttp-aead-buffer-release-check-stop-trigger`, `netty-ohttp-aead-buffer-release-check-final-verdict` и `netty-ohttp-aead-buffer-release-check-cleanup-proof`. Они не должны содержать значения секретов; это только имена полей, позволяющие не спутать доказательства этой проверки с соседними карточками.
Материал подготовлен редакцией VOne с помощью ИИ; даты, версии, первичные источники, обратимый fixture, stop-rule, privacy-ограничения и отсутствие рекламных обещаний перепроверены человеком.
Источники и проверка
- GitHub Advisory Database GHSA-vmr9-j6wf-pmh2 проверено 2026-09-01
- Primary upstream source for Netty OHTTP проверено 2026-09-01
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.