CVE-2026-33286
CRITICALSeverity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
Lifecycle Timeline
3DescriptionGitHub Advisory
Summary
An arbitrary method execution vulnerability has been found which affects Graphiti's JSONAPI write functionality. An attacker can craft a malicious JSONAPI payload with arbitrary relationship names to invoke any public method on the underlying model instance, class or its associations.
Impact
Any application exposing Graphiti write endpoints (create/update/delete) to untrusted users is affected.
The Graphiti::Util::ValidationResponse#all_valid? method recursively calls model.send(name) using relationship names taken directly from user-supplied JSONAPI payloads, without validating them against the resource's configured sideloads. This allows an attacker to potentially run any public method on a given model instance, on the instance class or associated instances or classes, including destructive operations.
Patches
This is patched in Graphiti v1.10.2. Users should upgrade as soon as possible.
Workarounds
If upgrading to v1.10.2 is not immediately possible, consider one or more of the following mitigations:
- Restrict write access: Ensure Graphiti write endpoints (create/update/delete) are not accessible to untrusted users.
- Authentication & authorisation: Apply strong authentication and authorisation checks before any write operation is processed, for example use Rails strong parameters to ensure only valid parameters are processed.
AnalysisAI
A critical arbitrary method execution vulnerability affects Graphiti's JSONAPI write functionality, allowing attackers to invoke any public method on underlying model instances, classes, or associations through crafted JSONAPI payloads. Applications using Graphiti (a Ruby gem for building JSON:API compliant APIs) that expose write endpoints to untrusted users are affected, particularly versions prior to 1.10.2. The vulnerability scores CVSS 9.1 (Critical) with network-based exploitation requiring no authentication or user interaction, enabling both high integrity and availability impacts.
Technical ContextAI
Graphiti is a Ruby gem (pkg:rubygems/graphiti) for building JSON:API compliant REST APIs, commonly used in Rails applications. The vulnerability stems from CWE-913 (Improper Control of Dynamically-Identified Variables), specifically in the Graphiti::Util::ValidationResponse#all_valid? method which recursively calls model.send(name) using relationship names taken directly from user-supplied JSONAPI payloads. The code fails to validate these relationship names against the resource's configured sideloads before executing them via Ruby's send method, which enables dynamic method invocation. This allows arbitrary public method execution on ActiveRecord models or their associations, bypassing intended API boundaries.
RemediationAI
Upgrade Graphiti to version 1.10.2 or later immediately, as documented in the official security advisory at https://github.com/graphiti-api/graphiti/security/advisories/GHSA-3m5v-4xp5-gjg2. Update your Gemfile to specify 'gem graphiti, >= 1.10.2' and run bundle update graphiti. If immediate upgrading is not feasible, implement temporary mitigations including restricting Graphiti write endpoints to authenticated and authorized users only, implementing strict input validation using Rails strong parameters to whitelist allowed relationship names, and potentially disabling write endpoints entirely until patching is complete. Apply network-level access controls to limit write endpoint exposure to trusted IP ranges during the remediation window.
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
GHSA-3m5v-4xp5-gjg2