程式碼安全測試第二十三期:對XML外部實體引用的不當限制漏洞

zktq2021發表於2021-06-21

一、什麼是對XML外部實體引用的不當限制?

該軟體處理的XML文件可能包含帶有URI的XML實體,這些URI可以解析為超出預期控制範圍的文件,從而導致產品將不正確的文件嵌入其輸出中。

XML文件可以選擇包含文件型別定義(DTD),該文件型別定義(DTD)除其他功能外,還可以定義XML實體。可以透過提供URI形式的替換字串來定義實體。XML解析器可以訪問此URI的內容,並將這些內容重新嵌入XML文件中以進行進一步處理。

二、對XML外部實體引用的不當限制構成條件有哪些?

滿足以下條件,就構成了一個該型別的安全漏洞:

透過提交使用 file:// URI定義外部實體的XML檔案,攻擊者可以使處理應用程式讀取本地檔案的內容。例如,諸如 file:/// c:/winnt/win.ini之類的URI(在Windows中)指定檔案 C:\ Winnt \ win.ini,或 file:/// etc / passwd指定密碼基於Unix的系統中的檔案。

透過將URI與其他方案(例如http://)一起使用,攻擊者可以強制應用程式向攻擊者無法直接到達的伺服器發出傳出請求,這些請求可用於繞過防火牆限制或隱藏攻擊源(例如埠掃描)。

讀取URI的內容後,會將其反饋回正在處理XML的應用程式中。該應用程式可以回顯資料(例如在錯誤訊息中),從而暴露檔案內容。

三、對XML外部實體引用的不當限制漏洞會造成哪些後果?

如果攻擊者能夠包括精心製作的DTD,並且啟用了預設實體解析器,則攻擊者可能能夠訪問系統上的任意檔案。

DTD可以包括伺服器可以執行的任意HTTP請求。這可能導致利用伺服器與其他實體的信任關係的其他攻擊。

使用指向大檔案的URI或始終返回資料的裝置(例如/ dev / random),該軟體可能會消耗過多的CPU週期或記憶體。或者,URI可以引用包含許多巢狀或遞迴實體引用的檔案,以進一步減慢解析速度。

四、對XML外部實體引用不當限制的防範和修補方法有哪些?

可以將許多XML解析器和驗證器配置為禁用外部實體擴充套件。

五、對XML外部實體引用的不當限制漏洞樣例:

用悟空 靜態程式碼檢測工具分析上述程式程式碼,則可以發現程式碼中存在著“對XML外部實體引用的不當限制” 導致的 程式碼缺陷,如下圖:

對XML外部實體引用的不當限制在CWE中被編號為CWE-611: Improper Restriction of XML External Entity Reference


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2777637/,如需轉載,請註明出處,否則將追究法律責任。

相關文章