Cloudanix VulnDB

CVE-2023-22795

High · 7.5

CVSS

7.5

EPSS

2.3%

Published

Feb 9, 2023

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in affected web applications can let someone repeatedly send bad requests that slow down or knock the service offline.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Denial Of Service
Component
Web Framework
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This vulnerability is a denial-of-service issue in Ruby on Rails, specifically in request-handling logic where specially crafted HTTP input can trigger excessive processing. A remote attacker may be able to send malformed or adversarial requests that cause application worker processes to consume disproportionate CPU time or become tied up, reducing service capacity. The flaw does not directly enable code execution, privilege escalation, or data theft, but it can degrade or interrupt availability of Rails-based applications and downstream packaged products that include vulnerable Rails components, including listed Cacti packages.

Why it matters to the business

Successful exploitation can make affected web applications slow, unstable, or unavailable, disrupting monitoring, dashboards, APIs, and business workflows that depend on them. For Cacti deployments, this may impair infrastructure monitoring visibility during an incident. The vulnerability is not currently listed in CISA KEV, is not marked as ransomware-used, and has a relatively low EPSS score, but it has been public since 2023, so remediation should be treated as standard hygiene for any internet-facing or critical Rails-based service.

How an attack unfolds

An attacker identifies an exposed application or packaged product using a vulnerable Rails version. They send crafted HTTP requests designed to hit the vulnerable Rails request-processing path. Instead of being handled quickly, the request causes expensive parsing or matching behavior, tying up application workers or consuming CPU. By repeating these requests or sending them concurrently, the attacker can exhaust available web/application server capacity. Users may then experience high latency, failed requests, timeouts, or intermittent service outages. Because this is a denial-of-service condition, exploitation may leave limited application-layer artifacts beyond unusual request patterns and resource exhaustion symptoms.

How to fix it

Upgrade affected packages to fixed versions or later. For Debian Cacti packages, update to cacti 1.1.27+ds1-3 or later on Debian 11, 12, and 13. For Ubuntu 18.04 LTS Cacti packages, update to cacti 1.1.38+ds1-1 or later. For Rails source deployments, ensure the Rails codebase includes the upstream fix at commit c443466a99f8ed951605fb4993a01de5e41349a4 or use a Rails release that incorporates that fix. If immediate patching is not possible, reduce exposure by placing affected applications behind a reverse proxy or WAF with request-size, header-size, URL-length, and rate limits; enforce per-client throttling; tune application server worker limits and request timeouts; and restrict administrative or monitoring interfaces to trusted networks where feasible.

How to confirm the fix worked

Confirm the installed package or dependency version is at or above the fixed version. On Debian or Ubuntu systems, use package inventory tools such as dpkg-query or apt policy to verify the installed Cacti version. For Rails applications, inspect the Gemfile.lock, package manifest, or source revision to confirm the Rails version or commit includes the upstream fix. Validate that web and application servers enforce sane request limits and timeouts. After patching, monitor that application workers no longer show abnormal CPU spikes or request backlog when exposed to malformed or oversized HTTP requests in a controlled test environment.

Typical attack path

  1. Discover an internet-facing Rails-based application or affected packaged product such as Cacti.
  2. Fingerprint the application stack or infer Rails usage from headers, routes, errors, assets, or package metadata.
  3. Send specially crafted HTTP requests that exercise the vulnerable Rails request-processing code path.
  4. Increase request volume or concurrency to consume application workers, CPU, or web server queues.
  5. Sustain the traffic until legitimate users experience slow responses, 5xx errors, timeouts, or service unavailability.

How to detect it

Look for signs of attempted or successful denial of service rather than a single definitive exploit string. Useful sources include reverse proxy logs, web server access and error logs, Rails production logs, application server logs, load balancer telemetry, WAF events, host CPU metrics, process monitoring, and APM traces. Investigate time windows with sudden CPU saturation, increased request latency, application worker exhaustion, request queue growth, and spikes in HTTP 408, 429, 499, 500, 502, 503, or 504 responses. In HTTP logs, look for repeated requests from the same source or small source set with unusually long URLs, abnormal headers, malformed parameters, repeated parsing errors, or requests that take much longer than normal while returning errors or timeouts. For Cacti systems, correlate web access anomalies with gaps in polling, graph generation delays, or monitoring collection failures. Because exploitation may not leave a unique artifact, combine application logs with infrastructure metrics to identify whether availability degradation aligns with suspicious request bursts.

