[英]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.