Skip to content

Commit ef18b39

Browse files
author
Max Schaefer
committed
JavaScript: Fix use of type backtracker in IndirectCommandArgument.qll.
1 parent 825fc22 commit ef18b39

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

javascript/ql/src/semmle/javascript/security/dataflow/IndirectCommandArgument.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ private DataFlow::Node commandArgument(SystemCommandExecution sys, DataFlow::Typ
3030
t.start() and
3131
result = sys.getACommandArgument()
3232
or
33-
exists(DataFlow::TypeBackTracker t2 | t = t2.smallstep(result, commandArgument(sys, t2)))
33+
exists(DataFlow::TypeBackTracker t2 | t2 = t.smallstep(result, commandArgument(sys, t2)))
3434
}
3535

3636
/**

javascript/ql/test/query-tests/Security/CWE-078/CommandInjection.expected

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,18 @@ nodes
5555
| child_process-test.js:83:19:83:36 | req.query.fileName |
5656
| child_process-test.js:85:37:85:54 | req.query.fileName |
5757
| child_process-test.js:85:37:85:54 | req.query.fileName |
58+
| exec-sh2.js:9:17:9:23 | command |
59+
| exec-sh2.js:10:33:10:47 | ["-c", command] |
60+
| exec-sh2.js:10:33:10:47 | ["-c", command] |
61+
| exec-sh2.js:10:40:10:46 | command |
62+
| exec-sh2.js:10:40:10:46 | command |
63+
| exec-sh2.js:14:9:14:49 | cmd |
64+
| exec-sh2.js:14:15:14:38 | url.par ... , true) |
65+
| exec-sh2.js:14:15:14:44 | url.par ... ).query |
66+
| exec-sh2.js:14:15:14:49 | url.par ... ry.path |
67+
| exec-sh2.js:14:25:14:31 | req.url |
68+
| exec-sh2.js:14:25:14:31 | req.url |
69+
| exec-sh2.js:15:12:15:14 | cmd |
5870
| execSeries.js:3:20:3:22 | arr |
5971
| execSeries.js:6:14:6:16 | arr |
6072
| execSeries.js:6:14:6:21 | arr[i++] |
@@ -174,6 +186,17 @@ edges
174186
| child_process-test.js:83:19:83:36 | req.query.fileName | child_process-test.js:83:19:83:36 | req.query.fileName |
175187
| child_process-test.js:85:37:85:54 | req.query.fileName | lib/subLib/index.js:7:32:7:35 | name |
176188
| child_process-test.js:85:37:85:54 | req.query.fileName | lib/subLib/index.js:7:32:7:35 | name |
189+
| exec-sh2.js:9:17:9:23 | command | exec-sh2.js:10:40:10:46 | command |
190+
| exec-sh2.js:9:17:9:23 | command | exec-sh2.js:10:40:10:46 | command |
191+
| exec-sh2.js:10:40:10:46 | command | exec-sh2.js:10:33:10:47 | ["-c", command] |
192+
| exec-sh2.js:10:40:10:46 | command | exec-sh2.js:10:33:10:47 | ["-c", command] |
193+
| exec-sh2.js:14:9:14:49 | cmd | exec-sh2.js:15:12:15:14 | cmd |
194+
| exec-sh2.js:14:15:14:38 | url.par ... , true) | exec-sh2.js:14:15:14:44 | url.par ... ).query |
195+
| exec-sh2.js:14:15:14:44 | url.par ... ).query | exec-sh2.js:14:15:14:49 | url.par ... ry.path |
196+
| exec-sh2.js:14:15:14:49 | url.par ... ry.path | exec-sh2.js:14:9:14:49 | cmd |
197+
| exec-sh2.js:14:25:14:31 | req.url | exec-sh2.js:14:15:14:38 | url.par ... , true) |
198+
| exec-sh2.js:14:25:14:31 | req.url | exec-sh2.js:14:15:14:38 | url.par ... , true) |
199+
| exec-sh2.js:15:12:15:14 | cmd | exec-sh2.js:9:17:9:23 | command |
177200
| execSeries.js:3:20:3:22 | arr | execSeries.js:6:14:6:16 | arr |
178201
| execSeries.js:6:14:6:16 | arr | execSeries.js:6:14:6:21 | arr[i++] |
179202
| execSeries.js:6:14:6:21 | arr[i++] | execSeries.js:14:24:14:30 | command |
@@ -260,6 +283,8 @@ edges
260283
| child_process-test.js:67:3:67:21 | cp.spawn(cmd, args) | child_process-test.js:6:25:6:31 | req.url | child_process-test.js:48:15:48:17 | cmd | This command depends on $@. | child_process-test.js:6:25:6:31 | req.url | a user-provided value |
261284
| child_process-test.js:75:29:75:31 | cmd | child_process-test.js:73:25:73:31 | req.url | child_process-test.js:75:29:75:31 | cmd | This command depends on $@. | child_process-test.js:73:25:73:31 | req.url | a user-provided value |
262285
| child_process-test.js:83:19:83:36 | req.query.fileName | child_process-test.js:83:19:83:36 | req.query.fileName | child_process-test.js:83:19:83:36 | req.query.fileName | This command depends on $@. | child_process-test.js:83:19:83:36 | req.query.fileName | a user-provided value |
286+
| exec-sh2.js:10:12:10:57 | cp.spaw ... ptions) | exec-sh2.js:14:25:14:31 | req.url | exec-sh2.js:10:33:10:47 | ["-c", command] | This command depends on $@. | exec-sh2.js:14:25:14:31 | req.url | a user-provided value |
287+
| exec-sh2.js:10:12:10:57 | cp.spaw ... ptions) | exec-sh2.js:14:25:14:31 | req.url | exec-sh2.js:10:40:10:46 | command | This command depends on $@. | exec-sh2.js:14:25:14:31 | req.url | a user-provided value |
263288
| execSeries.js:14:41:14:47 | command | execSeries.js:18:34:18:40 | req.url | execSeries.js:14:41:14:47 | command | This command depends on $@. | execSeries.js:18:34:18:40 | req.url | a user-provided value |
264289
| lib/subLib/index.js:8:10:8:25 | "rm -rf " + name | child_process-test.js:85:37:85:54 | req.query.fileName | lib/subLib/index.js:8:10:8:25 | "rm -rf " + name | This command depends on $@. | child_process-test.js:85:37:85:54 | req.query.fileName | a user-provided value |
265290
| other.js:7:33:7:35 | cmd | other.js:5:25:5:31 | req.url | other.js:7:33:7:35 | cmd | This command depends on $@. | other.js:5:25:5:31 | req.url | a user-provided value |
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
| query-tests/Security/CWE-078/exec-sh2.js:10 | expected an alert, but found none | BAD | ComandInjection |
21
| query-tests/Security/CWE-078/exec-sh.js:15 | expected an alert, but found none | BAD | ComandInjection |

0 commit comments

Comments
 (0)