Every CVE Search/ Get API key

CVE-2023-28465

HL7 FHIR Partial Path Zip Slip due to bypass of CVE-2023-24057

7.5 HighPublic exploitFix available

The package-decompression feature in HL7 (Health Level 7) FHIR Core Libraries before 5.6.106 allows attackers to copy arbitrary files to certain directories via directory traversal, if an allowed directory name is a substring of the directory name chosen by the attacker. NOTE: this issue exists because of an incomplete fix for CVE-2023-24057.

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
High
Integrity
None
Availability
None

Exploit likelihood

1.30%Up 1.3 points since Dec 13, 2023
90%50%10%1%

What each source reports

NVD Score used 7.5

The package-decompression feature in HL7 (Health Level 7) FHIR Core Libraries before 5.6.106 allows attackers to copy arbitrary files to certain directories via directory traversal, if an allowed directory name is a substring of the directory name chosen by the attacker. NOTE: this issue exists because of an incomplete fix for CVE-2023-24057.

Record
CVE-2023-28465
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-22
Updated
2026-11-02
CVE List 7.5

The package-decompression feature in HL7 (Health Level 7) FHIR Core Libraries before 5.6.106 allows attackers to copy arbitrary files to certain directories via directory traversal, if an allowed directory name is a substring of the directory name chosen by the attacker. NOTE: this issue exists because of an incomplete fix for CVE-2023-24057.

Record
CVE-2023-28465
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-22
Updated
2026-11-02
EUVDEUVD-2023-0960 7.5

The package-decompression feature in HL7 (Health Level 7) FHIR Core Libraries before 5.6.106 allows attackers to copy arbitrary files to certain directories via directory traversal, if an allowed directory name is a substring of the directory name chosen by the attacker. NOTE: this issue exists because of an incomplete fix for CVE-2023-24057.

Record
EUVD-2023-0960
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-9654-pr4f-gh6m 7.5

HL7 FHIR Partial Path Zip Slip due to bypass of CVE-2023-24057

Impact

Zip Slip protections implemented in CVE-2023-24057 (GHSA-jqh6-9574-5x22) can be bypassed due a partial path traversal vulnerability.

This issue allows a malicious actor to potentially break out of the TerminologyCacheManager cache directory. The impact is limited to sibling directories.

To demonstrate the vulnerability, consider userControlled.getCanonicalPath().startsWith("/usr/out") will allow an attacker to access a directory with a name like /usr/outnot.

Why?

To demonstrate this vulnerability, consider "/usr/outnot".startsWith("/usr/out"). The check is bypassed although /outnot is not under the /out directory. It's important to understand that the terminating slash may be removed when using various String representations of the File object. For example, on Linux, println(new File("/var")) will print /var, but println(new File("/var", "/") will print /var/; however, println(new File("/var", "/").getCanonicalPath()) will print /var.

The Fix

Comparing paths with the java.nio.files.Path#startsWith will adequately protect againts this vulnerability.

For example: file.getCanonicalFile().toPath().startsWith(BASE_DIRECTORY) or file.getCanonicalFile().toPath().startsWith(BASE_DIRECTORY_FILE.getCanonicalFile().toPath())

Other Examples

Vulnerability

https://github.com/hapifhir/org.hl7.fhir.core/blob/b0daf666725fa14476d147522155af1e81922aac/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/terminologies/TerminologyCacheManager.java#L99-L105

While getAbsolutePath will return a normalized path, because the string path is not slash terminated, the guard can be bypassed to write the contents of the Zip file to a sibling directory of the cache directory.

Patches

All org.hl7.fhir.core libraries should be updated to 5.6.106.

Workarounds

Unknown

References

Record
GHSA-9654-pr4f-gh6m
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-22
Updated
2026-11-02
OSV 7.5

The package-decompression feature in HL7 (Health Level 7) FHIR Core Libraries before 5.6.106 allows attackers to copy arbitrary files to certain directories via directory traversal, if an allowed directory name is a substring of the directory name chosen by the attacker. NOTE: this issue exists because of an incomplete fix for CVE-2023-24057.

