Skip to content

Commit f84301e

Browse files
committed
JS: add tests with res.sendFile root option
1 parent c37d655 commit f84301e

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

javascript/ql/test/query-tests/Security/CWE-022/TaintedPath.expected

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ nodes
8484
| tainted-require.js:7:19:7:37 | req.param("module") |
8585
| tainted-sendFile.js:7:16:7:33 | req.param("gimme") |
8686
| tainted-sendFile.js:9:16:9:33 | req.param("gimme") |
87+
| tainted-sendFile.js:12:16:12:33 | req.param("gimme") |
88+
| tainted-sendFile.js:14:16:14:33 | req.param("gimme") |
89+
| tainted-sendFile.js:17:16:17:32 | req.param("file") |
8790
| views.js:1:43:1:55 | req.params[0] |
8891
edges
8992
| TaintedPath-es6.js:7:7:7:44 | path | TaintedPath-es6.js:10:41:10:44 | path |
@@ -188,4 +191,7 @@ edges
188191
| tainted-require.js:7:19:7:37 | req.param("module") | tainted-require.js:7:19:7:37 | req.param("module") | tainted-require.js:7:19:7:37 | req.param("module") | This path depends on $@. | tainted-require.js:7:19:7:37 | req.param("module") | a user-provided value |
189192
| tainted-sendFile.js:7:16:7:33 | req.param("gimme") | tainted-sendFile.js:7:16:7:33 | req.param("gimme") | tainted-sendFile.js:7:16:7:33 | req.param("gimme") | This path depends on $@. | tainted-sendFile.js:7:16:7:33 | req.param("gimme") | a user-provided value |
190193
| tainted-sendFile.js:9:16:9:33 | req.param("gimme") | tainted-sendFile.js:9:16:9:33 | req.param("gimme") | tainted-sendFile.js:9:16:9:33 | req.param("gimme") | This path depends on $@. | tainted-sendFile.js:9:16:9:33 | req.param("gimme") | a user-provided value |
194+
| tainted-sendFile.js:12:16:12:33 | req.param("gimme") | tainted-sendFile.js:12:16:12:33 | req.param("gimme") | tainted-sendFile.js:12:16:12:33 | req.param("gimme") | This path depends on $@. | tainted-sendFile.js:12:16:12:33 | req.param("gimme") | a user-provided value |
195+
| tainted-sendFile.js:14:16:14:33 | req.param("gimme") | tainted-sendFile.js:14:16:14:33 | req.param("gimme") | tainted-sendFile.js:14:16:14:33 | req.param("gimme") | This path depends on $@. | tainted-sendFile.js:14:16:14:33 | req.param("gimme") | a user-provided value |
196+
| tainted-sendFile.js:17:16:17:32 | req.param("file") | tainted-sendFile.js:17:16:17:32 | req.param("file") | tainted-sendFile.js:17:16:17:32 | req.param("file") | This path depends on $@. | tainted-sendFile.js:17:16:17:32 | req.param("file") | a user-provided value |
191197
| views.js:1:43:1:55 | req.params[0] | views.js:1:43:1:55 | req.params[0] | views.js:1:43:1:55 | req.params[0] | This path depends on $@. | views.js:1:43:1:55 | req.params[0] | a user-provided value |

javascript/ql/test/query-tests/Security/CWE-022/tainted-sendFile.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,12 @@ app.get('/some/path', function(req, res) {
77
res.sendFile(req.param("gimme"));
88
// BAD: same as above
99
res.sendfile(req.param("gimme"));
10+
11+
// GOOD: ensures files cannot be accessed outside of root folder
12+
res.sendFile(req.param("gimme"), { root: process.cwd() });
13+
// GOOD: ensures files cannot be accessed outside of root folder
14+
res.sendfile(req.param("gimme"), { root: process.cwd() });
15+
16+
// BAD: doesn't help if user controls root
17+
res.sendFile(req.param("file"), { root: req.param("dir") });
1018
});

0 commit comments

Comments
 (0)