Skip to content

Commit 4f4f524

Browse files
committed
JS: Add test for upward traversal
1 parent b733934 commit 4f4f524

File tree

5 files changed

+22
-0
lines changed

5 files changed

+22
-0
lines changed

javascript/ql/test/library-tests/frameworks/Templating/Xss.expected

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ nodes
4343
| projectA/src/index.js:32:16:32:30 | req.query.sinkA |
4444
| projectA/src/index.js:37:16:37:30 | req.query.sinkA |
4545
| projectA/src/index.js:37:16:37:30 | req.query.sinkA |
46+
| projectA/src/index.js:42:16:42:30 | req.query.sinkA |
47+
| projectA/src/index.js:42:16:42:30 | req.query.sinkA |
4648
| projectA/views/main.ejs:2:1:2:12 | <%- sinkA %> |
4749
| projectA/views/main.ejs:2:1:2:12 | <%- sinkA %> |
4850
| projectA/views/main.ejs:2:5:2:9 | sinkA |
@@ -52,6 +54,9 @@ nodes
5254
| projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> |
5355
| projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> |
5456
| projectA/views/subfolder/other.ejs:2:5:2:9 | sinkA |
57+
| projectA/views/upward_traversal.ejs:1:1:1:12 | <%- sinkA %> |
58+
| projectA/views/upward_traversal.ejs:1:1:1:12 | <%- sinkA %> |
59+
| projectA/views/upward_traversal.ejs:1:5:1:9 | sinkA |
5560
| projectB/src/index.js:8:16:8:30 | req.query.sinkB |
5661
| projectB/src/index.js:8:16:8:30 | req.query.sinkB |
5762
| projectB/src/index.js:13:16:13:30 | req.query.sinkB |
@@ -188,12 +193,16 @@ edges
188193
| projectA/src/index.js:32:16:32:30 | req.query.sinkA | projectA/views/subfolder/other.ejs:2:5:2:9 | sinkA |
189194
| projectA/src/index.js:37:16:37:30 | req.query.sinkA | projectA/views/subfolder/other.ejs:2:5:2:9 | sinkA |
190195
| projectA/src/index.js:37:16:37:30 | req.query.sinkA | projectA/views/subfolder/other.ejs:2:5:2:9 | sinkA |
196+
| projectA/src/index.js:42:16:42:30 | req.query.sinkA | projectA/views/upward_traversal.ejs:1:5:1:9 | sinkA |
197+
| projectA/src/index.js:42:16:42:30 | req.query.sinkA | projectA/views/upward_traversal.ejs:1:5:1:9 | sinkA |
191198
| projectA/views/main.ejs:2:5:2:9 | sinkA | projectA/views/main.ejs:2:1:2:12 | <%- sinkA %> |
192199
| projectA/views/main.ejs:2:5:2:9 | sinkA | projectA/views/main.ejs:2:1:2:12 | <%- sinkA %> |
193200
| projectA/views/subfolder/index.ejs:2:5:2:9 | sinkA | projectA/views/subfolder/index.ejs:2:1:2:12 | <%- sinkA %> |
194201
| projectA/views/subfolder/index.ejs:2:5:2:9 | sinkA | projectA/views/subfolder/index.ejs:2:1:2:12 | <%- sinkA %> |
195202
| projectA/views/subfolder/other.ejs:2:5:2:9 | sinkA | projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> |
196203
| projectA/views/subfolder/other.ejs:2:5:2:9 | sinkA | projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> |
204+
| projectA/views/upward_traversal.ejs:1:5:1:9 | sinkA | projectA/views/upward_traversal.ejs:1:1:1:12 | <%- sinkA %> |
205+
| projectA/views/upward_traversal.ejs:1:5:1:9 | sinkA | projectA/views/upward_traversal.ejs:1:1:1:12 | <%- sinkA %> |
197206
| projectB/src/index.js:8:16:8:30 | req.query.sinkB | projectB/views/main.ejs:3:5:3:9 | sinkB |
198207
| projectB/src/index.js:8:16:8:30 | req.query.sinkB | projectB/views/main.ejs:3:5:3:9 | sinkB |
199208
| projectB/src/index.js:13:16:13:30 | req.query.sinkB | projectB/views/main.ejs:3:5:3:9 | sinkB |
@@ -247,6 +256,7 @@ edges
247256
| projectA/views/subfolder/index.ejs:2:1:2:12 | <%- sinkA %> | projectA/src/index.js:17:16:17:30 | req.query.sinkA | projectA/views/subfolder/index.ejs:2:1:2:12 | <%- sinkA %> | Cross-site scripting vulnerability due to $@. | projectA/src/index.js:17:16:17:30 | req.query.sinkA | user-provided value |
248257
| projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> | projectA/src/index.js:32:16:32:30 | req.query.sinkA | projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> | Cross-site scripting vulnerability due to $@. | projectA/src/index.js:32:16:32:30 | req.query.sinkA | user-provided value |
249258
| projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> | projectA/src/index.js:37:16:37:30 | req.query.sinkA | projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> | Cross-site scripting vulnerability due to $@. | projectA/src/index.js:37:16:37:30 | req.query.sinkA | user-provided value |
259+
| projectA/views/upward_traversal.ejs:1:1:1:12 | <%- sinkA %> | projectA/src/index.js:42:16:42:30 | req.query.sinkA | projectA/views/upward_traversal.ejs:1:1:1:12 | <%- sinkA %> | Cross-site scripting vulnerability due to $@. | projectA/src/index.js:42:16:42:30 | req.query.sinkA | user-provided value |
250260
| projectB/views/main.ejs:3:1:3:12 | <%- sinkB %> | projectB/src/index.js:8:16:8:30 | req.query.sinkB | projectB/views/main.ejs:3:1:3:12 | <%- sinkB %> | Cross-site scripting vulnerability due to $@. | projectB/src/index.js:8:16:8:30 | req.query.sinkB | user-provided value |
251261
| projectB/views/main.ejs:3:1:3:12 | <%- sinkB %> | projectB/src/index.js:13:16:13:30 | req.query.sinkB | projectB/views/main.ejs:3:1:3:12 | <%- sinkB %> | Cross-site scripting vulnerability due to $@. | projectB/src/index.js:13:16:13:30 | req.query.sinkB | user-provided value |
252262
| projectB/views/subfolder/index.ejs:3:1:3:12 | <%- sinkB %> | projectB/src/index.js:18:16:18:30 | req.query.sinkB | projectB/views/subfolder/index.ejs:3:1:3:12 | <%- sinkB %> | Cross-site scripting vulnerability due to $@. | projectB/src/index.js:18:16:18:30 | req.query.sinkB | user-provided value |

