Fortify安全审查告诉我们一些路径操纵漏洞。大多数都是显而易见和简单的修复,但我不知道如何修复下面的一个。
string[] wsdlFiles = System.IO.Directory.GetFiles(wsdlPath, "*.wsdl");"wsdlPath“是从文本框中输入的。这是不是无法修复的问题?我可以验证路径是否存在,等等,但这对漏洞有什么帮助?
发布于 2012-04-11 02:11:25
如果数据总是从文本框中获取,而文本框的内容由用户决定,并且代码使用该用户的权限运行,那么唯一的威胁就是用户攻击自己。这并不是一个有趣的威胁。
该工具试图警告您的漏洞是,如果低信任的恶意代码可以确定该字符串的内容,则恶意代码可以尝试发现有关用户机器的事实,例如“我碰巧知道的某个程序是否安装了安全漏洞且未打补丁?”或“此计算机上是否有名为'admin‘的用户?”诸若此类。
发布于 2012-04-11 01:24:30
你永远不应该把任何东西直接输入到未过滤的操作系统API中。您应该清理输入,确保它不包含路径(即“../somefile”,并确保它截断长名称,并且只包含有效的文件名字符(例如,存在与国际字符相关的各种错误)。
发布于 2012-04-11 02:16:43
使用该代码,任何经过身份验证和授权使用该功能的用户都能够访问服务器上的文件系统。访问将使用运行web应用程序的服务帐户的凭据来完成。
根据返回数据的使用方式,恶意用户可能会获得更多信息,或者使服务器以一种意外的方式运行。
您应该将允许的路径集限制为仅由一个或几个仔细选择的目录组成。使用Path类中的函数将字符串组合成路径-它们负责处理用户为您输入c:\allowedpath\..\windows\system32之类的事情。
https://stackoverflow.com/questions/10093362
复制相似问题