CVE-2023-49093
Published: 04 December 2023
Summary
CVE-2023-49093 is a critical-severity Code Injection (CWE-94) vulnerability in Htmlunit Htmlunit. Its CVSS base score is 9.8 (Critical).
Operationally, ranked in the top 9.9% of CVEs by exploit likelihood; it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.
Deeper analysis
HtmlUnit, a GUI-less browser for Java programs, contains a remote code execution vulnerability triggered when the library processes XSLT stylesheets from untrusted sources. The flaw, tracked as CVE-2023-49093 and assigned CWE-94, affects all releases prior to 3.9.0 and carries a CVSS 3.1 base score of 9.8.
An unauthenticated attacker can exploit the issue by hosting a malicious webpage that HtmlUnit-based Java applications are induced to load. Successful exploitation grants the attacker arbitrary code execution on the host running the vulnerable HtmlUnit instance, with no user interaction or privileges required.
The project’s security advisory GHSA-37vq-hr2f-g7h7 and the 3.9.0 release notes state that the vulnerability is resolved by upgrading to HtmlUnit 3.9.0. The associated EPSS score has remained low and essentially flat since disclosure, with a current value of 0.0514 and a peak of 0.0528.
EU & UK References
- 🇪🇺 ENISA EUVD: EUVD-2023-3079
Vulnerability details
HtmlUnit is a GUI-less browser for Java programs. HtmlUnit is vulnerable to Remote Code Execution (RCE) via XSTL, when browsing the attacker’s webpage. This vulnerability has been patched in version 3.9.0
- CWE(s)
Related Threats
No named actor attribution yet. ATT&CK technique mapping in progress for this CVE.
Affected Assets
Mitigating Controls
Likely Mitigating Controls AI
Per-CVE control mapping for this CVE has not run yet; the list below is derived from the weakness types (CWEs) cited in the NVD entry.
Makes persistent code injection into loaded programs impossible when the executable image itself resides on hardware-protected read-only media.
Dynamically generated code can be produced and executed inside the isolated chamber, preventing host compromise from code-injection payloads.
Validates inputs used in dynamic code generation to block injected directives.
Directly prevents execution of attacker-supplied code written into data memory regions.