CVE-2019-13117
Medium · 5.3CVSS
5.3
EPSS
6.3%
Published
Jul 1, 2019
CISA due date
—
Cloudanix analysis
A flaw in a common library used to transform XML documents can let attackers peek at tiny pieces of hidden memory, potentially revealing small clues that help them attack the program further.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Library
- Class
- Information Disclosure
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Uninitialized read in xsltNumberFormatInsertNumbers triggered by crafted xsl:number format strings allows an attacker to determine whether a specific stack byte holds one of the characters A, a, I, i, 0 or any other value.
Why it matters to the business
Attackers may obtain limited sensitive information from application memory, increasing the risk of further attacks such as bypassing address-space protections or inferring internal data structures; the issue affects any software that processes untrusted XSLT stylesheets with libxslt.
How an attack unfolds
An attacker crafts a malicious XSLT stylesheet containing an xsl:number element with a specially chosen format string, supplies it to an application that invokes libxslt on attacker-controlled or influenced input, and inspects the resulting output to learn the contents of chosen stack bytes.
How to fix it
Upgrade libxslt to the version containing commit c5eb6cf3aba0af048596106ed839b4ae17ecbcb1 or later; rebuild and redeploy all dependent applications after the library update.
How to confirm the fix worked
Confirm the installed libxslt shared library or package reports a version newer than the vulnerable 1.1.33 release and contains the referenced commit hash; run regression tests that exercise xsl:number formatting with the previously problematic format strings and verify no uninitialized data is leaked.
Typical attack path
- Identify an application or service that accepts or processes XSLT stylesheets using libxslt
- Craft an xsl:number element with a format string that triggers the uninitialized read path
- Submit the stylesheet along with any required XML input to the target
- Observe the generated output or side-channel behavior to infer the value of targeted stack bytes
- Repeat or chain observations to map additional memory contents
How to detect it
Review application logs for XSLT transformation requests that produce unexpected numeric or alphabetic output patterns; correlate with inbound stylesheet uploads or external XSLT references and inspect for repeated or systematic probing of format-string behavior.
What your security team should do
- Immediately inventory all systems and containers that link against libxslt and schedule upgrades to the fixed commit
- Block or sanitize untrusted XSLT stylesheets at application entry points until patches are applied
- Update vulnerability scanners and dependency manifests to flag the affected libxslt versions
- Review logging configurations to capture XSLT processing errors or unusual output patterns for post-patch monitoring
The record
In numbers.c in libxslt 1.1.33, an xsl:number with certain format strings could lead to a uninitialized read in xsltNumberFormatInsertNumbers. This could allow an attacker to discern whether a byte on the stack contains the characters A, a, I, i, or 0, or any other character.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| RubyGems | nokogiri | 0 | 1.10.5 |
| Alpine:v3.10 | libxslt | 0 | 1.1.33-r3 |
| Alpine:v3.11 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.12 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.13 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.14 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.15 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.16 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.17 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.18 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.19 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.20 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.21 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.22 | libxslt | 0 | 1.1.34-r0 |
| Alpine:v3.8 | libxslt | 0 | 1.1.33-r3 |
| Alpine:v3.9 | libxslt | 0 | 1.1.33-r3 |
| Debian:11 | libxslt | 0 | 1.1.32-2.1 |
| Debian:12 | libxslt | 0 | 1.1.32-2.1 |
| Debian:13 | libxslt | 0 | 1.1.32-2.1 |
| Debian:14 | libxslt | 0 | 1.1.32-2.1 |
| Debian:8 | libxslt | 0 | 1.1.28-2+deb8u5 |
| Mageia:7 | libxslt | 0 | 1.1.33-2.1.mga7 |
| SUSE:Linux Enterprise Desktop 12 SP4 | libxslt | 0 | 1.1.28-17.6.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP1 | libxslt | 0 | 1.1.32-3.8.24 |
| SUSE:Linux Enterprise Server 12 SP4 | libxslt | 0 | 1.1.28-17.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | libxslt | 0 | 1.1.28-17.6.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP4 | libxslt | 0 | 1.1.28-17.6.1 |
| SUSE:OpenStack Cloud 7 | crowbar-core | 0 | 4.0+git.1574788924.e4a6aeb0c-9.60.2 |
| SUSE:OpenStack Cloud 7 | crowbar-openstack | 0 | 4.0+git.1574869671.9c7bade2d-9.65.1 |
| SUSE:OpenStack Cloud 7 | openstack-horizon-plugin-monasca-ui | 0 | 1.5.5~dev3-8.1 |
| SUSE:OpenStack Cloud 7 | openstack-monasca-api | 0 | 1.7.1~dev18-12.1 |
| SUSE:OpenStack Cloud 7 | openstack-monasca-log-api | 0 | 1.4.3~dev3-5.1 |
| SUSE:OpenStack Cloud 7 | openstack-neutron | 0 | 9.4.2~dev21-7.38.1 |
| SUSE:OpenStack Cloud 7 | openstack-neutron-doc | 0 | 9.4.2~dev21-7.38.1 |
| SUSE:OpenStack Cloud 7 | rubygem-puma | 0 | 2.16.0-4.3.1 |
| SUSE:OpenStack Cloud 9 | ardana-ansible | 0 | 9.0+git.1581611758.f694f7d-3.16.1 |
| SUSE:OpenStack Cloud 9 | ardana-cinder | 0 | 9.0+git.1579256229.c8b4b38-3.10.1 |
| SUSE:OpenStack Cloud 9 | ardana-cobbler | 0 | 9.0+git.1574950066.a3c4be4-3.10.1 |
| SUSE:OpenStack Cloud 9 | ardana-db | 0 | 9.0+git.1578936438.b9a9b95-3.16.1 |
| SUSE:OpenStack Cloud 9 | ardana-horizon | 0 | 9.0+git.1575562864.8ed5e10-3.13.1 |
| SUSE:OpenStack Cloud 9 | ardana-input-model | 0 | 9.0+git.1580403439.d425462-3.13.1 |
| SUSE:OpenStack Cloud 9 | ardana-monasca | 0 | 9.0+git.1579273481.4b8c46f-3.13.1 |
| SUSE:OpenStack Cloud 9 | ardana-mq | 0 | 9.0+git.1581024903.8e74867-3.10.1 |
| SUSE:OpenStack Cloud 9 | ardana-nova | 0 | 9.0+git.1580304673.6c668eb-3.16.1 |
| SUSE:OpenStack Cloud 9 | ardana-octavia | 0 | 9.0+git.1576074489.62de7e2-3.13.1 |
| SUSE:OpenStack Cloud 9 | ardana-osconfig | 0 | 9.0+git.1580235830.0dca223-3.13.1 |
| SUSE:OpenStack Cloud 9 | ardana-tempest | 0 | 9.0+git.1578932816.e299c08-3.10.1 |
| SUSE:OpenStack Cloud 9 | ardana-tls | 0 | 9.0+git.1575296665.3fdfe45-3.9.1 |
| SUSE:OpenStack Cloud 9 | keepalived | 0 | 2.0.19-3.3.1 |
| SUSE:OpenStack Cloud 9 | openstack-barbican | 0 | 7.0.1~dev24-3.6.4 |
| SUSE:OpenStack Cloud 9 | openstack-ceilometer | 0 | 11.0.2~dev21-3.10.3 |
| SUSE:OpenStack Cloud 9 | openstack-cinder | 0 | 13.0.9~dev11-3.16.3 |
| SUSE:OpenStack Cloud 9 | openstack-dashboard | 0 | 14.1.1~dev1-3.12.2 |
| SUSE:OpenStack Cloud 9 | openstack-dashboard-theme-SUSE | 0 | 2018.2+git.1555335229.5c8dec9-3.3.1 |
| SUSE:OpenStack Cloud 9 | openstack-designate | 0 | 7.0.1~dev23-3.13.3 |
| SUSE:OpenStack Cloud 9 | openstack-heat | 0 | 11.0.3~dev31-3.13.3 |
| SUSE:OpenStack Cloud 9 | openstack-horizon-plugin-designate-ui | 0 | 7.0.1~dev8-3.6.1 |
| SUSE:OpenStack Cloud 9 | openstack-horizon-plugin-ironic-ui | 0 | 3.3.1~dev14-3.3.1 |
| SUSE:OpenStack Cloud 9 | openstack-horizon-plugin-neutron-lbaas-ui | 0 | 5.0.1~dev8-11.1 |
| SUSE:OpenStack Cloud 9 | openstack-horizon-plugin-octavia-ui | 0 | 2.0.2~dev1-1.3.2 |
| SUSE:OpenStack Cloud 9 | openstack-ironic | 0 | 11.1.4~dev22-3.13.2 |
| SUSE:OpenStack Cloud 9 | openstack-ironic-python-agent | 0 | 3.3.3~dev6-3.13.2 |
| SUSE:OpenStack Cloud 9 | openstack-keystone | 0 | 14.1.1~dev36-3.19.3 |
| SUSE:OpenStack Cloud 9 | openstack-magnum | 0 | 7.2.1~dev1-3.10.3 |
| SUSE:OpenStack Cloud 9 | openstack-monasca-agent | 0 | 2.8.1~dev13-3.6.2 |
| SUSE:OpenStack Cloud 9 | openstack-neutron | 0 | 13.0.7~dev48-3.19.3 |
| SUSE:OpenStack Cloud 9 | openstack-neutron-fwaas | 0 | 13.0.3~dev4-3.9.2 |
| SUSE:OpenStack Cloud 9 | openstack-neutron-gbp | 0 | 5.0.1~dev491-3.16.1 |
| SUSE:OpenStack Cloud 9 | openstack-neutron-vpnaas | 0 | 13.0.2~dev6-3.6.2 |
| SUSE:OpenStack Cloud 9 | openstack-nova | 0 | 18.2.4~dev63-3.19.3 |
| SUSE:OpenStack Cloud 9 | openstack-octavia | 0 | 3.2.2~dev8-3.19.1 |
| SUSE:OpenStack Cloud 9 | openstack-octavia-amphora-image | 0 | 0.1.2-7.6.3 |
| SUSE:OpenStack Cloud 9 | openstack-sahara | 0 | 9.0.2~dev15-3.9.2 |
| SUSE:OpenStack Cloud 9 | openstack-swift | 0 | 2.19.2~dev48-3.3.1 |
| SUSE:OpenStack Cloud 9 | python-amqp | 0 | 2.4.2-4.3.1 |
| SUSE:OpenStack Cloud 9 | python-ironic-lib | 0 | 2.14.2-3.3.1 |
| SUSE:OpenStack Cloud 9 | python-keystoneauth1 | 0 | 3.10.1~dev10-3.3.1 |
| SUSE:OpenStack Cloud 9 | python-keystoneclient | 0 | 3.17.1~dev5-3.3.1 |
| SUSE:OpenStack Cloud 9 | python-keystonemiddleware | 0 | 5.2.2~dev3-14.2 |
| SUSE:OpenStack Cloud 9 | python-ovs | 0 | 2.9.0-3.3.1 |
| SUSE:OpenStack Cloud 9 | supportutils-plugin-suse-openstack-cloud | 0 | 9.0.1574431436.987b47d-3.6.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-barbican | 0 | 7.0.1~dev24-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-cinder | 0 | 13.0.9~dev11-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-designate | 0 | 7.0.1~dev23-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-glance | 0 | 17.0.1~dev30-3.13.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-heat | 0 | 11.0.3~dev31-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-horizon | 0 | 14.1.1~dev1-4.14.2 |
| SUSE:OpenStack Cloud 9 | venv-openstack-ironic | 0 | 11.1.4~dev22-4.11.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-keystone | 0 | 14.1.1~dev36-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-magnum | 0 | 7.2.1~dev1-4.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-manila | 0 | 7.3.1~dev15-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-monasca | 0 | 2.7.1~dev10-3.13.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-monasca-ceilometer | 0 | 1.8.2~dev3-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-neutron | 0 | 13.0.7~dev48-6.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-nova | 0 | 18.2.4~dev63-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-octavia | 0 | 3.2.2~dev8-4.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-sahara | 0 | 9.0.2~dev15-3.15.1 |
| SUSE:OpenStack Cloud 9 | venv-openstack-swift | 0 | 2.19.2~dev48-2.10.1 |
| SUSE:OpenStack Cloud Crowbar 9 | crowbar-core | 0 | 6.0+git.1582892022.cbd70e833-3.19.3 |
| SUSE:OpenStack Cloud Crowbar 9 | crowbar-ha | 0 | 6.0+git.1574286261.6fd1a34-3.13.2 |
| SUSE:OpenStack Cloud Crowbar 9 | crowbar-openstack | 0 | 6.0+git.1580922461.67fb3c087-3.19.2 |
| SUSE:OpenStack Cloud Crowbar 9 | crowbar-ui | 0 | 1.3.0+git.1575896697.a01a3a08-17.1 |
| SUSE:OpenStack Cloud Crowbar 9 | keepalived | 0 | 2.0.19-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-barbican | 0 | 7.0.1~dev24-3.6.4 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-ceilometer | 0 | 11.0.2~dev21-3.10.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-cinder | 0 | 13.0.9~dev11-3.16.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-dashboard | 0 | 14.1.1~dev1-3.12.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-dashboard-theme-SUSE | 0 | 2018.2+git.1555335229.5c8dec9-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-designate | 0 | 7.0.1~dev23-3.13.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-heat | 0 | 11.0.3~dev31-3.13.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-horizon-plugin-designate-ui | 0 | 7.0.1~dev8-3.6.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-horizon-plugin-ironic-ui | 0 | 3.3.1~dev14-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-horizon-plugin-neutron-lbaas-ui | 0 | 5.0.1~dev8-11.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-horizon-plugin-octavia-ui | 0 | 2.0.2~dev1-1.3.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-ironic | 0 | 11.1.4~dev22-3.13.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-ironic-python-agent | 0 | 3.3.3~dev6-3.13.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-keystone | 0 | 14.1.1~dev36-3.19.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-magnum | 0 | 7.2.1~dev1-3.10.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-monasca-agent | 0 | 2.8.1~dev13-3.6.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-neutron | 0 | 13.0.7~dev48-3.19.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-neutron-fwaas | 0 | 13.0.3~dev4-3.9.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-neutron-gbp | 0 | 5.0.1~dev491-3.16.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-neutron-vpnaas | 0 | 13.0.2~dev6-3.6.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-nova | 0 | 18.2.4~dev63-3.19.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-octavia | 0 | 3.2.2~dev8-3.19.1 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-octavia-amphora-image | 0 | 0.1.2-7.6.3 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-sahara | 0 | 9.0.2~dev15-3.9.2 |
| SUSE:OpenStack Cloud Crowbar 9 | openstack-swift | 0 | 2.19.2~dev48-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | python-amqp | 0 | 2.4.2-4.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | python-ironic-lib | 0 | 2.14.2-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | python-keystoneauth1 | 0 | 3.10.1~dev10-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | python-keystoneclient | 0 | 3.17.1~dev5-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | python-keystonemiddleware | 0 | 5.2.2~dev3-14.2 |
| SUSE:OpenStack Cloud Crowbar 9 | python-ovs | 0 | 2.9.0-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | rubygem-crowbar-client | 0 | 3.9.1-3.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | rubygem-puma | 0 | 2.16.0-4.3.1 |
| SUSE:OpenStack Cloud Crowbar 9 | supportutils-plugin-suse-openstack-cloud | 0 | 9.0.1574431436.987b47d-3.6.1 |
| Ubuntu:16.04:LTS | libxslt | 0 | 1.1.28-2.1ubuntu0.3 |
| Ubuntu:18.04:LTS | libxslt | 0 | 1.1.29-5ubuntu0.2 |
| Ubuntu:Pro:14.04:LTS | libxslt | 0 | 1.1.28-2ubuntu0.2+esm1 |
| openSUSE:Leap 15.1 | libxslt | 0 | 1.1.32-lp151.3.6.1 |
| openSUSE:Leap 15.1 | libxslt-python | 0 | 1.1.32-lp151.3.6.1 |
| openSUSE:Tumbleweed | libxslt | 0 | 1.1.34-3.2 |
Related vulnerabilities
- GHSA-vcc3-rw6f-jv97 Duplicate Advisory: Use-after-free in libxml2 via Nokogiri::XML::Reader Also affects nokogiri
- GHSA-pxvg-2qj5-37jq Nokogiri updates packaged libxml2 to v2.10.4 to resolve multiple CVEs Also affects nokogiri
- GHSA-2qc6-mcvw-92cw Update bundled libxml2 to v2.10.3 to resolve multiple CVEs Also affects nokogiri
- GHSA-cgx6-hpwq-fhv5 Integer Overflow or Wraparound in libxml2 affects Nokogiri Also affects nokogiri
- GHSA-gx8x-g87m-h5q6 Denial of Service (DoS) in Nokogiri on JRuby Also affects nokogiri
- GHSA-xxx9-3xcr-gjj3 XML Injection in Xerces Java affects Nokogiri Also affects nokogiri
- GHSA-v6gp-9mmm-c6p5 Out-of-bounds Write in zlib affects Nokogiri Also affects nokogiri
- GHSA-fq42-c5rg-92c2 Vulnerable dependencies in Nokogiri Also affects nokogiri