[英]Open Filestream For Writing - fortify Path Manipulation
寻找解决打开文件的强化发现(路径操作):
public FileStream OpenFile(string directory, string filename)
{
FileStream fs = null;
string pathname = string.Empty;
pathname = Path.Combine(directory, filename);
fs = new FileStream(pathname , FileMode.OpenOrCreate);
return (fs);
}
此代码在 .NET 应用程序中运行,但不写入虚拟目录。
Fortify 帮助/建议表明将有效目录列入白名单,但这相当于对应用程序中的目录进行硬编码。 它可能是安全的,但它不是一个好的编程习惯。
提前致谢
@James Nix 提供了 Fortify 发现漏洞的原因(在评论中):
您之所以得到此结果,是因为此方法接受“用户提供的”路径和文件名。 如果攻击者将此方法发送参数directory=C:\\Windows
和filename=notepad.exe
,如果您的应用程序对该文件具有写入权限,他们就可以用恶意内容覆盖notepad.exe
。 – 詹姆斯尼克斯 1 月 6 日 17:17
如果您有兴趣修复漏洞,那么您需要:
如果您想要更有针对性的补救建议,您需要描述您的应用程序需要使用此方法做什么。
在调用 FileStream 之前,您需要添加代码来检查“目录”和“路径名”以确保它们在系统上存在。 对于 .NET,您可以使用 stat() 函数进行检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.