What your security team should do

  • Inventory all Rails-based applications and affected Cacti deployments, prioritizing internet-facing and business-critical services.
  • Patch Cacti and Rails components to the listed fixed versions or later during the next available maintenance window, sooner for externally exposed systems.
  • Apply compensating controls at reverse proxies, load balancers, and WAFs: rate limiting, request timeout enforcement, maximum header size, maximum URL length, and per-client concurrency controls.
  • Review historical web, reverse proxy, application, and infrastructure monitoring logs for unexplained CPU saturation, request timeouts, 502/503/504 responses, and repeated malformed requests.
  • Ensure operational monitoring can alert on application worker exhaustion, queue depth, elevated 5xx rates, and abnormal request latency.
  • Restrict access to monitoring tools such as Cacti to trusted networks or VPN paths where possible.
  • Do not over-prioritize over actively exploited KEV vulnerabilities solely based on this CVE, but avoid leaving it unpatched because it has been publicly known for an extended period.

The record

A regular expression based DoS vulnerability in Action Dispatch <6.1.7.1 and <7.0.4.1 related to the If-None-Match header. A specially crafted HTTP If-None-Match header can cause the regular expression engine to enter a state of catastrophic backtracking, when on a version of Ruby below 3.2.0. This can cause the process to use large amounts of CPU and memory, leading to a possible DoS vulnerability All users running an affected release should either upgrade or use one of the workarounds immediately.

Affected packages