javascript/ql/test/library-tests/frameworks/Templating/projectA/src/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,9 @@ app.get('/fooA', (req, res) => {
3737
sinkA: req.query.sinkA,
3838
sinkB: req.query.sinkB,
3939
});
40+
41+
res.render('subfolder/subsub', {
42+
sinkA: req.query.sinkA,
43+
sinkB: req.query.sinkB,
44+
});
4045
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<% include ../../upward_traversal %>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<%- sinkA %>
2+
<%= sinkB %>

javascript/ql/test/library-tests/frameworks/Templating/test.expected

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ getLikelyTemplateSyntax
55
| projectA/views/main.ejs:0:0:0:0 | projectA/views/main.ejs | ejs |
66
| projectA/views/subfolder/index.ejs:0:0:0:0 | projectA/views/subfolder/index.ejs | ejs |
77
| projectA/views/subfolder/other.ejs:0:0:0:0 | projectA/views/subfolder/other.ejs | ejs |
8+
| projectA/views/subfolder/subsub/index.ejs:0:0:0:0 | projectA/views/subfolder/subsub/index.ejs | ejs |
9+
| projectA/views/upward_traversal.ejs:0:0:0:0 | projectA/views/upward_traversal.ejs | ejs |
810
| projectB/views/main.ejs:0:0:0:0 | projectB/views/main.ejs | ejs |
911
| projectB/views/subfolder/index.ejs:0:0:0:0 | projectB/views/subfolder/index.ejs | ejs |
1012
| projectB/views/subfolder/other.ejs:0:0:0:0 | projectB/views/subfolder/other.ejs | ejs |
@@ -29,6 +31,7 @@ getTargetFile
2931
| projectA/src/index.js:16:5:19:6 | res.ren ... \\n }) | projectA/views/subfolder/index.ejs:0:0:0:0 | projectA/views/subfolder/index.ejs |
3032
| projectA/src/index.js:31:5:34:6 | res.ren ... \\n }) | projectA/views/subfolder/other.ejs:0:0:0:0 | projectA/views/subfolder/other.ejs |
3133
| projectA/src/index.js:36:5:39:6 | res.ren ... \\n }) | projectA/views/subfolder/other.ejs:0:0:0:0 | projectA/views/subfolder/other.ejs |
34+
| projectA/src/index.js:41:5:44:6 | res.ren ... \\n }) | projectA/views/subfolder/subsub/index.ejs:0:0:0:0 | projectA/views/subfolder/subsub/index.ejs |
3235
| projectB/src/index.js:6:5:9:6 | res.ren ... \\n }) | projectB/views/main.ejs:0:0:0:0 | projectB/views/main.ejs |
3336
| projectB/src/index.js:11:5:14:6 | res.ren ... \\n }) | projectB/views/main.ejs:0:0:0:0 | projectB/views/main.ejs |
3437
| projectB/src/index.js:16:5:19:6 | res.ren ... \\n }) | projectB/views/subfolder/index.ejs:0:0:0:0 | projectB/views/subfolder/index.ejs |
@@ -39,6 +42,7 @@ xssSink
3942
| projectA/views/main.ejs:2:1:2:12 | <%- sinkA %> |
4043
| projectA/views/subfolder/index.ejs:2:1:2:12 | <%- sinkA %> |
4144
| projectA/views/subfolder/other.ejs:2:1:2:12 | <%- sinkA %> |
45+
| projectA/views/upward_traversal.ejs:1:1:1:12 | <%- sinkA %> |
4246
| projectB/views/main.ejs:3:1:3:12 | <%- sinkB %> |
4347
| projectB/views/subfolder/index.ejs:3:1:3:12 | <%- sinkB %> |
4448
| projectB/views/subfolder/other.ejs:3:1:3:12 | <%- sinkB %> |

0 commit comments

Comments
 (0)