Hydroadmin
Hydroadmin
The exploit is performing a GraphQL batch query brute force attack against the PIN verification system.
- Batch GraphQL Queries: Instead of sending individual PIN attempts, the attack bundled 1,500 PIN verification mutations into a single HTTP request
- Systematic Brute Force: It tested all possible 4-digit PINs (0000-9999) by sending ~7 batch requests total
- Rate Limit Bypass: Since it was only making ~7 HTTP requests (not 10,000), it completely bypassed the HTTP-level rate limiting that was configured for 10 requests per minute
Fix (utils/middleware.js)
The fix is minimal we could disable the batching on graphQL endpoint by:
1
2
3
4
5
6
7
8
9
10
11
// Basic middleware setup
export function setupBasicMiddleware(app) {
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use('/challenge/graphql', (req, res, next) => {
if (Array.isArray(req.body)) {
return res.status(400).json({ error: 'Batching disabled' });
}
next();
});
}
This post is licensed under CC BY 4.0 by the author.