gpt4 book ai didi

.net - 在我按照 OWAPS 和 Roslyn Security Guard 的建议应用解决方案后,Veracode 仍然报告操作系统命令注入(inject)问题

转载 作者:行者123 更新时间:2023-12-03 02:35:44 27 4
gpt4 key购买 nike

我的项目中的当前代码如下所示,Veracode 报告存在操作系统命令注入(inject)

filename = Regex.Replace(filename, "[^a-zA-Z0-9_]", "_") & ".svg"

ProcessStartInfo startInfo = default(ProcessStartInfo);
Process pStart = new Process();
startInfo = new ProcessStartInfo(myExecutedFilePath, "\"" + filename + "\" --export-pdf=\"" + filename + "\""); **//OS command injection raises at this line**
pStart.StartInfo = startInfo;
pStart.Start();
pStart.WaitForExit();

因此,我从 OWASP 和 Roslyn Security Guard 那里研究了解决此问题的解决方案。

这是我根据该帖子修改后的代码。

filename = Regex.Replace(filename, "[^a-zA-Z0-9_]", "_") & ".svg"

ProcessStartInfo startInfo = default(ProcessStartInfo);
Process pStart = new Process();
startInfo = new ProcessStartInfo();
startInfo.FileName = myExecutedFilePath;
startInfo.Arguments = "\"" + filename + "\" --export-pdf=\"" + filename + "\""; **//Veracode still reports the issue at this line**
pStart.StartInfo = startInfo;
pStart.Start();
pStart.WaitForExit();

但是,Veracode 仍然报告操作系统命令注入(inject)。

所以我的担忧是:

  1. 在这种情况下,我是否应用了正确的解决方案来解决操作系统命令注入(inject)问题?

  2. 或者,我应该建议缓解措施吗?

最佳答案

我已收到 Veracode 的答复。

“您是对的,将 ProcessStartInfo 对象中的文件路径和参数分开是一个好的开始,并且验证文件名仅包含字母数字字符也应该有所帮助。

静态引擎仍然将此报告为缺陷的可能原因是 Veracode 无法识别 CWE 78 的 .NET 的任何清理函数。因此,任何时候我们看到用户输入被传递到表示的函数命令“sink”我们将标记为 CWE 78。我们也不评估正则表达式字符串的准确性/有效性,因此即使正则表达式完全准确,我们仍然会标记该缺陷。

两个建议:

  1. 如果您需要我们的咨询服务,请考虑安排一次咨询应用程序安全顾问帮助验证您的更改在上下文中是否正确。
  2. 一旦您对修复感到 100% 满意解决了该缺陷,我建议在缓解措施中记录这一点。”

关于.net - 在我按照 OWAPS 和 Roslyn Security Guard 的建议应用解决方案后,Veracode 仍然报告操作系统命令注入(inject)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51490167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com