CVE-2026-49485
HAPI FHIR: ReDoS via FHIRPath matches()/replaceMatches() in FHIR Validator HTTP Endpoint
HAPI FHIR is a complete implementation of the HL7 FHIR standard for healthcare interoperability in Java. Prior to 6.9.9 and 6.9.4.2, all implementations of FHIRPathEngine accept arbitrary FHIRPath expressions and evaluate them without input validation, and the FHIRPath functions matches(), matchesFull(), and replaceMatches() pass user-controlled regular expressions to Java's Pattern.compile() and String.replaceAll() through an incomplete timeout utility. An attacker can send a resource containing an evil regex pattern that causes catastrophic backtracking, exhausting CPU resources and causing denial of service in the FHIR Validator HTTP endpoint and affected org.hl7.fhir.* modules. This issue is fixed in versions 6.9.9 and 6.9.4.2.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
HAPI FHIR: ReDoS via FHIRPath matches()/replaceMatches() in FHIR Validator HTTP Endpoint
HAPI FHIR is a complete implementation of the HL7 FHIR standard for healthcare interoperability in Java. Prior to 6.9.9 and 6.9.4.2, all implementations of FHIRPathEngine accept arbitrary FHIRPath expressions and evaluate them without input validation, and the FHIRPath functions matches(), matchesFull(), and replaceMatches() pass user-controlled regular expressions to Java's Pattern.compile() and String.replaceAll() through an incomplete timeout utility. An attacker can send a resource containing an evil regex pattern that causes catastrophic backtracking, exhausting CPU resources and causing denial of service in the FHIR Validator HTTP endpoint and affected org.hl7.fhir.* modules. This issue is fixed in versions 6.9.9 and 6.9.4.2.
- Record
CVE-2026-49485- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333, CWE-400
- Updated
- 2026-11-02
EUVDEUVD-2026-45338
7.5
HAPI FHIR is a complete implementation of the HL7 FHIR standard for healthcare interoperability in Java. Prior to 6.9.9 and 6.9.4.2, all implementations of FHIRPathEngine accept arbitrary FHIRPath expressions and evaluate them without input validation, and the FHIRPath functions matches(), matchesFull(), and replaceMatches() pass user-controlled regular expressions to Java's Pattern.compile() and String.replaceAll() through an incomplete timeout utility. An attacker can send a resource containing an evil regex pattern that causes catastrophic backtracking, exhausting CPU resources and causing denial of service in the FHIR Validator HTTP endpoint and affected org.hl7.fhir.* modules. This issue is fixed in versions 6.9.9 and 6.9.4.2.
- Record
EUVD-2026-45338- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-7cmj-v6x8-frvv
7.5
org.hl7.fhir.core: ReDoS via FHIRPath matches()/replaceMatches() in FHIR Validator HTTP Endpoint
Summary
All implementations of FHIRPathEngine accept arbitrary FHIRPath expressions and evaluate them without input validation. The utility intended to secure this evaluation did so incorrectly, and did not fully cover all places in which evaluation was being done. An attacker can send a resource containing an evil regex pattern that causes catastrophic backtracking, exhausting system resources, and causing Denial-of-Service.
Details
The vulnerability exists in regex execution in FHIRPathEngine implementations across multiple code modules. The FHIRPath functions matches(), matchesFull(), and replaceMatches() pass user-controlled regular expressions to Java's Pattern.compile() and String.replaceAll() through a utility class designed to time out after a specified interval. That utility correctly cancelled a single executor thread and returned with an exception, but the execution within the thread had no means to listen for this cancellation and would persist. Furthermore, three modules contained method calls in FHIRPathEngine that were not protected by this utility class.
Why this is exploitable:
Java's Pattern.compile() with a pattern like (a+)+$ against input "aaaaaaaaaaaaaaaaaaaaaa!" causes exponential backtracking (O(2^n) time complexity).
Impact
CPU Exhaustion: The exponential backtracking in Java's regex engine consumes 100% of a CPU core for the duration of the hang (effectively infinite for sufficiently long input strings) for callers of FHIRPathEngine.
- Record
GHSA-7cmj-v6x8-frvv- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-1333
- Updated
- 2026-11-02
NVD
7.5
HAPI FHIR is a complete implementation of the HL7 FHIR standard for healthcare interoperability in Java. Prior to 6.9.9 and 6.9.4.2, all implementations of FHIRPathEngine accept arbitrary FHIRPath expressions and evaluate them without input validation, and the FHIRPath functions matches(), matchesFull(), and replaceMatches() pass user-controlled regular expressions to Java's Pattern.compile() and String.replaceAll() through an incomplete timeout utility. An attacker can send a resource containing an evil regex pattern that causes catastrophic backtracking, exhausting CPU resources and causing denial of service in the FHIR Validator HTTP endpoint and affected org.hl7.fhir.* modules. This issue is fixed in versions 6.9.9 and 6.9.4.2.
- Record
CVE-2026-49485- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-1333
- Updated
- 2026-11-02
OSV
7.5
HAPI FHIR: ReDoS via FHIRPath matches()/replaceMatches() in FHIR Validator HTTP Endpoint
HAPI FHIR is a complete implementation of the HL7 FHIR standard for healthcare interoperability in Java. Prior to 6.9.9 and 6.9.4.2, all implementations of FHIRPathEngine accept arbitrary FHIRPath expressions and evaluate them without input validation, and the FHIRPath functions matches(), matchesFull(), and replaceMatches() pass user-controlled regular expressions to Java's Pattern.compile() and String.replaceAll() through an incomplete timeout utility. An attacker can send a resource containing an evil regex pattern that causes catastrophic backtracking, exhausting CPU resources and causing denial of service in the FHIR Validator HTTP endpoint and affected org.hl7.fhir.* modules. This issue is fixed in versions 6.9.9 and 6.9.4.2.
- Record
CVE-2026-49485- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333, CWE-400
- Updated
- 2026-11-02
OSVGHSA-7cmj-v6x8-frvv
7.5
org.hl7.fhir.core: ReDoS via FHIRPath matches()/replaceMatches() in FHIR Validator HTTP Endpoint
Summary
All implementations of FHIRPathEngine accept arbitrary FHIRPath expressions and evaluate them without input validation. The utility intended to secure this evaluation did so incorrectly, and did not fully cover all places in which evaluation was being done. An attacker can send a resource containing an evil regex pattern that causes catastrophic backtracking, exhausting system resources, and causing Denial-of-Service.
Details
The vulnerability exists in regex execution in FHIRPathEngine implementations across multiple code modules. The FHIRPath functions matches(), matchesFull(), and replaceMatches() pass user-controlled regular expressions to Java's Pattern.compile() and String.replaceAll() through a utility class designed to time out after a specified interval. That utility correctly cancelled a single executor thread and returned with an exception, but the execution within the thread had no means to listen for this cancellation and would persist. Furthermore, three modules contained method calls in FHIRPathEngine that were not protected by this utility class.
Why this is exploitable:
Java's Pattern.compile() with a pattern like (a+)+$ against input "aaaaaaaaaaaaaaaaaaaaaa!" causes exponential backtracking (O(2^n) time complexity).
Impact
CPU Exhaustion: The exponential backtracking in Java's regex engine consumes 100% of a CPU core for the duration of the hang (effectively infinite for sufficiently long input strings) for callers of FHIRPathEngine.
- Record
GHSA-7cmj-v6x8-frvv- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1333, CWE-400
- Updated
- 2026-11-02
OSVROOT-APP-MAVEN-CVE-2026-49485 No score
CVE-2026-49485 in ca.uhn.hapi.fhir:org.hl7.fhir.validation - Patched by Root
Root has patched CVE-2026-49485 in the ca.uhn.hapi.fhir:org.hl7.fhir.validation package for Root:Maven. Multiple fixed versions available.
- Record
ROOT-APP-MAVEN-CVE-2026-49485- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2Maven |
6.9.5 up to 6.9.9 | 6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016mayMaven |
6.9.5 up to 6.9.9 | 6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu3Maven |
6.9.5 up to 6.9.9 | 6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4Maven |
6.9.5 up to 6.9.9 | 6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4bMaven |
6.9.5 up to 6.9.9 | 6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.r5Maven |
6.9.5 up to 6.9.9 | 6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.validationMaven |
6.9.5 up to 6.9.9 | 6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.validation.cliMaven |
6.9.5 up to 6.9.9 | 6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2Maven |
before 6.9.4.2 | 6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016mayMaven |
before 6.9.4.2 | 6.9.4.2 |
Show 35 moreShow less
| Package | Affected | Fixed |
|---|---|---|
ca.uhn.hapi.fhir:org.hl7.fhir.dstu3Maven |
before 6.9.4.2 | 6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4Maven |
before 6.9.4.2 | 6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4bMaven |
before 6.9.4.2 | 6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.r5Maven |
before 6.9.4.2 | 6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.validationMaven |
before 6.9.4.2 | 6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.validation.cliMaven |
before 6.9.4.2 | 6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2Maven |
6.9.5 up to 6.9.9, plus listed versions 6.9.66.9.76.9.8 |
6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016mayMaven |
6.9.5 up to 6.9.9, plus listed versions 6.9.66.9.76.9.8 |
6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu3Maven |
6.9.5 up to 6.9.9, plus listed versions 6.9.66.9.76.9.8 |
6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4Maven |
6.9.5 up to 6.9.9, plus listed versions 6.9.66.9.76.9.8 |
6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4bMaven |
6.9.5 up to 6.9.9, plus listed versions 6.9.66.9.76.9.8 |
6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.r5Maven |
6.9.5 up to 6.9.9, plus listed versions 6.9.66.9.76.9.8 |
6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.validationMaven |
6.9.5 up to 6.9.9, plus listed versions 6.9.66.9.76.9.8 |
6.9.9 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2Maven |
before 6.9.4.2, plus listed versions 0.0.10.0.140.0.20.1.181.0.0 Show 45 moreShow less1.1.674.0.04.0.14.0.24.0.34.1.04.2.05.0.05.0.105.0.115.0.125.0.135.0.145.0.155.0.165.0.175.0.185.0.195.0.205.0.215.0.225.0.75.0.85.0.95.1.05.1.15.1.105.1.115.1.125.1.135.1.145.1.155.1.165.1.175.1.185.1.195.1.25.1.205.1.215.1.225.1.35.1.45.1.55.1.65.1.7 |
6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016mayMaven |
before 6.9.4.2, plus listed versions 0.0.10.0.140.0.20.1.181.0.0 Show 45 moreShow less1.1.674.0.04.0.14.0.24.0.34.1.04.2.05.0.05.0.105.0.115.0.125.0.135.0.145.0.155.0.165.0.175.0.185.0.195.0.205.0.215.0.225.0.75.0.85.0.95.1.05.1.15.1.105.1.115.1.125.1.135.1.145.1.155.1.165.1.175.1.185.1.195.1.25.1.205.1.215.1.225.1.35.1.45.1.55.1.65.1.7 |
6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu3Maven |
before 6.9.4.2, plus listed versions 0.0.10.0.140.0.20.1.181.0.0 Show 45 moreShow less1.1.674.0.04.0.14.0.24.0.34.1.04.2.05.0.05.0.105.0.115.0.125.0.135.0.145.0.155.0.165.0.175.0.185.0.195.0.205.0.215.0.225.0.75.0.85.0.95.1.05.1.15.1.105.1.115.1.125.1.135.1.145.1.155.1.165.1.175.1.185.1.195.1.25.1.205.1.215.1.225.1.35.1.45.1.55.1.65.1.7 |
6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4Maven |
before 6.9.4.2, plus listed versions 0.0.10.0.140.0.20.1.181.0.0 Show 45 moreShow less1.1.674.0.04.0.14.0.24.0.34.1.04.2.05.0.05.0.105.0.115.0.125.0.135.0.145.0.155.0.165.0.175.0.185.0.195.0.205.0.215.0.225.0.75.0.85.0.95.1.05.1.15.1.105.1.115.1.125.1.135.1.145.1.155.1.165.1.175.1.185.1.195.1.25.1.205.1.215.1.225.1.35.1.45.1.55.1.65.1.7 |
6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4bMaven |
before 6.9.4.2, plus listed versions 5.6.1005.6.1015.6.1025.6.1035.6.104 Show 45 moreShow less5.6.1055.6.1065.6.1075.6.1085.6.1095.6.1105.6.1115.6.1125.6.1135.6.1145.6.1155.6.1165.6.1175.6.225.6.235.6.245.6.255.6.265.6.275.6.285.6.295.6.305.6.315.6.325.6.335.6.345.6.355.6.365.6.375.6.385.6.395.6.405.6.415.6.425.6.435.6.445.6.455.6.465.6.475.6.485.6.505.6.515.6.525.6.535.6.54 |
6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.r5Maven |
before 6.9.4.2, plus listed versions 0.0.10.0.140.0.20.1.181.0.0 Show 45 moreShow less1.1.674.0.04.0.14.0.24.0.34.1.04.2.05.0.05.0.105.0.115.0.125.0.135.0.145.0.155.0.165.0.175.0.185.0.195.0.205.0.215.0.225.0.75.0.85.0.95.1.05.1.15.1.105.1.115.1.125.1.135.1.145.1.155.1.165.1.175.1.185.1.195.1.25.1.205.1.215.1.225.1.35.1.45.1.55.1.65.1.7 |
6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.validationMaven |
before 6.9.4.2, plus listed versions 0.0.10.0.140.0.20.1.181.0.0 Show 45 moreShow less1.1.674.0.04.0.14.0.24.0.34.1.04.2.05.0.05.0.105.0.115.0.125.0.135.0.145.0.155.0.165.0.175.0.185.0.195.0.205.0.215.0.225.0.75.0.85.0.95.1.05.1.15.1.105.1.115.1.125.1.135.1.145.1.155.1.165.1.175.1.185.1.195.1.25.1.205.1.215.1.225.1.35.1.45.1.55.1.65.1.7 |
6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.validation.cliMaven |
before 6.9.4.2, plus listed versions 4.0.04.0.14.0.24.0.34.1.04.2.05.0.0 |
6.9.4.2 |
ca.uhn.hapi.fhir:org.hl7.fhir.validationRoot:Maven |
before 6.7.9-aikido.10 | 6.7.9-aikido.106.7.9-aikido.96.9.0-aikido.106.9.4.1-aikido.36.9.0-aikido.116.4.0-aikido.26.9.4.1-aikido.26.0.1-aikido.26.0.1-aikido.36.0.1-aikido.4 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2Root:Maven |
before 6.7.9-aikido.10 | 6.7.9-aikido.106.7.9-aikido.96.9.0-aikido.106.9.4.1-aikido.36.5.27-aikido.16.4.0-aikido.26.9.4.1-aikido.26.0.1-aikido.26.9.0-aikido.116.0.1-aikido.36.0.1-aikido.4 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016mayRoot:Maven |
before 6.7.9-aikido.10 | 6.7.9-aikido.106.7.9-aikido.96.9.0-aikido.106.9.4.1-aikido.36.4.0-aikido.26.9.4.1-aikido.26.0.1-aikido.26.9.0-aikido.116.0.1-aikido.36.0.1-aikido.4 |
ca.uhn.hapi.fhir:org.hl7.fhir.r5Root:Maven |
before 6.7.9-aikido.10 | 6.7.9-aikido.106.7.9-aikido.96.9.0-aikido.106.9.4.1-aikido.36.4.0-aikido.26.9.4.1-aikido.26.0.1-aikido.26.9.0-aikido.116.0.1-aikido.36.0.1-aikido.4 |
ca.uhn.hapi.fhir:org.hl7.fhir.dstu3Root:Maven |
before 6.7.9-aikido.10 | 6.7.9-aikido.106.7.9-aikido.96.9.0-aikido.106.9.4.1-aikido.36.9.0-aikido.116.5.27-aikido.16.4.0-aikido.26.9.4.1-aikido.26.0.1-aikido.26.0.1-aikido.36.0.1-aikido.4 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4Root:Maven |
before 6.7.9-aikido.10 | 6.7.9-aikido.106.7.9-aikido.96.9.0-aikido.106.9.4.1-aikido.36.4.0-aikido.26.9.4.1-aikido.26.0.1-aikido.26.9.0-aikido.116.0.1-aikido.36.0.1-aikido.4 |
ca.uhn.hapi.fhir:org.hl7.fhir.r4bRoot:Maven |
before 6.7.9-aikido.10 | 6.7.9-aikido.106.7.9-aikido.96.9.0-aikido.106.9.4.1-aikido.36.5.27-aikido.16.4.0-aikido.26.9.4.1-aikido.26.0.1-aikido.26.9.0-aikido.116.0.1-aikido.36.0.1-aikido.4 |
io.root.ca.uhn.hapi.fhir:org.hl7.fhir.validationRoot:Maven |
before 6.7.9-root.io.10 | 6.7.9-root.io.106.7.9-root.io.96.9.0-root.io.106.9.4.1-root.io.36.9.0-root.io.116.4.0-root.io.26.9.4.1-root.io.26.0.1-root.io.26.0.1-root.io.36.0.1-root.io.4 |
io.root.ca.uhn.hapi.fhir:org.hl7.fhir.dstu2Root:Maven |
before 6.7.9-root.io.10 | 6.7.9-root.io.106.7.9-root.io.96.9.0-root.io.106.9.4.1-root.io.36.9.0-root.io.116.5.27-root.io.16.4.0-root.io.26.9.4.1-root.io.26.0.1-root.io.26.0.1-root.io.36.0.1-root.io.4 |
io.root.ca.uhn.hapi.fhir:org.hl7.fhir.dstu2016mayRoot:Maven |
before 6.7.9-root.io.10 | 6.7.9-root.io.106.7.9-root.io.96.9.0-root.io.106.9.4.1-root.io.36.9.0-root.io.116.4.0-root.io.26.9.4.1-root.io.26.0.1-root.io.26.0.1-root.io.36.0.1-root.io.4 |
io.root.ca.uhn.hapi.fhir:org.hl7.fhir.r5Root:Maven |
before 6.7.9-root.io.10 | 6.7.9-root.io.106.7.9-root.io.96.9.0-root.io.106.9.4.1-root.io.36.9.0-root.io.116.4.0-root.io.26.9.4.1-root.io.26.0.1-root.io.26.0.1-root.io.36.0.1-root.io.4 |
io.root.ca.uhn.hapi.fhir:org.hl7.fhir.dstu3Root:Maven |
before 6.7.9-root.io.10 | 6.7.9-root.io.106.7.9-root.io.96.9.0-root.io.106.9.4.1-root.io.36.9.0-root.io.116.5.27-root.io.16.4.0-root.io.26.9.4.1-root.io.26.0.1-root.io.26.0.1-root.io.36.0.1-root.io.4 |
io.root.ca.uhn.hapi.fhir:org.hl7.fhir.r4Root:Maven |
before 6.7.9-root.io.10 | 6.7.9-root.io.106.7.9-root.io.96.9.0-root.io.106.9.4.1-root.io.36.9.0-root.io.116.4.0-root.io.26.9.4.1-root.io.26.0.1-root.io.26.0.1-root.io.36.0.1-root.io.4 |
io.root.ca.uhn.hapi.fhir:org.hl7.fhir.r4bRoot:Maven |
before 6.7.9-root.io.10 | 6.7.9-root.io.106.7.9-root.io.96.9.0-root.io.106.9.4.1-root.io.36.9.0-root.io.116.5.27-root.io.16.4.0-root.io.26.9.4.1-root.io.26.0.1-root.io.26.0.1-root.io.36.0.1-root.io.4 |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-49485 is a high vulnerability (CVSS 7.5) in Hapifhir Org.hl7.fhir.core, published July 9, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.68%, the 52nd percentile. Fixed in ca.uhn.hapi.fhir:org.hl7.fhir.dstu2 6.9.9.
References
github.com/hapifhir/org.hl7.fhir.core/security/advisories/GHSA-7cmj-v6x8-frvv
github.com/hapifhir/org.hl7.fhir.core/pull/2463
github.com/hapifhir/org.hl7.fhir.core/commit/109c88837c032ef399b2eb87ddde86692065cf41
github.com/hapifhir/org.hl7.fhir.core/commit/e08982d2b6f6dcd6c670a762d9cf999179fbe4ed
github.com/hapifhir/org.hl7.fhir.core/releases/tag/6.9.4.2
github.com/hapifhir/org.hl7.fhir.core/releases/tag/6.9.9
Left out here: 2,218 versions. The JSON record has them.