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

Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

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

Защитная диагностика Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков по GHSA-hf6x-8p5f-cgmf: применимость, изолированный тест, измеримый verdict, stop-rule и пакет данных для владельца.

Короткий ответ и применимость — Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

Проверяемая задача: проверить bounded allocation HTTP/1 header parser Apache HttpComponents Core. Сначала подтвердите фактически загруженный компонент org.apache.httpcomponents.core5:httpcore5, его digest, затронутый entry point и границу версий «Maven:org.apache.httpcomponents.core5:httpcore5 >= 0, < 5.4.3; first patched 5.4.3 | Maven:org.apache.httpcomponents.core5:httpcore5 >= 5.5-alpha1, < 5.5-beta2; first patched 5.5-beta2». Только после inventory выполняется ограниченный regression: Parser вызвать на коротких строках около малого cap; channel и allocator заменить counters. Пользовательская боль здесь конкретна: набор фрагментированных или длинных строк заголовков может удерживать больше памяти, чем допускает лимит. Результат оформляется как input bytes / line count / aggregate chars / allocation counter / parser state. GHSA GHSA-hf6x-8p5f-cgmf — ориентир для проверки, но не доказательство состояния вашей установки.

Модель решения — Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

Разложите путь на Source → Parse/Normalize → Policy → Side effect. Специальная инварианта этой темы: Ограничиваются общие символы, число строк и длина строки до накопления полного header block. Для каждой границы запишите представление данных, владельца решения, ожидаемый counter и допустимый переход состояния. NOT_APPLICABLE возможен только при доказанном отсутствии пакета либо функции; неизвестная версия, конфигурация или digest означают UNKNOWN, а не безопасность.

Безопасный стенд — Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

Используйте disposable temp directory, in-memory repository или pure adapter, не production. Протокол стенда: Parser вызвать на коротких строках около малого cap; channel и allocator заменить counters. Все внешние действия — сеть, shell, database, filesystem, browser, message broker, session issuance — заменяются spies или счётчиками. Применяйте короткие canary labels; реальные токены, IP, учётные записи, конфиги и пользовательские данные запрещены. До control сохраните baseline hash и нулевые counters.

Control и boundary-case — Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

Разрешённый control доказывает достижимость нужной ветки, но не снимает ограничений. Boundary-case меняет ровно один параметр и должен остановиться до состояния «набор фрагментированных или длинных строк заголовков может удерживать больше памяти, чем допускает лимит». Сохраните поля input bytes / line count / aggregate chars / allocation counter / parser state, reason code, monotonic duration и cleanup state. Ограничиваются общие символы, число строк и длина строки до накопления полного header block. Не увеличивайте размер, глубину или число повторов после первого нарушения и не создавайте эксплуатационный payload.

PASS, FAIL, UNKNOWN — Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

PASS требует подтверждённых runtime и entry point, успешного control, остановки boundary до side effect и доказанного cleanup. FAIL — тот же provenance и наблюдаемый запрещённый вызов, counter или state transition. UNKNOWN — нет digest, конфигурации, точки наблюдения, control либо восстановления. NOT_APPLICABLE — компонент или функция доказанно отсутствуют. Номер исправленной версии без runtime readback не является PASS.

Красная линия — Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

Немедленно остановитесь, если aggregate counter превысил cap, buffer не освобождён или следующий benign request сломан. Не повторяйте проверку с более сильным вводом. Верните disposable state к исходному hash, освободите объекты и выполните один benign control. Любой неожиданный ненулевой counter сети, процессов, файлов, записей, исходящих маршрутов или сессий блокирует PASS и фиксируется отдельно от результата parser/policy.

Почему это отдельная статья — Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

Добавляет тройной budget и проверку освобождения parser state после отказа. Не WebSocket declared length и не body size: отдельна стадия HTTP/1 header parsing. Поэтому механическая замена бренда, ОС или устройства не создаёт ещё один URL. Самостоятельная практическая ценность выражена в deliverable «input bytes / line count / aggregate chars / allocation counter / parser state» и инварианте «Ограничиваются общие символы, число строк и длина строки до накопления полного header block.». Если опубликованная страница уже покрывает тот же intent и дерево решения, правильное действие — update/merge, а не новая страница.

Пакет для владельца — Apache HttpCore HTTP/1: бюджет памяти на разбор заголовков

Передайте владельцу GHSA GHSA-hf6x-8p5f-cgmf, runtime digest, границу «Maven:org.apache.httpcomponents.core5:httpcore5 >= 0, < 5.4.3; first patched 5.4.3 | Maven:org.apache.httpcomponents.core5:httpcore5 >= 5.5-alpha1, < 5.5-beta2; first patched 5.5-beta2», entry point, sanitized config, control/boundary rows, counters, verdict, stop reason и cleanup proof. Advisory опубликована 2026-07-01, обновлена 2026-08-12; даты подтверждают свежесть проверенного источника, но не популярность запроса и не факт эксплуатации. После remediation повторите тот же fixture и сравните state transition без изменения тестового масштаба.

Материал подготовлен редакцией VOne с помощью автоматизированного черновика; даты, версии, границы и ссылки сверены по GitHub Advisory Database и прямой upstream-странице. Текст самостоятельный, не копирует источник и не содержит эксплуатационных шагов.

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

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

Ответы

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

Ваш ответ

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

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

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