Skip to content

Commit 4be158b

Browse files
authored
Merge pull request github#4708 from erik-krogh/emptyName
Approved by asgerf
2 parents aa4345a + f03429a commit 4be158b

File tree

5 files changed

+18
-4
lines changed

5 files changed

+18
-4
lines changed

javascript/ql/src/Security/CWE-200/PrivateFileExposure.ql

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,14 @@ Folder getAPackageJSONFolder() { result = any(PackageJSON json).getFile().getPar
8080
DataFlow::Node getALeakingFolder(string description) {
8181
exists(ModuleScope ms | result.asExpr() = ms.getVariable("__dirname").getAnAccess()) and
8282
result.getFile().getParentContainer() = getAPackageJSONFolder() and
83-
description = "the folder " + result.getFile().getParentContainer().getRelativePath()
83+
(
84+
if result.getFile().getParentContainer().getRelativePath().trim() != ""
85+
then description = "the folder " + result.getFile().getParentContainer().getRelativePath()
86+
else description = "the source root folder"
87+
)
8488
or
8589
result = DataFlow::moduleImport("os").getAMemberCall("homedir") and
86-
description = "the home folder "
90+
description = "the home folder"
8791
or
8892
result.mayHaveStringValue("/") and
8993
description = "the root folder"

javascript/ql/test/query-tests/Security/CWE-200/PrivateFileExposure.expected

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
| private-file-exposure.js:22:1:22:58 | app.use ... lar/')) | Serves the folder "/node_modules/angular/", which can contain private information. |
1717
| private-file-exposure.js:40:1:40:88 | app.use ... lar/')) | Serves the folder "/node_modules/angular/", which can contain private information. |
1818
| private-file-exposure.js:41:1:41:97 | app.use ... lar/')) | Serves the folder "/node_modules/angular/", which can contain private information. |
19-
| private-file-exposure.js:42:1:42:66 | app.use ... dir())) | Serves the home folder , which can contain private information. |
19+
| private-file-exposure.js:42:1:42:66 | app.use ... dir())) | Serves the home folder, which can contain private information. |
2020
| private-file-exposure.js:43:1:43:46 | app.use ... )("/")) | Serves the root folder, which can contain private information. |
2121
| private-file-exposure.js:51:5:51:88 | app.use ... les'))) | Serves the folder "../node_modules", which can contain private information. |
22+
| subfolder/private-file-exposure-2.js:6:1:6:34 | app.use ... rname)) | Serves the folder query-tests/Security/CWE-200/subfolder, which can contain private information. |

javascript/ql/test/query-tests/Security/CWE-200/private-file-exposure.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,6 @@ function good() {
5959

6060
app.use("jquery", express.static('./node_modules/jquery/dist')); // OK
6161
app.use("bootstrap", express.static('./node_modules/bootstrap/dist')); // OK
62-
}
62+
}
63+
64+
app.use(express.static(__dirname)) // NOT OK
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
var express = require('express');
2+
var http = require('http')
3+
var app = express()
4+
var server = http.createServer(app)
5+
// Static files:
6+
app.use(express.static(__dirname))

0 commit comments

Comments
 (0)