
CVE-2026-22014 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो GraphQL API में persisted-query ID हेरफेर प्रदर्शित करता है ताकि allowlists को बायपास किया जा सके और मनमानी क्वेरी निष्पादित की जा सकें।
// graphql_persisted.js - Accepts persisted query IDs
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const queries = {
"abc": "query { user { name } }"
};
app.post('/graphql', graphqlHTTP({
schema: schema,
customExecuteFn: (args) => {
const doc = parse(queries[args.queryId] || args.query);
return execute(args);
}
}));
एक GraphQL सर्वर persisted queries का समर्थन करता है, लेकिन अज्ञात होने पर दिए गए पैरामीटर का उपयोग करता है। एक हमलावर एक गैर-मौजूद के साथ एक मनमाना GraphQL query प्रदान कर सकता है, जिससे persisted queries की इच्छित allowlist को दरकिनार किया जा सकता है।
queryIdqueryqueryIdqueryId न मिलने पर अनुरोध को अस्वीकार करने के बजाय क्लाइंट द्वारा प्रदान किए गए query पर भरोसा करता है।सर्वर प्रारंभ करें और एक मिश्रित पेलोड भेजें:
python exploit_persisted_query.py
सर्वर दुर्भावनापूर्ण query को निष्पादित करता है।