Ecosystem Package Introduced Fixed
RubyGems actionpack 0 6.1.7.1
RubyGems actionpack 4.0.0.beta1 6.1.7.1
RubyGems actionpack 7.0.0 7.0.4.1
Debian:11 rails 0 2:6.0.3.7+dfsg-2+deb11u1
Debian:12 rails 0 2:6.1.7.3+dfsg-1
Debian:13 rails 0 2:6.1.7.3+dfsg-1
Red Hat:satellite:6.14::el8 foreman 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-cli 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-debug 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-dynflow-sidekiq 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-ec2 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-journald 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-libvirt 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-openstack 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-ovirt 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-postgresql 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-redis 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-service 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-telemetry 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 foreman-vmware 0 0:3.7.0.9-1.el8sat
Red Hat:satellite:6.14::el8 puppet-agent 0 0:7.26.0-3.el8sat
Red Hat:satellite:6.14::el8 puppetserver 0 0:7.11.0-1.el8sat
Red Hat:satellite:6.14::el8 python-django 0 0:3.2.21-1.el8pc
Red Hat:satellite:6.14::el8 python-future 0 0:0.18.3-1.el8pc
Red Hat:satellite:6.14::el8 python-gitpython 0 0:3.1.32-1.el8pc
Red Hat:satellite:6.14::el8 python-pulp-ansible 0 1:0.16.0-1.el8pc
Red Hat:satellite:6.14::el8 python-requests 0 0:2.31.0-1.el8pc
Red Hat:satellite:6.14::el8 python-sqlparse 0 0:0.4.4-1.el8pc
Red Hat:satellite:6.14::el8 python39-django 0 0:3.2.21-1.el8pc
Red Hat:satellite:6.14::el8 python39-future 0 0:0.18.3-1.el8pc
Red Hat:satellite:6.14::el8 python39-gitpython 0 0:3.1.32-1.el8pc
Red Hat:satellite:6.14::el8 python39-pulp-ansible 0 1:0.16.0-1.el8pc
Red Hat:satellite:6.14::el8 python39-requests 0 0:2.31.0-1.el8pc
Red Hat:satellite:6.14::el8 python39-sqlparse 0 0:0.4.4-1.el8pc
Red Hat:satellite:6.14::el8 rubygem-actionpack 0 0:6.1.7.3-1.el8sat
Red Hat:satellite:6.14::el8 rubygem-activerecord 0 0:6.1.7.3-1.el8sat
Red Hat:satellite:6.14::el8 rubygem-activesupport 0 0:6.1.7.3-1.el8sat
Red Hat:satellite:6.14::el8 rubygem-git 0 0:1.18.0-1.el8sat
Red Hat:satellite:6.14::el8 rubygem-globalid 0 0:1.1.0-1.el8sat
Red Hat:satellite:6.14::el8 rubygem-kubeclient 0 0:4.10.1-1.el8sat
Red Hat:satellite:6.14::el8 rubygem-rack 0 0:2.2.7-1.el8sat
Red Hat:satellite:6.14::el8 yggdrasil-worker-forwarder 0 0:0.0.3-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-cli 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-debug 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-dynflow-sidekiq 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-ec2 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-journald 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-libvirt 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-openstack 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-ovirt 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-postgresql 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-redis 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-service 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-telemetry 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 foreman-vmware 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_capsule:6.14::el8 puppet-agent 0 0:7.26.0-3.el8sat
Red Hat:satellite_capsule:6.14::el8 puppetserver 0 0:7.11.0-1.el8sat
Red Hat:satellite_capsule:6.14::el8 python-django 0 0:3.2.21-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python-future 0 0:0.18.3-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python-gitpython 0 0:3.1.32-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python-pulp-ansible 0 1:0.16.0-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python-requests 0 0:2.31.0-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python-sqlparse 0 0:0.4.4-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python39-django 0 0:3.2.21-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python39-future 0 0:0.18.3-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python39-gitpython 0 0:3.1.32-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python39-pulp-ansible 0 1:0.16.0-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python39-requests 0 0:2.31.0-1.el8pc
Red Hat:satellite_capsule:6.14::el8 python39-sqlparse 0 0:0.4.4-1.el8pc
Red Hat:satellite_capsule:6.14::el8 rubygem-rack 0 0:2.2.7-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-cli 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-debug 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-dynflow-sidekiq 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-ec2 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-journald 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-libvirt 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-openstack 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-ovirt 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-postgresql 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-redis 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-service 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-telemetry 0 0:3.7.0.9-1.el8sat
Red Hat:satellite_utils:6.14::el8 foreman-vmware 0 0:3.7.0.9-1.el8sat
SUSE:Linux Enterprise High Availability Extension 15 SP1 rubygem-actionpack-5_1 0 5.1.4-150000.3.15.1
SUSE:Linux Enterprise High Availability Extension 15 SP2 rubygem-actionpack-5_1 0 5.1.4-150000.3.15.1
SUSE:Linux Enterprise High Availability Extension 15 SP3 rubygem-actionpack-5_1 0 5.1.4-150000.3.15.1
SUSE:Linux Enterprise High Availability Extension 15 SP4 rubygem-actionpack-5_1 0 5.1.4-150000.3.15.1
SUSE:OpenStack Cloud Crowbar 8 rubygem-actionpack-4_2 0 4.2.9-7.15.1
SUSE:OpenStack Cloud Crowbar 9 rubygem-actionpack-4_2 0 4.2.9-7.15.1
Ubuntu:20.04:LTS rails 0 No fix
Ubuntu:22.04:LTS rails 0 No fix
Ubuntu:24.04:LTS rails 0 No fix
Ubuntu:24.10 rails 0 No fix
Ubuntu:25.04 rails 0 No fix
Ubuntu:25.10 rails 0 No fix
Ubuntu:Pro:16.04:LTS rails 0 No fix
Ubuntu:Pro:18.04:LTS rails 0 No fix
Ubuntu:Pro:20.04:LTS rails 0 No fix
Ubuntu:Pro:22.04:LTS rails 0 No fix
gem actionpack 7.0.0 7.0.4.1
gem rails 7.0.0 7.0.4.1
openSUSE:Leap 15.4 rubygem-actionpack-5_1 0 5.1.4-150000.3.15.1
openSUSE:Tumbleweed rubygem-actionpack-7.0 0 7.0.4.1-1.1
openSUSE:Tumbleweed rubygem-actionpack-7.0 0 7.0.8.4-1.1
openSUSE:Tumbleweed rubygem-actionpack-7.0 0 7.0.8.6-1.3

Related vulnerabilities