Skip to content

Commit e386448

Browse files
committed
Added support for missing rm functions from fs-extra
1 parent 7a08f32 commit e386448

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

javascript/ql/lib/semmle/javascript/frameworks/NodeJSLib.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ module NodeJSLib {
450450
or
451451
methodName = ["readJson", "readJSON", "readJsonSync", "readJSONSync"] and i = 0
452452
or
453-
methodName = ["remove", "removeSync"] and i = 0
453+
methodName = ["remove", "removeSync", "rmSync", "rm", "rmdir", "rmdirSync"] and i = 0
454454
or
455455
methodName =
456456
["outputJSON", "outputJson", "writeJSON", "writeJson", "writeJSONSync", "writeJsonSync"] and

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@
5252
| handlebars.js:11:32:11:39 | filePath | handlebars.js:29:46:29:60 | req.params.path | handlebars.js:11:32:11:39 | filePath | This path depends on a $@. | handlebars.js:29:46:29:60 | req.params.path | user-provided value |
5353
| handlebars.js:15:25:15:32 | filePath | handlebars.js:43:15:43:29 | req.params.path | handlebars.js:15:25:15:32 | filePath | This path depends on a $@. | handlebars.js:43:15:43:29 | req.params.path | user-provided value |
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 |
55+
| 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 |
56+
| 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 |
57+
| 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 |
58+
| more-fs-extra.js:13:18:13:25 | filename | more-fs-extra.js:8:26:8:33 | req.body | more-fs-extra.js:13:18:13:25 | filename | This path depends on a $@. | more-fs-extra.js:8:26:8:33 | req.body | user-provided value |
5559
| more-fs-extra.js:14:11:14:18 | filename | more-fs-extra.js:8:26:8:33 | req.body | more-fs-extra.js:14:11:14:18 | filename | This path depends on a $@. | more-fs-extra.js:8:26:8:33 | req.body | user-provided value |
5660
| more-fs-extra.js:15:21:15:28 | filename | more-fs-extra.js:8:26:8:33 | req.body | more-fs-extra.js:15:21:15:28 | filename | This path depends on a $@. | more-fs-extra.js:8:26:8:33 | req.body | user-provided value |
5761
| more-fs-extra.js:16:21:16:28 | filename | more-fs-extra.js:8:26:8:33 | req.body | more-fs-extra.js:16:21:16:28 | filename | This path depends on a $@. | more-fs-extra.js:8:26:8:33 | req.body | user-provided value |
@@ -354,6 +358,10 @@ edges
354358
| hapi.js:14:19:14:51 | filepath | hapi.js:15:44:15:51 | filepath | provenance | |
355359
| hapi.js:14:30:14:51 | request ... ilepath | hapi.js:14:19:14:51 | filepath | provenance | |
356360
| more-fs-extra.js:8:11:8:22 | { filename } | more-fs-extra.js:8:13:8:20 | filename | provenance | Config |
361+
| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:10:15:10:22 | filename | provenance | |
362+
| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:11:11:11:18 | filename | provenance | |
363+
| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:12:14:12:21 | filename | provenance | |
364+
| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:13:18:13:25 | filename | provenance | |
357365
| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:14:11:14:18 | filename | provenance | |
358366
| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:15:21:15:28 | filename | provenance | |
359367
| more-fs-extra.js:8:11:8:33 | filename | more-fs-extra.js:16:21:16:28 | filename | provenance | |
@@ -846,6 +854,10 @@ nodes
846854
| more-fs-extra.js:8:11:8:33 | filename | semmle.label | filename |
847855
| more-fs-extra.js:8:13:8:20 | filename | semmle.label | filename |
848856
| more-fs-extra.js:8:26:8:33 | req.body | semmle.label | req.body |
857+
| more-fs-extra.js:10:15:10:22 | filename | semmle.label | filename |
858+
| more-fs-extra.js:11:11:11:18 | filename | semmle.label | filename |
859+
| more-fs-extra.js:12:14:12:21 | filename | semmle.label | filename |
860+
| more-fs-extra.js:13:18:13:25 | filename | semmle.label | filename |
849861
| more-fs-extra.js:14:11:14:18 | filename | semmle.label | filename |
850862
| more-fs-extra.js:15:21:15:28 | filename | semmle.label | filename |
851863
| more-fs-extra.js:16:21:16:28 | filename | semmle.label | filename |

javascript/ql/test/query-tests/Security/CWE-022/TaintedPath/more-fs-extra.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ app.use(express.json());
77
app.post('/rmsync', (req, res) => {
88
const { filename } = req.body; // $ Source
99

10-
fs.rmSync(filename); // MISSING: $ Alert
11-
fs.rm(filename); // MISSING: $ Alert
12-
fs.rmdir(filename); // MISSING: $ Alert
13-
fs.rmdirSync(filename); // MISSING: $ Alert
10+
fs.rmSync(filename); // $ Alert
11+
fs.rm(filename); // $ Alert
12+
fs.rmdir(filename); // $ Alert
13+
fs.rmdirSync(filename); // $ Alert
1414
fs.cp(filename, "destination"); // $ Alert
1515
fs.cp("source", filename); // $ Alert
1616
fs.copyFileSync(filename, "destination"); // $ Alert

0 commit comments

Comments
 (0)