Open
Description
Just found this reading the code :
https://github.com/moleculerjs/moleculer-web/blob/master/src/index.js#L1351C47-L1351C47
let opts = Object.assign({}, {
window: 60 * 1000,
limit: 30,
headers: false,
key: (req) => {
return req.headers["x-forwarded-for"] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
}
}, rateLimit);
getting ip from x-forwarded-for
without checking if connection.remoteAddress
is a trusted proxy is a security problem .
because I can send the header x-forwarded-for
manually .
( not a big problem, but keep in mind that someone can bypass the rate limiter ) .
Also, while headers are lowercase in node.js, this is not the case for all implementations. For example, node.js in AWS Lambda does not convert headers to lowercase.
Metadata
Metadata
Assignees
Labels
No labels