Alta

HAPI FHIR: SHCParser DEFLATE infinite loop causes denial of service

  • Publicada: 17.09.2026
  • Actualizado: 11.10.2026 13:20

Summary

A malformed Smart Health Card (SHC) JWT with zip: "DEF" and an empty or truncated DEFLATE payload causes SHCParser.inflate() to loop forever. This allows an attacker who can submit SHC content for validation to pin a JVM worker thread indefinitely, causing denial of service.

Details

The vulnerable code is in org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/SHCParser.java.

decodeJWT() inflates the JWT payload when the header contains "zip":"DEF":

java
// SHCParser.java:300-302
if ("DEF".equals(res.header.asString("zip"))) {
  payloadJson = inflate(payloadJson);
}

inflate() loops only on !inflater.finished() and does not check inflater.needsInput(), inflater.needsDictionary(), or zero-progress output:

java
// SHCParser.java:455-468
while (!inflater.finished()) {
  final int count = inflater.inflate(buffer);
  outputStream.write(buffer, 0, count);
}

For empty or truncated raw DEFLATE input, Inflater.inflate() returns 0, finished() remains false, and needsInput() becomes true, producing an infinite tight loop. The same unsafe loop pattern also exists in decompress() at SHCParser.java:410-423.

The validator reaches this path during SHC validation and during file-format detection for SHC-looking input (ResourceChecker.java:115-118).

PoC

Compile the project, then run a minimal local harness that calls:

java
SHCParser.inflate(new byte[0]);

This never returns. Local verification:

bash
timeout 3s java -cp ... VerifyDoSFindings shcHang
echo $?
# 124 = timeout killed the hung process

A JWT PoC uses:

  • header: Base64URL({"zip":"DEF"})
  • payload: empty or truncated raw DEFLATE bytes
  • signature: arbitrary

Submit the resulting token as SHC content, for example via a .shc file or content beginning with shc:/ that reaches the validator's SHC detection path.

Impact

This is a denial-of-service vulnerability. A single malformed SHC validation request can consume a worker thread indefinitely. In services that validate uploaded SHC content, a small number of concurrent malformed requests can exhaust all validation workers.

Credits

  • Thai Son Dinh from VinSOC Labs (R&D)

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Java / Kotlin (Maven) ca.uhn.hapi.fhir:org.hl7.fhir.r5 < 6.9.12 6.9.12
Java / Kotlin (Maven) ca.uhn.hapi.fhir:org.hl7.fhir.validation < 6.9.12 6.9.12
Java / Kotlin (Maven) ca.uhn.hapi.fhir:org.hl7.fhir.validation.cli < 6.9.12 6.9.12

Referencias

Puntuación CVSS 7.5/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Debilidad (CWE)
CWE-20, CWE-400, CWE-835
Plataforma
Java / Kotlin (Maven)
Paquete
ca.uhn.hapi.fhir:org.hl7.fhir.r5, ca.uhn.hapi.fhir:org.hl7.fhir.validation, ca.uhn.hapi.fhir:org.hl7.fhir.validation.cli
Publicada
17.09.2026
Actualizado
11.10.2026 13:20

Fuentes y licencias

OSV / GitHub Advisory Database - GHSA-gq9c-wmrm-5hvr - CC BY 4.0

Historial de vulnerabilidades: ca.uhn.hapi.fhir:org.hl7.fhir.validation

Todas las vulnerabilidades publicadas de este paquete (Java / Kotlin (Maven)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (10) en el archivo
Entradas en total
10
Primera → última
01.2023 09.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Crítica 3
  • Alta 7

Divulgaciones por año

  1. 2023: 2
  2. 2024: 1
  3. 2025: 0
  4. 2026: 7
Gravedad:
  1. HAPI FHIR: SHCParser DEFLATE infinite loop causes denial of service esta entrada
    Alta · 7.5 CVE-2026-81876 < 6.9.12 6.9.12
  2. Alta · 7.5 CVE-2026-49485 >= 6.9.5, < 6.9.9, < 6.9.4.2 6.9.9, 6.9.4.2
  3. Crítica · 9.8 CVE-2026-33180 < 6.9.0 6.9.0
  4. Alta · 9.8 CVE-2024-51132 < 6.4.0 6.4.0
  5. Alta · 7.5 CVE-2023-28465 < 5.6.106 5.6.106
  6. Crítica · 9.1 CVE-2023-24057 < 5.6.92 5.6.92

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.