
Loading

Loading
We use strictly necessary cookies to run this site, and analytics cookies to understand how it's used. See our Privacy Policy for details.
A GitHub-reviewed security advisory, not necessarily under active exploitation the way our CISA KEV advisories are, but a real, disclosed vulnerability in an open-source dependency.
Affected packages
Vulnerable: <= 0.24.0
Patched in 0.24.1
Vulnerable: <= 0.24.0
Patched in 0.24.1
Vulnerable: >= 1.0.0-M1, <= 1.0.0-M38.1
Patched in 1.0.0-M39
Vulnerable: <= 0.24.0
Patched in 0.24.1
Vulnerable: >= 1.0.0-M1, <= 1.0.0-M38.1
Patched in 1.0.0-M39
Details
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:
Any service that derives an XML EntityDecoder from this library and parses attacker-controlled input is affected.
The default SAXParserFactory is now hardened:
DOCTYPE declarations are disallowedThese defaults match scala.xml.XMLLoader's defaults since 2.0.0.
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._
EPSS, exploit probability
Low0.29%
estimated chance of real-world exploitation in the next 30 days, higher than 22.2% of every CVE FIRST.org scores
Refreshed 11/9/2026, via FIRST.org's EPSS model, not CVSS, this measures likelihood of exploitation, not how severe it would be.
Talk to us about this
Find out whether this dependency (or others like it) is actually reachable in your codebase.
Get help patching, or building dependency-scanning into your pipeline going forward.
A secure code review or supply chain review finds this before an advisory does.