Skip to content

Commit 3fa24d6

Browse files
committed
Add sink model for mkdirp and update tests for path injection alerts.
1 parent 533f1a9 commit 3fa24d6

File tree

3 files changed

+42
-9
lines changed

3 files changed

+42
-9
lines changed
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
extensions:
2+
- addsTo:
3+
pack: codeql/javascript-all
4+
extensible: sinkModel
5+
data:
6+
- ["mkdirp", "Member[nativeSync,native,manual,manualSync,mkdirpNative,mkdirpManual,mkdirpManualSync,mkdirpNativeSync,mkdirpSync].Argument[0]", "path-injection"]

javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/TaintedPath.expected

+27
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@
5454
| hapi.js:15:44:15:51 | filepath | hapi.js:14:30:14:51 | request ... ilepath | hapi.js:15:44:15:51 | filepath | This path depends on a $@. | hapi.js:14:30:14:51 | request ... ilepath | user-provided value |
5555
| mkdirp.js:11:12:11:18 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:11:12:11:18 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
5656
| mkdirp.js:12:17:12:23 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:12:17:12:23 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
57+
| mkdirp.js:13:23:13:29 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:13:23:13:29 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
58+
| mkdirp.js:14:19:14:25 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:14:19:14:25 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
59+
| mkdirp.js:15:19:15:25 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:15:19:15:25 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
60+
| mkdirp.js:16:23:16:29 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:16:23:16:29 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
61+
| mkdirp.js:17:25:17:31 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:17:25:17:31 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
62+
| mkdirp.js:18:25:18:31 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:18:25:18:31 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
63+
| mkdirp.js:19:29:19:35 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:19:29:19:35 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
64+
| mkdirp.js:20:29:20:35 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:20:29:20:35 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
65+
| mkdirp.js:21:23:21:29 | dirPath | mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:21:23:21:29 | dirPath | This path depends on a $@. | mkdirp.js:9:42:9:59 | req.query.filename | user-provided value |
5766
| more-fs-extra.js:10:15:10:22 | filename | more-fs-extra.js:8:26:8:33 | req.body | more-fs-extra.js:10:15:10:22 | filename | This path depends on a $@. | more-fs-extra.js:8:26:8:33 | req.body | user-provided value |
5867
| more-fs-extra.js:11:11:11:18 | filename | more-fs-extra.js:8:26:8:33 | req.body | more-fs-extra.js:11:11:11:18 | filename | This path depends on a $@. | more-fs-extra.js:8:26:8:33 | req.body | user-provided value |
5968
| more-fs-extra.js:12:14:12:21 | filename | more-fs-extra.js:8:26:8:33 | req.body | more-fs-extra.js:12:14:12:21 | filename | This path depends on a $@. | more-fs-extra.js:8:26:8:33 | req.body | user-provided value |
@@ -394,6 +403,15 @@ edges
394403
| hapi.js:14:30:14:51 | request ... ilepath | hapi.js:14:19:14:51 | filepath | provenance | |
395404
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:11:12:11:18 | dirPath | provenance | |
396405
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:12:17:12:23 | dirPath | provenance | |
406+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:13:23:13:29 | dirPath | provenance | |
407+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:14:19:14:25 | dirPath | provenance | |
408+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:15:19:15:25 | dirPath | provenance | |
409+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:16:23:16:29 | dirPath | provenance | |
410+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:17:25:17:31 | dirPath | provenance | |
411+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:18:25:18:31 | dirPath | provenance | |
412+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:19:29:19:35 | dirPath | provenance | |
413+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:20:29:20:35 | dirPath | provenance | |
414+
| mkdirp.js:9:11:9:76 | dirPath | mkdirp.js:21:23:21:29 | dirPath | provenance | |
397415
| mkdirp.js:9:21:9:76 | path.jo ... ltDir') | mkdirp.js:9:11:9:76 | dirPath | provenance | |
398416
| mkdirp.js:9:42:9:59 | req.query.filename | mkdirp.js:9:42:9:75 | req.que ... ultDir' | provenance | |
399417
| mkdirp.js:9:42:9:75 | req.que ... ultDir' | mkdirp.js:9:21:9:76 | path.jo ... ltDir') | provenance | Config |
@@ -932,6 +950,15 @@ nodes
932950
| mkdirp.js:9:42:9:75 | req.que ... ultDir' | semmle.label | req.que ... ultDir' |
933951
| mkdirp.js:11:12:11:18 | dirPath | semmle.label | dirPath |
934952
| mkdirp.js:12:17:12:23 | dirPath | semmle.label | dirPath |
953+
| mkdirp.js:13:23:13:29 | dirPath | semmle.label | dirPath |
954+
| mkdirp.js:14:19:14:25 | dirPath | semmle.label | dirPath |
955+
| mkdirp.js:15:19:15:25 | dirPath | semmle.label | dirPath |
956+
| mkdirp.js:16:23:16:29 | dirPath | semmle.label | dirPath |
957+
| mkdirp.js:17:25:17:31 | dirPath | semmle.label | dirPath |
958+
| mkdirp.js:18:25:18:31 | dirPath | semmle.label | dirPath |
959+
| mkdirp.js:19:29:19:35 | dirPath | semmle.label | dirPath |
960+
| mkdirp.js:20:29:20:35 | dirPath | semmle.label | dirPath |
961+
| mkdirp.js:21:23:21:29 | dirPath | semmle.label | dirPath |
935962
| more-fs-extra.js:8:11:8:22 | { filename } | semmle.label | { filename } |
936963
| more-fs-extra.js:8:11:8:33 | filename | semmle.label | filename |
937964
| more-fs-extra.js:8:13:8:20 | filename | semmle.label | filename |

javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/mkdirp.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ app.post('/foo', async (req, res) => {
1010

1111
mkdirp(dirPath); // $ Alert
1212
mkdirp.sync(dirPath); // $ Alert
13-
mkdirp.nativeSync(dirPath); // $ MISSING: Alert
14-
mkdirp.native(dirPath); // $ MISSING: Alert
15-
mkdirp.manual(dirPath); // $ MISSING: Alert
16-
mkdirp.manualSync(dirPath); // $ MISSING: Alert
17-
mkdirp.mkdirpNative(dirPath); // $ MISSING: Alert
18-
mkdirp.mkdirpManual(dirPath); // $ MISSING: Alert
19-
mkdirp.mkdirpManualSync(dirPath); // $ MISSING: Alert
20-
mkdirp.mkdirpNativeSync(dirPath); // $ MISSING: Alert
21-
mkdirp.mkdirpSync(dirPath); // $ MISSING: Alert
13+
mkdirp.nativeSync(dirPath); // $ Alert
14+
mkdirp.native(dirPath); // $ Alert
15+
mkdirp.manual(dirPath); // $ Alert
16+
mkdirp.manualSync(dirPath); // $ Alert
17+
mkdirp.mkdirpNative(dirPath); // $ Alert
18+
mkdirp.mkdirpManual(dirPath); // $ Alert
19+
mkdirp.mkdirpManualSync(dirPath); // $ Alert
20+
mkdirp.mkdirpNativeSync(dirPath); // $ Alert
21+
mkdirp.mkdirpSync(dirPath); // $ Alert
2222
});

0 commit comments

Comments
 (0)