<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 15:23:21 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-81876</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-81876</link>
      <description>&lt;p&gt;HAPI FHIR is a complete implementation of the HL7 FHIR standard for healthcare interoperability in Java. Prior to version 6.9.12, SHCParser in org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/SHCParser.java can enter an infinite loop while processing attacker-controlled Smart Health Card JWT content whose header contains zip: &amp;#34;DEF&amp;#34; and whose raw-DEFLATE payload is empty or truncated. SHCParser.decodeJWT() reaches SHCParser.inflate(), where Inflater.inflate() can return zero while Inflater.finished() remains false and Inflater.needsInput() is true. The loop also lacks an Inflater.needsDictionary() termination check, SHCParser.decompress() contains the same zero-progress pattern, and ResourceChecker.java can reach SHC parsing during file-format detection. A malformed validation request can pin a JVM worker thread indefinitely, and concurrent requests can exhaust all validation workers. This issue is fixed in version 6.9.12.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;HAPI FHIR is a complete implementation of the HL7 FHIR standard for healthcare interoperability in Java. Prior to version 6.9.12, SHCParser in org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/SHCParser.java can enter an infinite loop while processing attacker-controlled Smart Health Card JWT content whose header contains zip: &amp;#34;DEF&amp;#34; and whose raw-DEFLATE payload is empty or truncated. SHCParser.decodeJWT() reaches SHCParser.inflate(), where Inflater.inflate() can return zero while Inflater.finished() remains false and Inflater.needsInput() is true. The loop also lacks an Inflater.needsDictionary() termination check, SHCParser.decompress() contains the same zero-progress pattern, and ResourceChecker.java can reach SHC parsing during file-format detection. A malformed validation request can pin a JVM worker thread indefinitely, and concurrent requests can exhaust all validation workers. This issue is fixed in version 6.9.12.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-81876</guid>
    </item>
    <item>
      <title>GHSA-gq9c-wmrm-5hvr — HAPI FHIR: SHCParser DEFLATE infinite loop causes denial of service</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-gq9c-wmrm-5hvr</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Maven: ca.uhn.hapi.fhir:org.hl7.fhir.r5, Maven: ca.uhn.hapi.fhir:org.hl7.fhir.validation, Maven: ca.uhn.hapi.fhir:org.hl7.fhir.validation.cli&lt;/p&gt;
&lt;p&gt;### Summary
A malformed Smart Health Card (SHC) JWT with `zip: &amp;#34;DEF&amp;#34;` 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.&lt;/p&gt;
&lt;p&gt;### Details
The vulnerable code is in `org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/SHCParser.java`.&lt;/p&gt;
&lt;p&gt;`decodeJWT()` inflates the JWT payload when the header contains `&amp;#34;zip&amp;#34;:&amp;#34;DEF&amp;#34;`:&lt;/p&gt;
&lt;p&gt;```java
// SHCParser.java:300-302
if (&amp;#34;DEF&amp;#34;.equals(res.header.asString(&amp;#34;zip&amp;#34;))) {
  payloadJson = inflate(payloadJson);
}
```&lt;/p&gt;
&lt;p&gt;`inflate()` loops only on `!inflater.finished()` and does not check `inflater.needsInput()`, `inflater.needsDictionary()`, or zero-progress output:&lt;/p&gt;
&lt;p&gt;```java
// SHCParser.java:455-468
while (!inflater.finished()) {
  final int count = inflater.inflate(buffer);
  outputStream.write(buffer, 0, count);
}
```&lt;/p&gt;
&lt;p&gt;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`.&lt;/p&gt;
&lt;p&gt;The validator reaches this path during SHC validation and during file-format detection for SHC-looking input (`ResourceChecker.java:115-118`).&lt;/p&gt;
&lt;p&gt;### PoC
Compile the project, then run a minimal local harness that calls:&lt;/p&gt;
&lt;p&gt;```java
SHCParser.inflate(new byte[0]);
```&lt;/p&gt;
&lt;p&gt;This never returns. Local verification:&lt;/p&gt;
&lt;p&gt;```bash…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Maven: ca.uhn.hapi.fhir:org.hl7.fhir.r5, Maven: ca.uhn.hapi.fhir:org.hl7.fhir.validation, Maven: ca.uhn.hapi.fhir:org.hl7.fhir.validation.cli&lt;/p&gt;
&lt;p&gt;### Summary
A malformed Smart Health Card (SHC) JWT with `zip: &amp;#34;DEF&amp;#34;` 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.&lt;/p&gt;
&lt;p&gt;### Details
The vulnerable code is in `org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/elementmodel/SHCParser.java`.&lt;/p&gt;
&lt;p&gt;`decodeJWT()` inflates the JWT payload when the header contains `&amp;#34;zip&amp;#34;:&amp;#34;DEF&amp;#34;`:&lt;/p&gt;
&lt;p&gt;```java
// SHCParser.java:300-302
if (&amp;#34;DEF&amp;#34;.equals(res.header.asString(&amp;#34;zip&amp;#34;))) {
  payloadJson = inflate(payloadJson);
}
```&lt;/p&gt;
&lt;p&gt;`inflate()` loops only on `!inflater.finished()` and does not check `inflater.needsInput()`, `inflater.needsDictionary()`, or zero-progress output:&lt;/p&gt;
&lt;p&gt;```java
// SHCParser.java:455-468
while (!inflater.finished()) {
  final int count = inflater.inflate(buffer);
  outputStream.write(buffer, 0, count);
}
```&lt;/p&gt;
&lt;p&gt;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`.&lt;/p&gt;
&lt;p&gt;The validator reaches this path during SHC validation and during file-format detection for SHC-looking input (`ResourceChecker.java:115-118`).&lt;/p&gt;
&lt;p&gt;### PoC
Compile the project, then run a minimal local harness that calls:&lt;/p&gt;
&lt;p&gt;```java
SHCParser.inflate(new byte[0]);
```&lt;/p&gt;
&lt;p&gt;This never returns. Local verification:&lt;/p&gt;
&lt;p&gt;```bash…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-gq9c-wmrm-5hvr</guid>
    </item>
  </channel>
</rss>
