
Proof-of-concept-Exploit für CVE-2026-11103, der die Umgehung des GraphQL-Ratenlimits durch Batching und Feld-Aliase demonstriert; enthält einen verwundbaren Node.js-Server und ein Python-Exploit-Skript.
// 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'));
Eine GraphQL-API erzwingt die Ratenbegrenzung basierend auf der Anzahl der HTTP-Anfragen, nicht auf der Komplexität oder der Anzahl der aufgelösten Felder. Durch die Verwendung von Feld-Aliassen kann ein Angreifer mehrere aufwendige Abfragen in einer einzigen HTTP-Anfrage ausführen und so die Ratenbegrenzung effektiv umgehen.
npm install express express-graphql graphql
node graphql_rate_limit_server.js
python exploit_graphql_alias_bypass.py