Fortify漏洞之XML External Entity Injection(XML實體注入)


  繼續對Fortify的漏洞進行總結,本篇主要針對  XML External Entity Injection(XML實體注入) 的漏洞進行總結,如下:

1.1、產生原因:

  XML External Entities 攻擊可利用能夠在處理時動態構建文檔的 XML 功能。XML 實體可動態包含來自給定資源的數據。外部實體允許 XML 文檔包含來自外部 URI 的數據。除非另行配置,否則外部實體會迫使 XML 解析器訪問由 URI 指定的資源,例如位於本地計算機或遠程系統上的某個文件。這一行為會將應用程序暴露給 XML External Entity (XXE) 攻擊,從而用於拒絕本地系統的服務,獲取對本地計算機上文件未經授權的訪問權限,掃描遠程計算機,並拒絕遠程系統的服務。

下面的 XML 文檔介紹了 XXE 攻擊的示例: 

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY  xxe  SYSTEM "file:///dev/random" >]><foo>&xxe;</foo>


如果 XML 解析器嘗試使用 /dev/random 文件中的內容來替代實體,則此示例會使服務器(使用 UNIX 系統)崩潰。

例:

 

圖1.1.1:未對XML實體解析方法做安全配置的實例

 

1.2、修復方案:

應對 XML unmarshaller 進行安全配置,使它不允許將外部實體包含在傳入的 XML 文檔中。為了避免 XXE injection,請勿將直接處理 XML 源的 unmarshal 方法用作 java.io.File、java.io.Reader 或 java.io.InputStream。使用安全配置的解析器解析文檔並使用將安全解析器作為 XML 源的 unmarshal 方法,如下面的示例所示:

例:

 

圖1.2.1:對XML實體解析方法做安全配置的實例

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM