Fortify - 路径操作

Fortify - Path Manipulation

我在下面几行中收到强化错误 -

  string path = "<hardcodedpath>"; 
  var fileBytes = System.IO.File.ReadAllBytes(path + fileName);
  return File(fileBytes, System.Web.MimeMapping.GetMimeMapping(fileName), fileName);

例如:- path = C:\WorkSpace\Project\\Files\

我确定(列入白名单?)参数 fullPath 是单独从预定义的文件夹中获取的(此处未粘贴相同的代码)并且没有人能够访问除以下文件之外的任何其他文件预定义的文件夹。

然而,Fortify 并未将这些问题标记为已解决。 Fortify 如何解决这个问题?还有什么需要注意的吗?

错误信息 - 攻击者可以在 .cs 第 446 行控制 ReadAllBytes() 的文件系统路径参数,这允许他们访问或修改其他受保护的文件。

由于愚蠢的声誉规则,我无法发表评论,所以我会把它放在一个答案中。您已经显示了 "path" 的来源,但没有提及 "fileName" 的来源。如果该变量的值来自不受信任的来源,那么这就是导致此问题的原因。您需要将该变量列入白名单,以便攻击者可以更改路径。一旦你知道你的白名单是好的,你就可以抑制这个问题。白名单本身不会阻止 Fortify 再次发现问题,因为它无法判断您的白名单何时足够。

您也可以尝试将 Fortify 问题发布到他们的在线论坛 https://protect724.hp.com。支持小组监控这些论坛。