CVE-2019-5419 is a high-severity (CVSS 7.5) Uncontrolled Resource Consumption vulnerability in actionview. 2 public exploit or proof-of-concept references are indexed, so weaponization risk is real. A fix is available for actionview — see the affected versions and patch details below.
Denial of Service Vulnerability in Action View
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
actionview💎actionview💎actionview💎actionview💎actionviewReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects RubyGems packages — download data is not available via public APIs for these ecosystems.
Description
Denial of Service Vulnerability in Action View
Impact
Specially crafted accept headers can cause the Action View template location code to consume 100% CPU, causing the server unable to process requests. This impacts all Rails applications that render views.
All users running an affected release should either upgrade or use one of the workarounds immediately.
Releases
The 6.0.0.beta3, 5.2.2.1, 5.1.6.2, 5.0.7.2, and 4.2.11.1 releases are available at the normal locations.
Workarounds
This vulnerability can be mitigated by wrapping render calls with respond_to blocks. For example, the following example is vulnerable:
class UserController < ApplicationController
def index
render "index"
end
end
But the following code is not vulnerable:
class UserController < ApplicationController
def index
respond_to |format|
format.html { render "index" }
end
end
end
Implicit rendering is impacted, so this code is vulnerable:
class UserController < ApplicationController
def index
end
end
But can be changed this this:
class UserController < ApplicationController
def index
respond_to |format|
format.html { render "index" }
end
end
end
Alternatively to specifying the format, the following monkey patch can be applied in an initializer:
$ cat config/initializers/formats_filter.rb
# frozen_string_literal: true
ActionDispatch::Request.prepend(Module.new do
def formats
super().select do |format|
format.symbol || format.ref == "*/*"
end
end
end)
Please note that only the 5.2.x, 5.1.x, 5.0.x, and 4.2.x series are supported at present. Users of earlier unsupported releases are advised to upgrade as soon as possible as we cannot guarantee the continued availability of security fixes for unsupported releases.
Also note that the patches for this vulnerability are the same as CVE-2019-5418.
Credits
Thanks to John Hawthorn [email protected] of GitHub
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 💎RubyGems | actionview | ≥ 4.0.0&&< 4.2.11.1 | 4.2.11.1bundle update actionview --conservative |
| 💎RubyGems | actionview | ≥ 5.2.0&&< 5.2.2.1 | 5.2.2.1bundle update actionview --conservative |
| 💎RubyGems | actionview | ≥ 5.1.0&&< 5.1.6.2 | 5.1.6.2bundle update actionview --conservative |
| 💎RubyGems | actionview | ≥ 5.0.0&&< 5.0.7.2 | 5.0.7.2bundle update actionview --conservative |
| 💎RubyGems | actionview | ≥ 6.0.0.beta1&&< 6.0.0.beta3 | 6.0.0.beta3bundle update actionview --conservative |
Affected Products
debian linuxdebianfedorafedoraprojectleapopensusecloudformsredhatsoftware collectionsredhatrailsrubyonrailsResearch use only. For defensive security, authorized penetration testing, and academic research only. Never execute exploit code against systems without explicit written authorization.
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for actionview, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update actionview to 4.2.11.1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2019-5419 is resolved across your whole dependency graph.
Workarounds
Cap what an attacker can consume: apply request size, rate and timeout limits in front of the affected component, and run it with memory and CPU limits so exhaustion degrades one worker rather than the whole service.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
This issue did affect the versions of rh-ror42-rubygem-actionview and rh-ror50-rubygem-actionview as shipped with Red Hat Software Collections.
| Product | Fixed in | Advisory |
|---|---|---|
| CloudForms Management Engine 5.10 | ansible-tower-0:3.4.3-1.el7at | RHSA-2019:0796 |
| CloudForms Management Engine 5.9 | cfme-0:5.9.9.3-1.el7cf | RHSA-2019:1289 |
| Red Hat Software Collections for Red Hat Enterprise Linux 6 | rh-ror50-rubygem-actionpack-1:5.0.1-2.el6 | RHSA-2019:1147 |
| Red Hat Software Collections for Red Hat Enterprise Linux 6 | rh-ror42-rubygem-actionpack-1:4.2.6-5.el6 | RHSA-2019:1149 |
Frequently Asked Questions
Is CVE-2019-5419 in your dependencies?
Find it across RubyGems, including transitive dependencies.