Record
CVE-2023-28465
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
OSVGHSA-9654-pr4f-gh6m 7.5

HL7 FHIR Partial Path Zip Slip due to bypass of CVE-2023-24057

Impact

Zip Slip protections implemented in CVE-2023-24057 (GHSA-jqh6-9574-5x22) can be bypassed due a partial path traversal vulnerability.

This issue allows a malicious actor to potentially break out of the TerminologyCacheManager cache directory. The impact is limited to sibling directories.

To demonstrate the vulnerability, consider userControlled.getCanonicalPath().startsWith("/usr/out") will allow an attacker to access a directory with a name like /usr/outnot.

Why?

To demonstrate this vulnerability, consider "/usr/outnot".startsWith("/usr/out"). The check is bypassed although /outnot is not under the /out directory. It's important to understand that the terminating slash may be removed when using various String representations of the File object. For example, on Linux, println(new File("/var")) will print /var, but println(new File("/var", "/") will print /var/; however, println(new File("/var", "/").getCanonicalPath()) will print /var.

The Fix

Comparing paths with the java.nio.files.Path#startsWith will adequately protect againts this vulnerability.

For example: file.getCanonicalFile().toPath().startsWith(BASE_DIRECTORY) or file.getCanonicalFile().toPath().startsWith(BASE_DIRECTORY_FILE.getCanonicalFile().toPath())

Other Examples

Vulnerability

https://github.com/hapifhir/org.hl7.fhir.core/blob/b0daf666725fa14476d147522155af1e81922aac/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/terminologies/TerminologyCacheManager.java#L99-L105

While getAbsolutePath will return a normalized path, because the string path is not slash terminated, the guard can be bypassed to write the contents of the Zip file to a sibling directory of the cache directory.

Patches

All org.hl7.fhir.core libraries should be updated to 5.6.106.

Workarounds

Unknown

References

Record
GHSA-9654-pr4f-gh6m
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-22
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
ca.uhn.hapi.fhir:org.hl7.fhir.core
Maven
before 5.6.106
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.convertors
Maven
before 5.6.106
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.r4b
Maven
before 5.6.106
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.r5
Maven
before 5.6.106
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.utilities
Maven
before 5.6.106
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.validation
Maven
before 5.6.106
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.core
Maven
before 5.6.106, plus listed versions
0.0.10.0.140.0.20.1.140.1.18
Show 45 moreShow less
1.0.01.1.674.0.04.0.14.0.24.0.34.1.04.2.05.0.05.0.105.0.115.0.125.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
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.convertors
Maven
before 5.6.106, plus listed versions
0.0.10.0.140.0.20.1.181.0.0
Show 45 moreShow less
1.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
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.r4b
Maven
before 5.6.106, plus listed versions
5.6.1005.6.1015.6.1025.6.1035.6.104
Show 45 moreShow less
5.6.1055.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.545.6.555.6.565.6.575.6.585.6.595.6.605.6.615.6.625.6.635.6.645.6.655.6.66
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.r5
Maven
before 5.6.106, plus listed versions
0.0.10.0.140.0.20.1.181.0.0
Show 45 moreShow less
1.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
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.utilities
Maven
before 5.6.106, plus listed versions
0.0.10.0.140.0.20.1.181.0.0
Show 45 moreShow less
1.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
5.6.106
ca.uhn.hapi.fhir:org.hl7.fhir.validation
Maven
before 5.6.106, plus listed versions
0.0.10.0.140.0.20.1.181.0.0
Show 45 moreShow less
1.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
5.6.106

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
PoC in GitHubshoucheng3/hapifhir__org_hl7_fhir_core_CVE-2023-28465_5-6-10552025-08-17

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2023-28465 is a high vulnerability (CVSS 7.5) in Hapifhir Hl7 Fhir Core, published March 10, 2023. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 1.30%, the 70th percentile. Fixed in ca.uhn.hapi.fhir:org.hl7.fhir.core 5.6.106.

References

Show 4 moreShow less
This page doesn't list everything

Left out here: 833 versions. The JSON record has them.

MoveEnter Open