Cloudanix VulnDB

CVE-2014-8090

None

CVSS

—

EPSS

5.7%

Published

Nov 21, 2014

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A problem in the way certain older versions of Ruby read specially made XML files lets outsiders flood the computer with work until programs stop responding.

Exploit Available
Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Denial Of Service
Component
Library
Class
XXE
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The REXML parser fails to limit entity expansion in XML documents containing an empty entity referenced through deep nesting, resulting in exponential growth that exhausts CPU and memory.

Why it matters to the business

Applications built on affected Ruby versions can be rendered unavailable by resource exhaustion, leading to service outages, degraded performance, and increased operational costs until the parser is updated.

How an attack unfolds

An attacker crafts an XML document that defines an empty entity and references it recursively many times, then submits it to any Ruby application endpoint that uses REXML for parsing; the incomplete mitigation from prior CVEs allows the expansion to proceed unchecked until the process consumes available resources.

How to fix it

Upgrade Ruby to 1.9.3 patchlevel 551 or newer, 2.0.0 patchlevel 598 or newer, or 2.1.5 or newer; replace REXML usage with a hardened parser where feasible and apply strict XML input validation or size limits as an interim control.

How to confirm the fix worked

Verify the installed Ruby version meets or exceeds the patched patchlevels; replay a known XEE test document against the application and confirm that resource usage remains bounded and no crash occurs.

Typical attack path

  1. Locate a network-accessible Ruby application that accepts and parses untrusted XML via REXML
  2. Generate a minimal XML payload containing an empty entity used in a large number of nested references
  3. Transmit the payload to the target parser
  4. Observe sustained high CPU and memory consumption leading to denial of service

How to detect it

Inspect web server and application logs for spikes in CPU or memory correlated with XML POST or PUT requests; search request bodies and logs for repeated entity declarations or unusually deep entity references; monitor process trees for Ruby instances showing sustained high resource utilization during XML handling.

  • XML containing <!ENTITY .* "".*&.*;> patterns with high nesting depth
  • REXML parser process exhibiting >90% CPU for extended periods on XML input
  • Request logs showing XML payloads exceeding normal size with repeated entity references

What your security team should do

  • Prioritize immediate upgrade of all Ruby runtimes to the listed patched releases
  • Add network-level or application-level XML schema and size restrictions to block expansion attacks
  • Enable resource accounting and alerting on processes that perform XML parsing
  • Review and retire any remaining use of the legacy REXML parser in favor of safer alternatives

The record

The REXML parser in Ruby 1.9.x before 1.9.3 patchlevel 551, 2.0.x before 2.0.0 patchlevel 598, and 2.1.x before 2.1.5 allows remote attackers to cause a denial of service (CPU and memory consumption) a crafted XML document containing an empty string in an entity that is used in a large number of nested entity references, aka an XML Entity Expansion (XEE) attack. NOTE: this vulnerability exists because of an incomplete fix for CVE-2013-1821 and CVE-2014-8080.

Affected packages

