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

Apache CXF: realm в WWW-Authenticate проверяется до ответа

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

Безопасная проверка Apache CXF OAuth2 WWW-Authenticate realm по ghsa-xf62-wr5p-5p95: применимость, обратимый fixture, realm class / builder status / header count / header names / body bytes / exception type, PASS и stop-rule без production-данных.

Отделите симптом от предположения в Apache CXF OAuth2 WWW-Authenticate realm

Самостоятельная пользовательская боль: невалидный realm способен изменить структуру заголовков ответа вместо того, чтобы быть отклонённым как одно значение. Механизм на проверяемом уровне: `AuthorizationUtils` строит WWW-Authenticate конкатенацией; без проверки CR/LF недоверенная строка пересекает границу header value. Поэтому рабочий invariant формулируется так: «realm проходит grammar/character validation до сборки ответа, а rejected value не попадает ни в headers, ни в body». Начните не с версии, а с границы доверия и наблюдаемого нарушения. GitHub Reviewed Advisory ghsa-xf62-wr5p-5p95 опубликована 2026-06-12, обновлена 2026-08-20; её summary — «Apache CXF OAuth2 HTTP Response Splitting via WWW-Authenticate Realm Injection». Запись задаёт технический сигнал и package boundary «maven/org.apache.cxf:cxf-rt-rs-security-oauth2 < 4.1.7 или 4.2.0–4.2.1; patched 4.1.7/4.2.2», но сама по себе не доказывает наличие vulnerable path в fork, факт эксплуатации, пользовательский спрос, индексацию или влияние на позиции.

Постройте матрицу применимости до любого теста

Инвентаризация должна ответить на четыре независимых вопроса: присутствует ли Apache CXF OAuth2 WWW-Authenticate realm, попадает ли resolved dependency/build в «maven/org.apache.cxf:cxf-rt-rs-security-oauth2 < 4.1.7 или 4.2.0–4.2.1; patched 4.1.7/4.2.2», достижим ли описанный code path и не перенесён ли фикс отдельно. Запишите только package manager lock, component build, feature/config state и происхождение образа; не делайте вывод по одному banner. Основная таблица применимости: realm class / builder status / header count / header names / body bytes / exception type. Отдельно пометьте `not_present`, `version_outside`, `path_disabled`, `backport_confirmed`, `needs_fixture`. Если версия неизвестна, это `unknown`, а не affected. Если upstream boundary и локальная сборка используют разные schemes, остановитесь и восстановите SBOM/commit provenance вместо угадывания.

Выполните обратимый fixture с двумя controls

Изолированный сценарий: локальный response-builder test передаёт safe realm и synthetic control-character cases, записывая только multimap заголовков. Все идентификаторы фиктивны; fixture выполняется в памяти и удаляется после теста. Positive control: ASCII realm без управляющих символов даёт один ожидаемый WWW-Authenticate header. Negative case воспроизводит только нарушение invariant, без реальных секретов, чужих объектов, внешних targets и инструкций по эксплуатации. До запуска зафиксируйте expected calls/writes/bytes, после — сравните фактические счётчики и верните temporary state через rollback или уничтожение disposable context. Не повышайте риск ради реализма: доказательство должно находиться на unit/handler/converter/policy boundary, где причина видна без рабочей инфраструктуры.

Сведите наблюдения в decision matrix

Строка результата содержит: realm class / builder status / header count / header names / body bytes / exception type. PASS означает: invalid realm детерминированно отклонён, дополнительных header names и body-фрагментов нет. FAIL допустимо фиксировать только когда negative fixture проходит до запрещённого эффекта, а positive control подтверждает, что test harness работоспособен. `Inconclusive` ставьте при missing build provenance, недоступном feature path, неоднозначном backport или сломанном control. Не заменяйте причинный результат отсутствием ошибок в журнале. Для каждого решения приложите hash fixture, test name, dependency resolution и нулевые/ожидаемые side-effect counters; содержимое секретов и персональные поля исключите.

Выберите безопасное действие и критерий остановки

При подтверждённой применимости предпочтительно перейти на исправленную ветку из официального источника, повторить тот же fixture и проверить регрессию штатного control. Компенсирующая мера принимается только если она реально разрывает описанный mechanism и имеет owner/expiry; общие WAF, ACL или log alerts не считаются автоматическим исправлением. Жёсткая stop-rule: не отправлять malformed realm через сеть и не проверять против стороннего OAuth endpoint. Эскалируйте maintainer/security owner, если нужен production trace, реальные credentials, внешний target, необратимая миграция или решение расходится с upstream advisory. Минимальный пакет поддержки: component/build, boundary decision, включённые features, обезличенная matrix, fixture hash, PASS/FAIL/Unknown, control result и ссылка на два прямых источника.

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

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

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

Ответы

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

Ваш ответ

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

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

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