Miggo Logo

CVE-2025-27097: Cache variables with the operations when transforms exist on the root level even if variables change in the further requests with the same operation

5.1

CVSS Score
4.0

Basic Information

EPSS Score
0.30277%
Published
10/10/2023
Updated
2/28/2025
KEV Status
No
Technology
TechnologyJavaScript

Technical Details

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Package NameEcosystemVulnerable VersionsFirst Patched Version
@graphql-mesh/runtimenpm>= 0.96.5, < 0.96.90.96.9

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from improper caching of execution requests. The commit diff shows a critical change in useSubschema.ts where the transformedRequestCache (which stored full requests with variables) was replaced with transformedDocumentNodeCache (which only caches DocumentNodes). The original implementation's WeakMap<DocumentNode, {transformedRequest: ExecutionRequest}> would retain initial variables across requests, while the patched version WeakMap<DocumentNode, DocumentNode> only preserves the query structure. This matches the vulnerability description where variables weren't properly refreshed between same-operation requests with transforms.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

W**n you **v* tr*ns*orms on t** root l*v*l or sin*l* sour** wit* tr*ns*orms, *n* t** *li*nt s*n*s t** s*m* qu*ry wit* *i***r*nt v*ri**l*s, t** initi*l v*ri**l*s *r* us** in *ll *ollowin* r*qu*sts until t** ***** *vi*ts *o*um*ntNo**. L*t's s*y i* * t

Reasoning

T** vuln*r**ility st*ms *rom improp*r ****in* o* *x**ution r*qu*sts. T** *ommit *i** s*ows * *riti**l ***n** in `us*Su*s***m*.ts` w**r* t** `tr*ns*orm**R*qu*st*****` (w*i** stor** *ull r*qu*sts wit* v*ri**l*s) w*s r*pl**** wit* `tr*ns*orm***o*um*ntNo