Skip to content

Commit 74f115f

Browse files
committed
JS: add test case
1 parent 2a87d53 commit 74f115f

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

javascript/ql/test/query-tests/Security/CWE-089/SqlInjection.expected

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
| mongodb.js:18:16:18:20 | query | This query depends on $@. | mongodb.js:13:19:13:26 | req.body | a user-provided value |
22
| mongodb.js:39:16:39:20 | query | This query depends on $@. | mongodb.js:34:19:34:33 | req.query.title | a user-provided value |
3-
| mongoose.js:24:19:24:23 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
3+
| mongoose.js:27:20:27:24 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
4+
| mongoose.js:30:25:30:29 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
5+
| mongoose.js:33:24:33:28 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
6+
| mongoose.js:36:31:36:35 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
7+
| mongoose.js:39:19:39:23 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
8+
| mongoose.js:42:22:42:26 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
9+
| mongoose.js:45:31:45:35 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
10+
| mongoose.js:48:31:48:35 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
11+
| mongoose.js:51:31:51:35 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
12+
| mongoose.js:54:25:54:29 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
13+
| mongoose.js:57:21:57:25 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
14+
| mongoose.js:60:25:60:29 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
15+
| mongoose.js:63:24:63:28 | query | This query depends on $@. | mongoose.js:21:19:21:26 | req.body | a user-provided value |
416
| mongooseJsonParse.js:23:19:23:23 | query | This query depends on $@. | mongooseJsonParse.js:20:30:20:43 | req.query.data | a user-provided value |
517
| tst2.js:9:27:9:84 | "select ... d + "'" | This query depends on $@. | tst2.js:9:66:9:78 | req.params.id | a user-provided value |
618
| tst3.js:10:14:10:19 | query1 | This query depends on $@. | tst3.js:9:16:9:34 | req.params.category | a user-provided value |

javascript/ql/test/query-tests/Security/CWE-089/mongoose.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,46 @@ app.post('/documents/find', (req, res) => {
2020
const query = {};
2121
query.title = req.body.title;
2222

23+
// NOT OK: query is tainted by user-provided object value
24+
Document.aggregate('type', query);
25+
26+
// NOT OK: query is tainted by user-provided object value
27+
Document.count(query);
28+
29+
// NOT OK: query is tainted by user-provided object value
30+
Document.deleteMany(query);
31+
32+
// NOT OK: query is tainted by user-provided object value
33+
Document.deleteOne(query);
34+
35+
// NOT OK: query is tainted by user-provided object value
36+
Document.distinct('type', query);
37+
2338
// NOT OK: query is tainted by user-provided object value
2439
Document.find(query);
40+
41+
// NOT OK: query is tainted by user-provided object value
42+
Document.findOne(query);
43+
44+
// NOT OK: query is tainted by user-provided object value
45+
Document.findOneAndDelete(query);
46+
47+
// NOT OK: query is tainted by user-provided object value
48+
Document.findOneAndRemove(query);
49+
50+
// NOT OK: query is tainted by user-provided object value
51+
Document.findOneAndUpdate(query);
52+
53+
// NOT OK: query is tainted by user-provided object value
54+
Document.replaceOne(query);
55+
56+
// NOT OK: query is tainted by user-provided object value
57+
Document.update(query);
58+
59+
// NOT OK: query is tainted by user-provided object value
60+
Document.updateMany(query);
61+
62+
// NOT OK: query is tainted by user-provided object value
63+
Document.updateOne(query);
2564
});
2665

0 commit comments

Comments
 (0)