Skip to content

Commit c355a26

Browse files
committed
add failing test
1 parent 3f0fe96 commit c355a26

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,17 @@ nodes
6868
| json-schema-validator.js:59:22:59:26 | query |
6969
| json-schema-validator.js:61:22:61:26 | query |
7070
| json-schema-validator.js:61:22:61:26 | query |
71+
| koarouter.js:5:11:5:33 | version |
72+
| koarouter.js:5:13:5:19 | version |
73+
| koarouter.js:5:13:5:19 | version |
74+
| koarouter.js:11:11:11:28 | conditions |
75+
| koarouter.js:11:24:11:28 | ['1'] |
76+
| koarouter.js:14:25:14:46 | `versio ... rsion}` |
77+
| koarouter.js:14:38:14:44 | version |
78+
| koarouter.js:17:27:17:77 | `SELECT ... nd ')}` |
79+
| koarouter.js:17:27:17:77 | `SELECT ... nd ')}` |
80+
| koarouter.js:17:52:17:61 | conditions |
81+
| koarouter.js:17:52:17:75 | conditi ... and ') |
7182
| ldap.js:20:7:20:34 | q |
7283
| ldap.js:20:11:20:34 | url.par ... , true) |
7384
| ldap.js:20:21:20:27 | req.url |
@@ -482,6 +493,16 @@ edges
482493
| json-schema-validator.js:50:23:50:48 | JSON.pa ... y.data) | json-schema-validator.js:50:15:50:48 | query |
483494
| json-schema-validator.js:50:34:50:47 | req.query.data | json-schema-validator.js:50:23:50:48 | JSON.pa ... y.data) |
484495
| json-schema-validator.js:50:34:50:47 | req.query.data | json-schema-validator.js:50:23:50:48 | JSON.pa ... y.data) |
496+
| koarouter.js:5:11:5:33 | version | koarouter.js:14:38:14:44 | version |
497+
| koarouter.js:5:13:5:19 | version | koarouter.js:5:11:5:33 | version |
498+
| koarouter.js:5:13:5:19 | version | koarouter.js:5:11:5:33 | version |
499+
| koarouter.js:11:11:11:28 | conditions | koarouter.js:17:52:17:61 | conditions |
500+
| koarouter.js:11:24:11:28 | ['1'] | koarouter.js:11:11:11:28 | conditions |
501+
| koarouter.js:14:25:14:46 | `versio ... rsion}` | koarouter.js:11:24:11:28 | ['1'] |
502+
| koarouter.js:14:38:14:44 | version | koarouter.js:14:25:14:46 | `versio ... rsion}` |
503+
| koarouter.js:17:52:17:61 | conditions | koarouter.js:17:52:17:75 | conditi ... and ') |
504+
| koarouter.js:17:52:17:75 | conditi ... and ') | koarouter.js:17:27:17:77 | `SELECT ... nd ')}` |
505+
| koarouter.js:17:52:17:75 | conditi ... and ') | koarouter.js:17:27:17:77 | `SELECT ... nd ')}` |
485506
| ldap.js:20:7:20:34 | q | ldap.js:22:18:22:18 | q |
486507
| ldap.js:20:11:20:34 | url.par ... , true) | ldap.js:20:7:20:34 | q |
487508
| ldap.js:20:21:20:27 | req.url | ldap.js:20:11:20:34 | url.par ... , true) |
@@ -929,6 +950,7 @@ edges
929950
| json-schema-validator.js:55:22:55:26 | query | json-schema-validator.js:50:34:50:47 | req.query.data | json-schema-validator.js:55:22:55:26 | query | This query depends on a $@. | json-schema-validator.js:50:34:50:47 | req.query.data | user-provided value |
930951
| json-schema-validator.js:59:22:59:26 | query | json-schema-validator.js:50:34:50:47 | req.query.data | json-schema-validator.js:59:22:59:26 | query | This query depends on a $@. | json-schema-validator.js:50:34:50:47 | req.query.data | user-provided value |
931952
| json-schema-validator.js:61:22:61:26 | query | json-schema-validator.js:50:34:50:47 | req.query.data | json-schema-validator.js:61:22:61:26 | query | This query depends on a $@. | json-schema-validator.js:50:34:50:47 | req.query.data | user-provided value |
953+
| koarouter.js:17:27:17:77 | `SELECT ... nd ')}` | koarouter.js:5:13:5:19 | version | koarouter.js:17:27:17:77 | `SELECT ... nd ')}` | This query depends on a $@. | koarouter.js:5:13:5:19 | version | user-provided value |
932954
| ldap.js:28:30:28:34 | opts1 | ldap.js:20:21:20:27 | req.url | ldap.js:28:30:28:34 | opts1 | This query depends on a $@. | ldap.js:20:21:20:27 | req.url | user-provided value |
933955
| ldap.js:32:5:32:61 | { filte ... e}))` } | ldap.js:20:21:20:27 | req.url | ldap.js:32:5:32:61 | { filte ... e}))` } | This query depends on a $@. | ldap.js:20:21:20:27 | req.url | user-provided value |
934956
| ldap.js:66:30:66:53 | { filte ... ilter } | ldap.js:20:21:20:27 | req.url | ldap.js:66:30:66:53 | { filte ... ilter } | This query depends on a $@. | ldap.js:20:21:20:27 | req.url | user-provided value |
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const Router = require('koa-router')
2+
const {Sequelize} = require("sequelize");
3+
4+
new Router().get("/hello", (ctx) => {
5+
const { version } = ctx.query;
6+
7+
if (version && validVersion(version) === false) {
8+
throw new Error(`invalid version ${version}`);
9+
}
10+
11+
const conditions = ['1'];
12+
13+
if (version) {
14+
conditions.push(`version = ${version}`)
15+
}
16+
17+
new Sequelize().query(`SELECT * FROM t WHERE ${conditions.join(' and ')}`, null); // OK - but still flagged [INCONSISTENCY]
18+
});
19+
20+
function validVersion(version) {
21+
const pattern = /^[a-zA-Z0-9]+$/;
22+
return pattern.test(version);
23+
}

0 commit comments

Comments
 (0)