簡體   English   中英

如何糾正fortify給出的路徑操作錯誤?

[英]How to correct Path Manipulation error given by fortify?

我需要閱讀保存在 user_home 文件夾中的屬性文件。

PropsFile = System.getProperty("user.home") + System.getProperty("file.separator")+ "x.properties"; 

Fortify 在這一行中給出了路徑操作錯誤。 正確值的數量很大,因此黑名單是唯一可能的方法。 所以為了避免它,我改變了代碼如下。

String propsFile = null;
StringBuffer sb = new StringBuffer();
String xProperties = "x.properties";
String userHome = System.getProperty("user.home");  // *
if(userHome.contains("..\\"))
 userHome = userHome.replace("..\\", "");
if(userHome.contains("../"))
 userHome = userHome.replace("../", "");
if(userHome.contains("./"))
 userHome = userHome.replace("./", "");

String fileSeperator = System.getProperty("file.separator");    // *
  if(fileSeperator.equals("/") || fileSeperator.equals("\\")){
    sb = sb.append(userHome).append(fileSeperator).append(xProperties);
    propsFile = sb.toString();
  }

但仍然強化在 (*) 標記行中給我相同的錯誤(盡管驗證已完成)。 我怎樣才能消除錯誤?

我敦促您考慮安全漏洞,而不是試圖消除 Fortify 錯誤。

問題是可以使用 -D vm arg 精心制作 user.home,以允許打開或銷毀系統上任何潛在的名為 x.properties 的文件。 例如,將 user.home 設置為 /usr/local 不會被您的黑名單檢測到。 然后可以讀取或覆蓋任何名為 /usr/local/x.properties 的文件。

您需要質疑為什么可以允許 user.home 的任何值。 您需要檢查從 user.home 獲得的路徑是否以某個位置(例如 /home)開頭。 這稱為白名單驗證,是針對安全漏洞的常見且眾所周知的修復程序。 一旦確定所提供的路徑在已知位置具有根目錄,就可以將目錄橫向列入黑名單。

我知道這很痛苦,但僅用黑名單來解決這個問題的嘗試充滿危險,永遠無法解決問題。 這是一個真正的安全問題,而不僅僅是 Fortify 錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM