如何解决这个安全漏洞?

How to solve this security vulnerability?

提问人:Shiva 提问时间:10/26/2023 最后编辑:XMehdi01Shiva 更新时间:10/26/2023 访问量:56

问:

我在 Gitlab 报告中遇到了以下安全漏洞问题:

我所拥有的信息:Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

描述:

A variable is present in the filename argument of fs calls, this might allow an attacker to access anything on your system.

法典:

const sanitizedPath = decodeURIComponent(IMPORTED_DOCUMENTATION_URL);
window.open(sanitizedPath, "_blank", "noopener");

规则:eslint.detect-non-literal-fs-filename

标识符:CWE-22 https://cwe.mitre.org/data/definitions/22.html

如何避免此漏洞?

JavaScript ReactJS 安全 ESLint

评论

1赞 CBroe 10/26/2023
这看起来像是误报。这里没有实际的服务器端文件系统操作,所有这些值都用于在客户端的弹出窗口中打开指定的 URL。路径遍历在这里不是一个真正的问题,我想说的是 - 向上 via 不允许访问 Web 根文件夹之外的任何内容,并且对 Web 根目录下的路径进行任何更改,都不会暴露任何无法通过直接路径访问的内容。../
0赞 Shiva 10/26/2023
谢谢@CBroe,我们是否可以对代码进行任何修改以避免 Gitlab 报告中的漏洞?
0赞 CBroe 10/26/2023
我不知道这个报告到底是如何工作的,它具体寻找什么,或者它是否试图执行代码或类似的东西,所以我不能告诉你。也许可以通过实施一些输入验证来“缓解”它,正如公告中所解释的那样(“如果可行,只允许文件名中有一个”.“字符,以避免 CWE-23 等弱点,并排除目录分隔符,如”/“以避免 CWE-36。 - 如果您需要传递完整路径,则不包括目录分隔符的部分可能不适用, 而不仅仅是最后一部分。
0赞 spender 10/26/2023
查看此 linting 规则的代码,我正在努力理解它与您引用的代码的关系。您确定您正在查看代码的正确部分吗?
0赞 Shiva 10/26/2023
是的,我确定该漏洞指向 window.open 代码行。

答:

0赞 Shiva 10/26/2023 #1

作为临时修复:

我直接将 URL 字符串作为第一个参数添加到 window.open 函数中,而不是从另一个文件导入。

window.open("URL to open on new tab", "_blank", "noopener");