
Exploit de prueba de concepto para CVE-2026-11103 que demuestra el bypass del límite de velocidad de GraphQL mediante batching y alias de campos; incluye un servidor Node.js vulnerable y un script de explotación en 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'));
Una API de GraphQL aplica la limitación de tasa en función del número de solicitudes HTTP, no de la complejidad ni del número de campos resueltos. Mediante el uso de alias de campo, un atacante puede emitir múltiples consultas costosas dentro de una sola solicitud HTTP, omitiendo efectivamente el límite de tasa.
npm install express express-graphql graphql
node graphql_rate_limit_server.js
python exploit_graphql_alias_bypass.py