File tree Expand file tree Collapse file tree 3 files changed +11
-2
lines changed
src/semmle/javascript/security/dataflow
test/query-tests/Security/CWE-918 Expand file tree Collapse file tree 3 files changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -72,16 +72,20 @@ module RequestForgery {
7272
7373 ClientRequest request ;
7474
75+ string kind ;
76+
7577 ClientRequestUrlAsSink ( ) {
76- this = request .getUrl ( )
78+ this = request .getUrl ( ) and kind = "URL" or
79+ this = request .getHost ( ) and kind = "host"
7780 }
7881
7982 override DataFlow:: Node getARequest ( ) {
8083 result = request
8184 }
8285
8386 override string getKind ( ) {
84- result = "URL"
87+ result = kind
8588 }
89+
8690 }
8791}
Original file line number Diff line number Diff line change @@ -13,13 +13,15 @@ nodes
1313| tst.js:26:36:26:42 | tainted |
1414| tst.js:28:13:28:43 | "http:/ ... tainted |
1515| tst.js:28:37:28:43 | tainted |
16+ | tst.js:32:34:32:40 | tainted |
1617edges
1718| tst.js:12:9:12:52 | tainted | tst.js:16:13:16:19 | tainted |
1819| tst.js:12:9:12:52 | tainted | tst.js:18:17:18:23 | tainted |
1920| tst.js:12:9:12:52 | tainted | tst.js:21:19:21:25 | tainted |
2021| tst.js:12:9:12:52 | tainted | tst.js:24:25:24:31 | tainted |
2122| tst.js:12:9:12:52 | tainted | tst.js:26:36:26:42 | tainted |
2223| tst.js:12:9:12:52 | tainted | tst.js:28:37:28:43 | tainted |
24+ | tst.js:12:9:12:52 | tainted | tst.js:32:34:32:40 | tainted |
2325| tst.js:12:19:12:42 | url.par ... , true) | tst.js:12:19:12:48 | url.par ... ).query |
2426| tst.js:12:19:12:48 | url.par ... ).query | tst.js:12:19:12:52 | url.par ... ery.url |
2527| tst.js:12:19:12:52 | url.par ... ery.url | tst.js:12:9:12:52 | tainted |
3436| tst.js:24:5:24:32 | request ... ainted) | tst.js:12:29:12:35 | req.url | tst.js:24:13:24:31 | "http://" + tainted | The $@ of this request depends on $@. | tst.js:24:13:24:31 | "http://" + tainted | URL | tst.js:12:29:12:35 | req.url | a user-provided value |
3537| tst.js:26:5:26:43 | request ... ainted) | tst.js:12:29:12:35 | req.url | tst.js:26:13:26:42 | "http:/ ... tainted | The $@ of this request depends on $@. | tst.js:26:13:26:42 | "http:/ ... tainted | URL | tst.js:12:29:12:35 | req.url | a user-provided value |
3638| tst.js:28:5:28:44 | request ... ainted) | tst.js:12:29:12:35 | req.url | tst.js:28:13:28:43 | "http:/ ... tainted | The $@ of this request depends on $@. | tst.js:28:13:28:43 | "http:/ ... tainted | URL | tst.js:12:29:12:35 | req.url | a user-provided value |
39+ | tst.js:32:5:32:42 | http.ge ... inted}) | tst.js:12:29:12:35 | req.url | tst.js:32:34:32:40 | tainted | The $@ of this request depends on $@. | tst.js:32:34:32:40 | tainted | host | tst.js:12:29:12:35 | req.url | a user-provided value |
Original file line number Diff line number Diff line change @@ -28,4 +28,6 @@ var server = http.createServer(function(req, res) {
2828 request ( "http://example.com/" + tainted ) ; // NOT OK
2929
3030 request ( "http://example.com/?" + tainted ) ; // OK
31+
32+ http . get ( relativeUrl , { host : tainted } ) ; // NOT OK
3133} )
You can’t perform that action at this time.
0 commit comments