
Exploit de prova de conceito para CVE-2026-11103 que demonstra o bypass do rate limit do GraphQL por meio de batching e aliases de campos; inclui servidor Node.js vulnerável e script de exploit em Python.
// graphql_rate_limit_server.js - GraphQL with naive rate limiter
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');
const schema = buildSchema(`
type Query {
secret: String
}
`);
let requestCount = 0;
const rateLimit = (req, res, next) => {
requestCount++;
if (requestCount > 5) {
return res.status(429).send('Rate limit exceeded');
}
next();
};
const root = { secret: () => 'SuperSecretData' };
const app = express();
app.use(rateLimit);
app.use('/graphql', graphqlHTTP({ schema, rootValue: root, graphiql: true }));
app.listen(4000, () => console.log('GraphQL on :4000'));
Uma API GraphQL impõe limitação de taxa com base no número de requisições HTTP, e não na complexidade ou no número de campos resolvidos. Ao usar aliases de campos, um invasor pode emitir várias consultas caras em uma única requisição HTTP, contornando efetivamente o limite de taxa.
npm install express express-graphql graphql
node graphql_rate_limit_server.js
python exploit_graphql_alias_bypass.py