Files
codeql/javascript/ql/src/Security/CWE-770/MissingRateLimiting.ql
2021-12-15 16:21:41 +01:00

30 lines
1.0 KiB
Plaintext

/**
* @name Missing rate limiting
* @description An HTTP request handler that performs expensive operations without
* restricting the rate at which operations can be carried out is vulnerable
* to denial-of-service attacks.
* @kind problem
* @problem.severity warning
* @security-severity 7.5
* @precision high
* @id js/missing-rate-limiting
* @tags security
* external/cwe/cwe-770
* external/cwe/cwe-307
* external/cwe/cwe-400
*/
import javascript
import semmle.javascript.security.dataflow.MissingRateLimiting
import semmle.javascript.RestrictedLocations
from
Routing::Node useSite, ExpensiveRouteHandler r, string explanation, DataFlow::Node reference,
string referenceLabel
where
useSite = Routing::getNode(r).getRouteInstallation() and
r.explain(explanation, reference, referenceLabel) and
not useSite.isGuardedByNode(any(RateLimitingMiddleware m).getRoutingNode())
select useSite, "This route handler " + explanation + ", but is not rate-limited.", reference,
referenceLabel