File tree Expand file tree Collapse file tree 4 files changed +32
-1
lines changed
lib/semmle/javascript/security/dataflow
test/query-tests/Security/CWE-770/MissingRateLimit Expand file tree Collapse file tree 4 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -114,7 +114,14 @@ abstract class RateLimitingMiddleware extends DataFlow::SourceNode {
114
114
* A rate limiter constructed using the `express-rate-limit` package.
115
115
*/
116
116
class ExpressRateLimit extends RateLimitingMiddleware {
117
- ExpressRateLimit ( ) { this = API:: moduleImport ( "express-rate-limit" ) .getReturn ( ) .asSource ( ) }
117
+ ExpressRateLimit ( ) {
118
+ exists ( API:: Node rateLimitImport , API:: Node rateLimit |
119
+ rateLimitImport = API:: moduleImport ( "express-rate-limit" ) and
120
+ rateLimit in [ rateLimitImport , rateLimitImport .getMember ( "rateLimit" ) ]
121
+ |
122
+ this = rateLimit .getReturn ( ) .asSource ( )
123
+ )
124
+ }
118
125
}
119
126
120
127
/**
Original file line number Diff line number Diff line change
1
+ ---
2
+ category : minorAnalysis
3
+ ---
4
+ * Added modeling for importing ` express-rate-limit ` using a named import.
Original file line number Diff line number Diff line change
1
+ import express from "express" ;
2
+ import { rateLimit } from "express-rate-limit" ;
3
+
4
+ const app = express ( ) ;
5
+
6
+ const limiter = rateLimit ( ) ;
7
+ app . use ( limiter )
8
+
9
+ function expensiveHandler ( req , res ) { login ( ) ; }
10
+ app . get ( '/:path' , expensiveHandler ) ; // OK
Original file line number Diff line number Diff line change
1
+ import express from "express" ;
2
+ import rateLimit from "express-rate-limit" ;
3
+
4
+ const app = express ( ) ;
5
+
6
+ const limiter = rateLimit ( ) ;
7
+ app . use ( limiter )
8
+
9
+ function expensiveHandler ( req , res ) { login ( ) ; }
10
+ app . get ( '/:path' , expensiveHandler ) ; // OK
You can’t perform that action at this time.
0 commit comments