Skip to content

Commit c6a2284

Browse files
committed
add test for js/template-object-injection
1 parent 12ee497 commit c6a2284

3 files changed

Lines changed: 55 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
nodes
2+
| tst.js:5:9:5:46 | bodyParameter |
3+
| tst.js:5:25:5:32 | req.body |
4+
| tst.js:5:25:5:32 | req.body |
5+
| tst.js:5:25:5:46 | req.bod ... rameter |
6+
| tst.js:6:9:6:49 | queryParameter |
7+
| tst.js:6:26:6:49 | req.que ... rameter |
8+
| tst.js:6:26:6:49 | req.que ... rameter |
9+
| tst.js:8:28:8:40 | bodyParameter |
10+
| tst.js:8:28:8:40 | bodyParameter |
11+
| tst.js:9:28:9:41 | queryParameter |
12+
| tst.js:9:28:9:41 | queryParameter |
13+
| tst.js:12:32:12:44 | bodyParameter |
14+
| tst.js:12:32:12:44 | bodyParameter |
15+
| tst.js:14:28:14:41 | queryParameter |
16+
| tst.js:14:28:14:46 | queryParameter + "" |
17+
| tst.js:14:28:14:46 | queryParameter + "" |
18+
edges
19+
| tst.js:5:9:5:46 | bodyParameter | tst.js:8:28:8:40 | bodyParameter |
20+
| tst.js:5:9:5:46 | bodyParameter | tst.js:8:28:8:40 | bodyParameter |
21+
| tst.js:5:9:5:46 | bodyParameter | tst.js:12:32:12:44 | bodyParameter |
22+
| tst.js:5:9:5:46 | bodyParameter | tst.js:12:32:12:44 | bodyParameter |
23+
| tst.js:5:25:5:32 | req.body | tst.js:5:25:5:46 | req.bod ... rameter |
24+
| tst.js:5:25:5:32 | req.body | tst.js:5:25:5:46 | req.bod ... rameter |
25+
| tst.js:5:25:5:46 | req.bod ... rameter | tst.js:5:9:5:46 | bodyParameter |
26+
| tst.js:6:9:6:49 | queryParameter | tst.js:9:28:9:41 | queryParameter |
27+
| tst.js:6:9:6:49 | queryParameter | tst.js:9:28:9:41 | queryParameter |
28+
| tst.js:6:9:6:49 | queryParameter | tst.js:14:28:14:41 | queryParameter |
29+
| tst.js:6:26:6:49 | req.que ... rameter | tst.js:6:9:6:49 | queryParameter |
30+
| tst.js:6:26:6:49 | req.que ... rameter | tst.js:6:9:6:49 | queryParameter |
31+
| tst.js:14:28:14:41 | queryParameter | tst.js:14:28:14:46 | queryParameter + "" |
32+
| tst.js:14:28:14:41 | queryParameter | tst.js:14:28:14:46 | queryParameter + "" |
33+
#select
34+
| tst.js:8:28:8:40 | bodyParameter | tst.js:5:25:5:32 | req.body | tst.js:8:28:8:40 | bodyParameter | Template object injection due to $@. | tst.js:5:25:5:32 | req.body | user-provided value |
35+
| tst.js:9:28:9:41 | queryParameter | tst.js:6:26:6:49 | req.que ... rameter | tst.js:9:28:9:41 | queryParameter | Template object injection due to $@. | tst.js:6:26:6:49 | req.que ... rameter | user-provided value |
36+
| tst.js:12:32:12:44 | bodyParameter | tst.js:5:25:5:32 | req.body | tst.js:12:32:12:44 | bodyParameter | Template object injection due to $@. | tst.js:5:25:5:32 | req.body | user-provided value |
37+
| tst.js:14:28:14:46 | queryParameter + "" | tst.js:6:26:6:49 | req.que ... rameter | tst.js:14:28:14:46 | queryParameter + "" | Template object injection due to $@. | tst.js:6:26:6:49 | req.que ... rameter | user-provided value |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
experimental/Security/CWE-073/TemplateObjectInjection.ql
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
var app = require('express')();
2+
app.set('view engine', 'hbs');
3+
4+
app.post('/path', function(req, res) {
5+
var bodyParameter = req.body.bodyParameter;
6+
var queryParameter = req.query.queryParameter;
7+
8+
res.render('template', bodyParameter); // NOT OK
9+
res.render('template', queryParameter); // NOT OK
10+
11+
if (typeof bodyParameter === "string") {
12+
res.render('template', bodyParameter); // OK - but still flagged [INCONSISTENCY]
13+
}
14+
res.render('template', queryParameter + ""); // OK - but still flagged [INCONSISTENCY]
15+
16+
res.render('template', {profile: bodyParameter}); // OK
17+
});

0 commit comments

Comments
 (0)