Защитная инструкция по FHIRPath и ghsa-7cmj-v6x8-frvv: применимость, обратимый тест границы «ограничение сложности regex, длины входа и времени одного FHIRPath-выражения», измеримый исход, stop-rule и обезличенный пакет поддержки.
Сначала определите применимость для FHIRPath
Проверяемая граница здесь — ограничение сложности regex, длины входа и времени одного FHIRPath-выражения. Зафиксируйте runtime version, digest сборки, способ поставки и включённость именно этого пути. Reviewed advisory перечисляет «ca.uhn.hapi.fhir:org.hl7.fhir.dstu2 >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016may >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.dstu3 >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.r4 >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.r4b >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.r5 >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.validation >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.validation.cli >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.dstu2 < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016may < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.dstu3 < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.r4 < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.r4b < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.r5 < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.validation < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.validation.cli < 6.9.4.2 → исправлено в 6.9.4.2», но одна запись в lockfile не доказывает версию загруженного процесса. Отдельно укажите, кто может достичь функции и какие защитные слои стоят перед ней. Если provenance, конфигурация или достижимость не подтверждены, итоговый статус должен быть unknown, а не vulnerable или safe. Оценка advisory не является доказательством эксплуатации, ущерба или применимости к конкретному серверу.
Что подтверждает GHSA-7cmj-v6x8-frvv, а что остаётся неизвестным
GitHub Reviewed Advisory опубликована 2026-07-09, обновлена 2026-07-09 и описывает: org.hl7.fhir.core: ReDoS via FHIRPath matches()/replaceMatches() in FHIR Validator HTTP Endpoint. Для пакетов указана граница «ca.uhn.hapi.fhir:org.hl7.fhir.dstu2 >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016may >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.dstu3 >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.r4 >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.r4b >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.r5 >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.validation >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.validation.cli >= 6.9.5, < 6.9.9 → исправлено в 6.9.9; ca.uhn.hapi.fhir:org.hl7.fhir.dstu2 < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016may < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.dstu3 < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.r4 < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.r4b < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.r5 < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.validation < 6.9.4.2 → исправлено в 6.9.4.2; ca.uhn.hapi.fhir:org.hl7.fhir.validation.cli < 6.9.4.2 → исправлено в 6.9.4.2». Upstream hapifhir/org.hl7.fhir.core подтверждает происхождение проекта; даты, механизм и версии берутся из advisory, а не выводятся по README или поисковому сниппету. Источники не сообщают состояние вашей установки, частоту проблемы, наличие атаки, популярность запроса, индексацию или позицию страницы. Любой community-пост можно использовать лишь как лид для перепроверки, но не как основание технического вывода.
Диагностическая модель: ограничение сложности regex, длины входа и времени одного FHIRPath-выражения
Пользовательская боль формулируется узко: специально построенное регулярное выражение может надолго занять поток validator endpoint. Наблюдайте не общий признак «работает/не работает», а независимые контрольные точки из артефакта «график pattern-class / input-length / elapsed / cpu-time / result / termination-reason». Положительная ветвь нужна для отличия защиты от сломанного стенда: простое anchored выражение корректно возвращает ожидаемый boolean. Граничную ветвь запускают после baseline, один раз и с заранее записанными лимитами. Такой порядок отделяет сам механизм от сетевого сбоя, неверной роли, старого cache, несовпадения конфигурации или ошибки fixture. Все marker-значения должны быть бессмысленными и не пригодными как credential.
Один обратимый опыт с измеримым результатом
Подготовьте короткие synthetic strings, обычное выражение и ступенчатая серия граничных patterns без больших payload. После снимка baseline нужно в дочернем процессе измерить normal pattern, затем три ограниченные ступени и остановиться при заранее заданном latency ceiling. До запуска задайте пределы wall-time, CPU, памяти, файлов, сокетов и числа запросов, подходящие этому fixture. Ожидаемое наблюдение формулируется заранее: normal-control завершается быстро, граничная серия либо отклоняется валидатором, либо прерывается до исчерпания общего бюджета. Не используйте production tokens, реальные документы, пользовательские журналы, публичные цели или чужие адреса. После первой граничной точки не увеличивайте нагрузку и не расширяйте вход: очистите только созданные ресурсы, повторите normal-control и сравните состояние с первоначальным digest.
Как вынести вердикт из контрольных точек
Основной результат — график pattern-class / input-length / elapsed / cpu-time / result / termination-reason. Passed требует одновременно защитного исхода «normal-control завершается быстро, граничная серия либо отклоняется валидатором, либо прерывается до исчерпания общего бюджета», успешного normal-control и возврата к baseline. Failed допустим только при воспроизводимом нарушении той же границы на том же fixture; один timeout или неожиданный status недостаточен. Not-applicable требует доказанной runtime-версии вне advisory range либо документированно недостижимого кода. Unknown сохраняют при неполном provenance, нестабильной среде, отсутствующем trace или несогласованных показаниях. Эти четыре исхода нельзя заменять одним severity score.
Stop-rule, обновление и обезличенный пакет поддержки
Жёсткий stop-rule: не запускать следующую ступень после 50 процентов временного потолка. При попадании runtime в затронутый range обновление берут только из доверенного канала hapifhir/org.hl7.fhir.core, затем повторяют прежний fixture с теми же лимитами и normal-control. В поддержку передают версию процесса, build digest, ветвь конфигурации, expected/observed, класс исключения или status, лимиты, временную шкалу и хэши synthetic fixtures. Удалите cookies, ключи, IP, внутренние имена, абсолютные пути и содержимое файлов. Этот материал описывает безопасную проверку и не является инструкцией по эксплуатации, обещанием нулевого риска или универсальным доказательством защищённости.
Материал подготовлен редакцией VOne с помощью ИИ; ссылки, даты, диапазоны версий, безопасный опыт и отсутствие рекламных обещаний затем перепроверены по прямым источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-7cmj-v6x8-frvv проверено 2026-08-31
- Upstream-репозиторий hapifhir/org.hl7.fhir.core проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.