Cloudanix VulnDB

CVE-2025-24855

None

CVSS

—

EPSS

0.4%

Published

Mar 14, 2025

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A bug in a common XML processing library can let attackers crash programs or take control when handling specially crafted documents, so organizations should update the library everywhere it is used.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Moderate
Impact
Full Compromise
Component
Library
Class
Use After Free
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Use-after-free in libxslt numbers.c during nested XPath evaluations where an XPath context node is modified in xsltNumberFormatGetValue, xsltEvalXPathPredicate, xsltEvalXPathStringNs or xsltComputeSortResultInternal but never restored, allowing memory corruption.

Why it matters to the business

Applications that process untrusted XML or XSLT documents with libxslt may crash or allow arbitrary code execution, potentially disrupting document transformation workflows and requiring emergency updates across dependent systems.

How an attack unfolds

An attacker supplies a malicious XSLT stylesheet or XML input that triggers nested XPath evaluations involving number formatting or sorting; the library fails to restore the context node, resulting in a dangling pointer that can be leveraged to corrupt memory and execute attacker-controlled code.

How to fix it

Upgrade libxslt to the commit 71be7a32637760d769b193d95e0c745ecb86b679 or later release containing the fix; rebuild and redeploy all dependent applications; validate that no older versions remain in build pipelines or container images.

How to confirm the fix worked

Confirm the installed libxslt version or git commit hash matches or exceeds 71be7a32637760d769b193d95e0c745ecb86b679; run regression tests exercising nested XPath number formatting and sorting; scan dependency manifests for the vulnerable version string.

Typical attack path

  1. Identify application endpoints or workflows accepting XSLT or XML input processed by libxslt
  2. Craft nested XPath expressions targeting xsltNumberFormatGetValue or sort routines
  3. Trigger use-after-free via modified context node during evaluation
  4. Leverage resulting memory corruption for code execution or denial of service

How to detect it

Review application logs for crashes or abnormal behavior during XSLT processing; inspect core dumps or memory analysis for use-after-free patterns in XPath evaluation functions; search package managers and build logs for references to vulnerable libxslt versions prior to the fix commit.

What your security team should do

  • Immediately inventory all systems and containers using libxslt and prioritize upgrade to the fixed commit
  • Add libxslt version checks to CI/CD pipelines and container scanning tools
  • Monitor for any new exploit code given the age of the disclosure and low but rising EPSS
  • Review applications that accept user-supplied XSLT for additional input sanitization

The record

numbers.c in libxslt before 1.1.43 has a use-after-free because, in nested XPath evaluations, an XPath context node can be modified but never restored. This is related to xsltNumberFormatGetValue, xsltEvalXPathPredicate, xsltEvalXPathStringNs, and xsltComputeSortResultInternal.

Affected packages

