若通過用戶輸入構造服務器端重定向路徑,攻擊者便能夠下載應用程序二進制碼(包括應用程序的類或 jar 文件)或者查看受保護的目錄下的任意文件。
在以下情況下,會發生文件泄露:
1. 數據從一個不可信賴的數據源進入程序。
2. 數據用于動態地構造一個路徑。
例 1:下面的代碼會接受不可信賴的數據,并使用其構造服務器端轉發所使用的路徑。
...
String returnURL = request.getParameter("returnURL");
return new ActionForward(returnURL);
...
[1] Standards Mapping - OWASP Top 10 2004 - (OWASP 2004) A1 Unvalidated Input
[2] Standards Mapping - OWASP Top 10 2007 - (OWASP 2007) A4 Insecure Direct Object Reference
[3] Standards Mapping - OWASP Top 10 2010 - (OWASP 2010) A4 Insecure Direct Object References
[4] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 552
[5] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 - (PCI 1.1) Requirement 6.5.1
[6] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 - (PCI 1.2) Requirement 6.5.4
[7] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 - (PCI 2.0) Requirement 6.5.8
[8] Standards Mapping - SANS Top 25 2009 - (SANS 2009) Risky Resource Management - CWE ID 073
[9] Ryan Berg and Dinis Cruz Two Security Vulnerabilities in the Spring Framework's MVC