Hoch

HAPI FHIR: SHCParser DEFLATE infinite loop causes denial of service

  • Veröffentlicht: 17.09.2026
  • Aktualisiert: 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)

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
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

Verweise

CVSS-Wert 7.5/10
CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Schwäche (CWE)
CWE-20, CWE-400, CWE-835
Plattform
Java / Kotlin (Maven)
Paket
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
Veröffentlicht
17.09.2026
Aktualisiert
11.10.2026 13:20

Quellen und Lizenzen

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

Schwachstellenhistorie: ca.uhn.hapi.fhir:org.hl7.fhir.r5

Alle veröffentlichten Schwachstellen dieses Pakets (Java / Kotlin (Maven)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.

Alle (10) im Archiv
Einträge insgesamt
10
Erste → letzte
01.2023 09.2026
Ohne Fix
0
In Angriffen ausgenutzt
0

Verteilung nach Schweregrad

  • Kritisch 2
  • Hoch 8

Veröffentlichungen pro Jahr

  1. 2023: 2
  2. 2024: 3
  3. 2025: 0
  4. 2026: 5
Schweregrad:
  1. HAPI FHIR: SHCParser DEFLATE infinite loop causes denial of service dieser Eintrag
    Hoch · 7.5 CVE-2026-81876 < 6.9.12 6.9.12
  2. Hoch · 7.5 CVE-2026-49485 >= 6.9.5, < 6.9.9, < 6.9.4.2 6.9.9, 6.9.4.2
  3. Kritisch · 9.8 CVE-2026-33180 < 6.9.0 6.9.0
  4. Hoch · 8.6 CVE-2024-52007 < 6.4.0 6.4.0
  5. Hoch · 9.8 CVE-2024-51132 < 6.4.0 6.4.0
  6. Hoch · 8.6 CVE-2024-45294 < 6.3.23 6.3.23
  7. Hoch · 7.5 CVE-2023-28465 < 5.6.106 5.6.106
  8. Kritisch · 9.1 CVE-2023-24057 < 5.6.92 5.6.92

Erkennen Sie Schwachstellen in Ihrer Anwendung

Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.