Ecosystem Package Introduced Fixed
AlmaLinux:10 libxslt 0 1.1.39-7.el10_0
AlmaLinux:10 libxslt-devel 0 1.1.39-7.el10_0
AlmaLinux:8 libxslt 0 1.1.32-6.1.el8_10
AlmaLinux:8 libxslt-devel 0 1.1.32-6.1.el8_10
AlmaLinux:9 libxslt 0 1.1.34-9.el9_5.1
AlmaLinux:9 libxslt-devel 0 1.1.34-9.el9_5.1
Alpine:v3.18 libxslt 0 1.1.38-r1
Alpine:v3.19 libxslt 0 1.1.39-r1
Alpine:v3.20 libxslt 0 1.1.39-r2
Alpine:v3.21 libxslt 0 1.1.42-r2
Alpine:v3.22 libxslt 0 1.1.43-r0
Chainguard openjdk-11-openj9 0 0.53.0-r0
Chainguard openjdk-11-openj9-dbg 0 0.53.0-r0
Chainguard openjdk-11-openj9-default-jdk 0 0.53.0-r0
Chainguard openjdk-11-openj9-default-jvm 0 0.53.0-r0
Chainguard openjdk-11-openj9-default-policy 0 0.53.0-r0
Chainguard openjdk-11-openj9-doc 0 0.53.0-r0
Chainguard openjdk-11-openj9-jmods 0 0.53.0-r0
Chainguard openjdk-11-openj9-jre 0 0.53.0-r0
Chainguard openjdk-17-openj9 0 0.53.0-r0
Chainguard openjdk-17-openj9-dbg 0 0.53.0-r0
Chainguard openjdk-17-openj9-default-jdk 0 0.53.0-r0
Chainguard openjdk-17-openj9-default-jvm 0 0.53.0-r0
Chainguard openjdk-17-openj9-default-policy 0 0.53.0-r0
Chainguard openjdk-17-openj9-doc 0 0.53.0-r0
Chainguard openjdk-17-openj9-jmods 0 0.53.0-r0
Chainguard openjdk-17-openj9-jre 0 0.53.0-r0
Chainguard openjdk-21-openj9 0 0.53.0-r0
Chainguard openjdk-21-openj9-dbg 0 0.53.0-r0
Chainguard openjdk-21-openj9-default-jdk 0 0.53.0-r0
Chainguard openjdk-21-openj9-default-jvm 0 0.53.0-r0
Chainguard openjdk-21-openj9-default-policy 0 0.53.0-r0
Chainguard openjdk-21-openj9-doc 0 0.53.0-r0
Chainguard openjdk-21-openj9-jmods 0 0.53.0-r0
Chainguard openjdk-21-openj9-jre 0 0.53.0-r0
Chainguard openjdk-8-openj9 0 0.53.0-r1
Chainguard openjdk-8-openj9-dbg 0 0.53.0-r1
Chainguard openjdk-8-openj9-default-jdk 0 0.53.0-r1
Chainguard openjdk-8-openj9-default-jvm 0 0.53.0-r1
Chainguard openjdk-8-openj9-doc 0 0.53.0-r1
Chainguard openjdk-8-openj9-jre 0 0.53.0-r1
Debian:11 libxslt 0 No fix
Debian:11 libxslt 0 1.1.34-4+deb11u2
Debian:12 libxslt 0 No fix
Debian:12 libxslt 0 1.1.35-1+deb12u1
Debian:13 libxslt 0 No fix
Debian:14 libxslt 0 1.1.35-1.2
Mageia:9 libxslt 0 1.1.38-1.1.mga9
SUSE:Enterprise Storage 7.1 libxslt 0 1.1.32-150000.3.17.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS libxslt 0 1.1.32-150000.3.17.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Micro 5.1 libxslt 0 1.1.32-150000.3.17.1
SUSE:Linux Enterprise Micro 5.2 libxslt 0 1.1.32-150000.3.17.1
SUSE:Linux Enterprise Micro 5.3 libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Micro 5.4 libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Micro 5.5 libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Module for Package Hub 15 SP6 libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Server 15 SP3-LTSS libxslt 0 1.1.32-150000.3.17.1
SUSE:Linux Enterprise Server 15 SP4-LTSS libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Server 15 SP5-LTSS libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 libxslt 0 1.1.32-150000.3.17.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 libxslt 0 1.1.34-150400.3.6.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 libxslt 0 1.1.34-150400.3.6.1
SUSE:Manager Proxy 4.3 libxslt 0 1.1.34-150400.3.6.1
SUSE:Manager Server 4.3 libxslt 0 1.1.34-150400.3.6.1
openSUSE:Leap 15.6 libxslt 0 1.1.34-150400.3.6.1
openSUSE:Leap 15.6 libxslt-python 0 1.1.32-150000.3.17.1
openSUSE:Tumbleweed libqt5-qtwebengine 0 5.15.19-1.1
openSUSE:Tumbleweed libxslt 0 1.1.43-1.1

Related vulnerabilities