CVE-2026-61741
http4s-scala-xml has an XML External Entity (XXE) processing issue
http4s-scala-xml provides EntityDecoder[F, scala.xml.Elem] instances that parse XML message bodies. Prior to versions 0.24.1 and 1.0.0-M39, these decoders used a javax.xml.parsers.SAXParserFactory obtained from SAXParserFactory.newInstance without any security configuration. With the JDK's default settings, the parser resolves DOCTYPE declarations, external general and parameter entities, and external DTDs.An application that uses these decoders to parse untrusted XML is vulnerable to XML External Entity (XXE) attacks. An attacker can craft a request that discloses local files readable by the service process, performs server-side request forgery (SSRF) against internal network resources, and/or causes denial of service through entity expansion. Versions 0.24.1 and 1.0.0-M39 fix the issue.
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
- Low
Exploit likelihood
What each source reports
CVE List Score used
9.3
http4s-scala-xml has an XML External Entity (XXE) processing issue
http4s-scala-xml provides EntityDecoder[F, scala.xml.Elem] instances that parse XML message bodies. Prior to versions 0.24.1 and 1.0.0-M39, these decoders used a javax.xml.parsers.SAXParserFactory obtained from SAXParserFactory.newInstance without any security configuration. With the JDK's default settings, the parser resolves DOCTYPE declarations, external general and parameter entities, and external DTDs.An application that uses these decoders to parse untrusted XML is vulnerable to XML External Entity (XXE) attacks. An attacker can craft a request that discloses local files readable by the service process, performs server-side request forgery (SSRF) against internal network resources, and/or causes denial of service through entity expansion. Versions 0.24.1 and 1.0.0-M39 fix the issue.
- Record
CVE-2026-61741- CVSS 3.1
- 9.3 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:L - Weakness
- CWE-611
- Updated
- 2026-11-02
EUVDEUVD-2026-86332
9.3
http4s-scala-xml provides EntityDecoder[F, scala.xml.Elem] instances that parse XML message bodies. Prior to versions 0.24.1 and 1.0.0-M39, these decoders used a javax.xml.parsers.SAXParserFactory obtained from SAXParserFactory.newInstance without any security configuration. With the JDK's default settings, the parser resolves DOCTYPE declarations, external general and parameter entities, and external DTDs.An application that uses these decoders to parse untrusted XML is vulnerable to XML External Entity (XXE) attacks. An attacker can craft a request that discloses local files readable by the service process, performs server-side request forgery (SSRF) against internal network resources, and/or causes denial of service through entity expansion. Versions 0.24.1 and 1.0.0-M39 fix the issue.
- Record
EUVD-2026-86332- CVSS 3.1
- 9.3 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:L - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-cjx3-73hr-rpw7
9.3
http4s-scala-xml has an XML External Entity (XXE) processing issue
http4s-scala-xml provides EntityDecoder[F, scala.xml.Elem] instances that parse XML message bodies. These decoders used a javax.xml.parsers.SAXParserFactory obtained from SAXParserFactory.newInstance without any security configuration. With the JDK's default settings, the parser resolves DOCTYPE declarations, external general and parameter entities, and external DTDs.
An application that uses these decoders to parse untrusted XML is vulnerable to XML External Entity (XXE) attacks. An attacker can craft a request that:
- discloses local files readable by the service process,
- performs server-side request forgery (SSRF) against internal network resources, and/or
- causes denial of service through entity expansion.
Impact
Any service that derives an XML EntityDecoder from this library and parses attacker-controlled input is affected.
Patches
The default SAXParserFactory is now hardened:
- secure processing is enabled
DOCTYPEdeclarations are disallowed- external general/parameter entities and external DTD loading are disabled
- DTD URIs are not resolved
- XInclude is disabled.
These defaults match scala.xml.XMLLoader's defaults since 2.0.0.
Workarounds
Before upgrading, override ElemInstances#saxFactory with a hardened factory.
val secured = new ElemInstances {
override protected val saxFactory = {
val f = javax.xml.parsers.SAXParserFactory.newInstance
f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
// etc.
f
}
}
import secured._
- Record
GHSA-cjx3-73hr-rpw7- CVSS 3.1
- 9.3 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:L - Weakness
- CWE-611
- Updated
- 2026-11-02
NVD
9.3
http4s-scala-xml provides EntityDecoder[F, scala.xml.Elem] instances that parse XML message bodies. Prior to versions 0.24.1 and 1.0.0-M39, these decoders used a javax.xml.parsers.SAXParserFactory obtained from SAXParserFactory.newInstance without any security configuration. With the JDK's default settings, the parser resolves DOCTYPE declarations, external general and parameter entities, and external DTDs.An application that uses these decoders to parse untrusted XML is vulnerable to XML External Entity (XXE) attacks. An attacker can craft a request that discloses local files readable by the service process, performs server-side request forgery (SSRF) against internal network resources, and/or causes denial of service through entity expansion. Versions 0.24.1 and 1.0.0-M39 fix the issue.
- Record
CVE-2026-61741- CVSS 3.1
- 9.3 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:L - Weakness
- CWE-611
- Updated
- 2026-11-02
OSV
9.3
http4s-scala-xml has an XML External Entity (XXE) processing issue
http4s-scala-xml provides EntityDecoder[F, scala.xml.Elem] instances that parse XML message bodies. Prior to versions 0.24.1 and 1.0.0-M39, these decoders used a javax.xml.parsers.SAXParserFactory obtained from SAXParserFactory.newInstance without any security configuration. With the JDK's default settings, the parser resolves DOCTYPE declarations, external general and parameter entities, and external DTDs.An application that uses these decoders to parse untrusted XML is vulnerable to XML External Entity (XXE) attacks. An attacker can craft a request that discloses local files readable by the service process, performs server-side request forgery (SSRF) against internal network resources, and/or causes denial of service through entity expansion. Versions 0.24.1 and 1.0.0-M39 fix the issue.
- Record
CVE-2026-61741- CVSS 3.1
- 9.3 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:L - Weakness
- CWE-611
- Updated
- 2026-11-02
OSVGHSA-cjx3-73hr-rpw7
9.3
http4s-scala-xml has an XML External Entity (XXE) processing issue
http4s-scala-xml provides EntityDecoder[F, scala.xml.Elem] instances that parse XML message bodies. These decoders used a javax.xml.parsers.SAXParserFactory obtained from SAXParserFactory.newInstance without any security configuration. With the JDK's default settings, the parser resolves DOCTYPE declarations, external general and parameter entities, and external DTDs.
An application that uses these decoders to parse untrusted XML is vulnerable to XML External Entity (XXE) attacks. An attacker can craft a request that:
- discloses local files readable by the service process,
- performs server-side request forgery (SSRF) against internal network resources, and/or
- causes denial of service through entity expansion.
Impact
Any service that derives an XML EntityDecoder from this library and parses attacker-controlled input is affected.
Patches
The default SAXParserFactory is now hardened:
- secure processing is enabled
DOCTYPEdeclarations are disallowed- external general/parameter entities and external DTD loading are disabled
- DTD URIs are not resolved
- XInclude is disabled.
These defaults match scala.xml.XMLLoader's defaults since 2.0.0.
Workarounds
Before upgrading, override ElemInstances#saxFactory with a hardened factory.
val secured = new ElemInstances {
override protected val saxFactory = {
val f = javax.xml.parsers.SAXParserFactory.newInstance
f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
// etc.
f
}
}
import secured._
- Record
GHSA-cjx3-73hr-rpw7- CVSS 3.1
- 9.3 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:L - Weakness
- CWE-611
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
org.http4s:http4s-scala-xml_2.12Maven |
through 0.24.0 | 0.24.1 |
org.http4s:http4s-scala-xml_2.13Maven |
through 0.24.0 | 0.24.1 |
org.http4s:http4s-scala-xml_2.13Maven |
1.0.0-M1 to 1.0.0-M38.1 | 1.0.0-M39 |
org.http4s:http4s-scala-xml_3Maven |
through 0.24.0 | 0.24.1 |
org.http4s:http4s-scala-xml_3Maven |
1.0.0-M1 to 1.0.0-M38.1 | 1.0.0-M39 |
org.http4s:http4s-scala-xml_2.12Maven |
before 0.24.1, plus listed versions 0.10.0-M100.15.00.15.0a0.15.10.15.10 Show 45 moreShow less0.15.10a0.15.110.15.11a0.15.120.15.12a0.15.130.15.13a0.15.140.15.14a0.15.150.15.15a0.15.160.15.16a0.15.1a0.15.20.15.2a0.15.30.15.3a0.15.40.15.4a0.15.50.15.5a0.15.60.15.6a0.15.70.15.7a0.15.80.15.8a0.15.90.15.9a0.16.00.16.0-M10.16.0-M20.16.0-M30.16.0-RC10.16.0-RC20.16.0-RC30.16.0a0.16.0a-M10.16.0a-M20.16.0a-M30.16.0a-RC10.16.0a-RC20.16.0a-RC30.16.1 |
0.24.1 |
org.http4s:http4s-scala-xml_2.13Maven |
before 0.24.1, plus listed versions 0.10.0-M100.21.00.21.0-M10.21.0-M20.21.0-M3 Show 45 moreShow less0.21.0-M40.21.0-M50.21.0-M60.21.0-RC10.21.0-RC20.21.0-RC30.21.0-RC40.21.0-RC50.21.10.21.110.21.120.21.130.21.140.21.150.21.160.21.170.21.180.21.190.21.20.21.200.21.210.21.220.21.230.21.240.21.250.21.260.21.270.21.280.21.290.21.30.21.300.21.310.21.320.21.330.21.340.21.40.21.50.21.60.21.70.21.80.21.90.22-129-24d065b0.22-143-49b5a8d0.22-53-01128f50.22-96-55d3184 |
0.24.1 |
org.http4s:http4s-scala-xml_2.13Maven |
1.0.0-M1 up to 1.0.0-M39, plus listed versions 1.0.0-M101.0.0-M131.0.0-M141.0.0-M151.0.0-M16 Show 28 moreShow less1.0.0-M171.0.0-M181.0.0-M191.0.0-M21.0.0-M201.0.0-M211.0.0-M221.0.0-M231.0.0-M241.0.0-M251.0.0-M271.0.0-M281.0.0-M291.0.0-M31.0.0-M301.0.0-M311.0.0-M321.0.0-M331.0.0-M341.0.0-M351.0.0-M381.0.0-M38.11.0.0-M41.0.0-M51.0.0-M61.0.0-M71.0.0-M81.0.0-M9 |
1.0.0-M39 |
org.http4s:http4s-scala-xml_3Maven |
before 0.24.1, plus listed versions 0.22.00.22.0-M80.22.0-RC10.22.10.22.10 Show 32 moreShow less0.22.110.22.120.22.130.22.140.22.150.22.20.22.30.22.40.22.50.22.60.22.70.22.80.22.90.23.00.23.0-M10.23.0-RC10.23.10.23.100.23.110.23.120.23.130.23.140.23.150.23.20.23.30.23.40.23.50.23.60.23.70.23.80.23.90.24.0 |
0.24.1 |
org.http4s:http4s-scala-xml_3Maven |
1.0.0-M1 up to 1.0.0-M39, plus listed versions 1.0.0-M221.0.0-M231.0.0-M241.0.0-M251.0.0-M27 Show 10 moreShow less1.0.0-M281.0.0-M291.0.0-M301.0.0-M311.0.0-M321.0.0-M331.0.0-M341.0.0-M351.0.0-M381.0.0-M38.1 |
1.0.0-M39 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-61741 is a critical vulnerability (CVSS 9.3) in Http4s Http4s-scala-xml, published September 24, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.29%, the 22nd percentile. Fixed in org.http4s:http4s-scala-xml_2.12 0.24.1.
References
github.com/http4s/http4s-scala-xml/security/advisories/GHSA-cjx3-73hr-rpw7
nvd.nist.gov/vuln/detail/CVE-2026-61741
github.com/http4s/http4s-scala-xml/commit/326f965a2c45fc2ddbc22545dcf551b0f719f4c8
github.com/http4s/http4s-scala-xml/releases/tag/v0.24.1
github.com/http4s/http4s-scala-xml/releases/tag/v1.0.0-M39
github.com/advisories/GHSA-cjx3-73hr-rpw7
github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61741.json
github.com/http4s/http4s-scala-xml
Left out here: 234 versions. The JSON record has them.