Ecosystem Package Introduced Fixed
Debian:6.0 ruby1.8 0 1.8.7.302-2squeeze3
Debian:6.0 ruby1.9.1 0 1.9.2.0-2+deb6u3
Debian:7 ruby1.8 0 1.8.7.358-7.1+deb7u2
Debian:7 ruby1.9.1 0 1.9.3.194-8.1+deb7u3
Mageia:3 ruby 0 1.9.3.p551-1.mga3
Mageia:4 ruby 0 2.0.0.p598-1.mga4
Red Hat:enterprise_linux:6::client ruby 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-debuginfo 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-devel 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-docs 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-irb 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-libs 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-rdoc 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-ri 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-static 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::client ruby-tcltk 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-debuginfo 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-devel 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-docs 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-irb 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-libs 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-rdoc 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-ri 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-static 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::computenode ruby-tcltk 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-debuginfo 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-devel 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-docs 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-irb 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-libs 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-rdoc 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-ri 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-static 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::server ruby-tcltk 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-debuginfo 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-devel 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-docs 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-irb 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-libs 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-rdoc 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-ri 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-static 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:6::workstation ruby-tcltk 0 0:1.8.7.374-3.el6_6
Red Hat:enterprise_linux:7::client ruby 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::client ruby-debuginfo 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::client ruby-devel 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::client ruby-doc 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::client ruby-irb 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::client ruby-libs 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::client ruby-tcltk 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::client rubygem-bigdecimal 0 0:1.2.0-22.el7_0
Red Hat:enterprise_linux:7::client rubygem-io-console 0 0:0.4.2-22.el7_0
Red Hat:enterprise_linux:7::client rubygem-json 0 0:1.7.7-22.el7_0
Red Hat:enterprise_linux:7::client rubygem-minitest 0 0:4.3.2-22.el7_0
Red Hat:enterprise_linux:7::client rubygem-psych 0 0:2.0.0-22.el7_0
Red Hat:enterprise_linux:7::client rubygem-rake 0 0:0.9.6-22.el7_0
Red Hat:enterprise_linux:7::client rubygem-rdoc 0 0:4.0.0-22.el7_0
Red Hat:enterprise_linux:7::client rubygems 0 0:2.0.14-22.el7_0
Red Hat:enterprise_linux:7::client rubygems-devel 0 0:2.0.14-22.el7_0
Red Hat:enterprise_linux:7::computenode ruby 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::computenode ruby-debuginfo 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::computenode ruby-devel 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::computenode ruby-doc 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::computenode ruby-irb 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::computenode ruby-libs 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::computenode ruby-tcltk 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygem-bigdecimal 0 0:1.2.0-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygem-io-console 0 0:0.4.2-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygem-json 0 0:1.7.7-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygem-minitest 0 0:4.3.2-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygem-psych 0 0:2.0.0-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygem-rake 0 0:0.9.6-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygem-rdoc 0 0:4.0.0-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygems 0 0:2.0.14-22.el7_0
Red Hat:enterprise_linux:7::computenode rubygems-devel 0 0:2.0.14-22.el7_0
Red Hat:enterprise_linux:7::server ruby 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::server ruby-debuginfo 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::server ruby-devel 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::server ruby-doc 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::server ruby-irb 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::server ruby-libs 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::server ruby-tcltk 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::server rubygem-bigdecimal 0 0:1.2.0-22.el7_0
Red Hat:enterprise_linux:7::server rubygem-io-console 0 0:0.4.2-22.el7_0
Red Hat:enterprise_linux:7::server rubygem-json 0 0:1.7.7-22.el7_0
Red Hat:enterprise_linux:7::server rubygem-minitest 0 0:4.3.2-22.el7_0
Red Hat:enterprise_linux:7::server rubygem-psych 0 0:2.0.0-22.el7_0
Red Hat:enterprise_linux:7::server rubygem-rake 0 0:0.9.6-22.el7_0
Red Hat:enterprise_linux:7::server rubygem-rdoc 0 0:4.0.0-22.el7_0
Red Hat:enterprise_linux:7::server rubygems 0 0:2.0.14-22.el7_0
Red Hat:enterprise_linux:7::server rubygems-devel 0 0:2.0.14-22.el7_0
Red Hat:enterprise_linux:7::workstation ruby 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::workstation ruby-debuginfo 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::workstation ruby-devel 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::workstation ruby-doc 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::workstation ruby-irb 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::workstation ruby-libs 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::workstation ruby-tcltk 0 0:2.0.0.353-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygem-bigdecimal 0 0:1.2.0-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygem-io-console 0 0:0.4.2-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygem-json 0 0:1.7.7-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygem-minitest 0 0:4.3.2-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygem-psych 0 0:2.0.0-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygem-rake 0 0:0.9.6-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygem-rdoc 0 0:4.0.0-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygems 0 0:2.0.14-22.el7_0
Red Hat:enterprise_linux:7::workstation rubygems-devel 0 0:2.0.14-22.el7_0
Red Hat:rhel_software_collections:1::el6 ruby193-ruby 0 0:1.9.3.484-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-ruby-debuginfo 0 0:1.9.3.484-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-ruby-devel 0 0:1.9.3.484-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-ruby-doc 0 0:1.9.3.484-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-ruby-irb 0 0:1.9.3.484-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-ruby-libs 0 0:1.9.3.484-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-ruby-tcltk 0 0:1.9.3.484-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-rubygem-bigdecimal 0 0:1.1.0-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-rubygem-io-console 0 0:0.3-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-rubygem-json 0 0:1.5.5-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-rubygem-minitest 0 0:2.5.1-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-rubygem-rake 0 0:0.9.2.2-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-rubygem-rdoc 0 0:3.9.5-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-rubygems 0 0:1.8.23-50.el6
Red Hat:rhel_software_collections:1::el6 ruby193-rubygems-devel 0 0:1.8.23-50.el6
Red Hat:rhel_software_collections:1::el6 ruby200-ruby 0 0:2.0.0.353-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-ruby-debuginfo 0 0:2.0.0.353-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-ruby-devel 0 0:2.0.0.353-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-ruby-doc 0 0:2.0.0.353-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-ruby-irb 0 0:2.0.0.353-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-ruby-libs 0 0:2.0.0.353-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-ruby-tcltk 0 0:2.0.0.353-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygem-bigdecimal 0 0:1.2.0-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygem-io-console 0 0:0.4.2-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygem-json 0 0:1.7.7-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygem-minitest 0 0:4.3.2-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygem-psych 0 0:2.0.0-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygem-rake 0 0:0.9.6-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygem-rdoc 0 0:4.0.0-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygems 0 0:2.0.14-24.el6
Red Hat:rhel_software_collections:1::el6 ruby200-rubygems-devel 0 0:2.0.14-24.el6
Red Hat:rhel_software_collections:1::el7 ruby193-ruby 0 0:1.9.3.484-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-ruby-debuginfo 0 0:1.9.3.484-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-ruby-devel 0 0:1.9.3.484-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-ruby-doc 0 0:1.9.3.484-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-ruby-irb 0 0:1.9.3.484-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-ruby-libs 0 0:1.9.3.484-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-ruby-tcltk 0 0:1.9.3.484-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-rubygem-bigdecimal 0 0:1.1.0-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-rubygem-io-console 0 0:0.3-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-rubygem-json 0 0:1.5.5-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-rubygem-minitest 0 0:2.5.1-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-rubygem-rake 0 0:0.9.2.2-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-rubygem-rdoc 0 0:3.9.5-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-rubygems 0 0:1.8.23-50.el7
Red Hat:rhel_software_collections:1::el7 ruby193-rubygems-devel 0 0:1.8.23-50.el7
Red Hat:rhel_software_collections:1::el7 ruby200-ruby 0 0:2.0.0.353-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-ruby-debuginfo 0 0:2.0.0.353-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-ruby-devel 0 0:2.0.0.353-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-ruby-doc 0 0:2.0.0.353-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-ruby-irb 0 0:2.0.0.353-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-ruby-libs 0 0:2.0.0.353-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-ruby-tcltk 0 0:2.0.0.353-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygem-bigdecimal 0 0:1.2.0-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygem-io-console 0 0:0.4.2-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygem-json 0 0:1.7.7-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygem-minitest 0 0:4.3.2-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygem-psych 0 0:2.0.0-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygem-rake 0 0:0.9.6-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygem-rdoc 0 0:4.0.0-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygems 0 0:2.0.14-24.el7
Red Hat:rhel_software_collections:1::el7 ruby200-rubygems-devel 0 0:2.0.14-24.el7
Ubuntu:14.04:LTS ruby1.9.1 0 1.9.3.484-2ubuntu1.2
Ubuntu:14.04:LTS ruby2.0 0 2.0.0.484-1ubuntu2.2

Related vulnerabilities