AI 驅動的網路攻擊:如何偵測、預防及抵禦智慧型威脅

立即閱讀
我們利用人工智慧進行網站翻譯,雖然我們力求準確性,但它們可能並不總是 100% 精確。感謝您的理解。

揭示和修復 Dompdf 庫漏洞 OPSWAT MetaDefender Core 

by OPSWAT 發布
分享此文章
來自資訊技術大學的學生Tai Tran和Hai Dang Bui在藍色背景下擺態勢拍攝專業肖像
學生參加了 OPSWAT 獎學金計劃

技術的快速崛起對熟練的開發人員產生了很高的需求。開源軟體 (OSS) 已成為這個不斷增長的工作力的重要工具。現在,有數十萬個完善的 OSS 包存在於各種程式設計語言中。超過 90% 的開發人員在其專有應用程式中利用這些開源元件,突出了 OSS 的效率和價值主張。進一步強調其重要性,到 2030 年,全球開源軟體市場預計將達到 807 億美元,預計每年增長率為 16.7%。 

軟體是全球業務營運不可或缺的一部分,因此經常成為威脅行為者的目標。2023年,應用程式安全支出約為57.6億美元,預計2024年將達到66.7億美元。在 AppSec 中,軟體供應鏈安全在過去三年中得到了重視,是增長最快的攻擊類別,重大違規和漏洞利用經常成為頭條新聞。 

組織通常認為大多數風險都源於面向公眾的 網路應用程式。然而,近年來,這種觀點發生了變化。每個應用程式中都有數十個小組件,現在風險可能從代碼庫內的任何地方出現。對於組織來說,熟悉軟體開發生命週期中現有和新出現的安全漏洞比以往任何時候都更加重要。在這篇博文中,我們的研究生研究員詳細介紹了 CVE-2023-23924,這是一個在廣泛使用的 dompdf 庫中發現的關鍵安全漏洞,dompdf 庫是一種強大的 PHP 工具,可以從 HTML 和 CSS 動態生成 PDF 檔案。 

透過綜合分析,我們將探討這個漏洞的技術複雜性、起關鍵作用的相關技術,以及對利用過程的類比。我們還將研究如何 OPSWAT MetaDefender Core,特別是其 軟體物料清單 (SBOM) 引擎,可用於檢測和緩解此漏洞,使軟體開發人員和安全團隊能夠在潛在威脅面前領先一步。 

CVE-2023-23924 的背景 

在 dompdf 版本 2.0.1 中發現了一個安全漏洞,並於 2023 年初公開:

  • dompdf 2.0.1 上的 URI 驗證可以透過傳遞 SVG 解析來繞過 <image> 帶有大寫字母的標記。這使得攻擊者可以使用任意協定調用任意 URL,從而導致 PHP 8.0.0 之前的版本中出現任意物件反序列化。透過 PHAR URL 包裝器,此漏洞可導致任意檔案刪除,甚至遠端代碼執行,具體取決於可用的類。 
  • NVD 分析師對 CVE-2023-23924 的 CVSS 評分為 9.8 嚴重 。 
顯示 CVSS 版本 3.x 指標的資訊圖,包括安全漏洞的嚴重性和向量字串

瞭解 Dompdf 漏洞 

要完全理解 dompdf 中的 CVE-2023-23924 漏洞,必須熟悉兩種密切相關的技術:可縮放向量圖形 (SVG) 和 PHAR 檔。 

SVG(可縮放向量圖形) 

SVG(可縮放向量圖形)是一種多功能的圖像格式,由於它能夠在 Web 上呈現高品質圖形,同時保持輕量級和可擴充性,因此獲得了廣泛的普及。與游柵圖像不同,SVG 基於 XML 標記,允許對線條、形狀和文本等元素進行精確控制。SVG 的主要優勢之一是它們能夠在不損失圖像品質的情況下無縫縮放,使其成為回應式網頁設計和高解析度顯示器的理想選擇。  

顯示具有多個不同顏色多邊形的SVG的代碼片段,以 XML 格式說明程式設計
PHAR 檔 

PHAR(PHP Archive)類似於 JAR 檔概念,但用於 PHP。透過將所有PHP代碼和資源檔捆綁到一個存檔檔中,它允許輕鬆部署。  

PHAR 檔由 4 個部分組成:  

  • 存根: 包含用於引導存檔的代碼。 
  • 清單: 包含存檔的元數據。元數據以序列化格式儲存,可用於觸發惡意 PHAR 檔中的 PHP 反序列化攻擊。 
  • 檔案內容: 包含壓縮檔的內容,包括PHP代碼、資源檔。 
  • 簽名(可選): 包含用於驗證檔案完整性的數據。 

由於元數據以序列化格式儲存,因此當在 PHP 函數(如 file_get_contents()、fopen()、file()、file_exists()、md5_file()、filemtime()、檔案大小().這種安全疏忽可能使攻擊者能夠透過 PHAR 檔執行遠程代碼。 

詳細說明 Phar 檔案清單基本檔案格式的表格,包括位元組大小和每個部分的描述

Dompdf如何生成PDF檔

說明將 HTML 檔轉換為 PDF 格式的過程的流程圖,突出顯示中間步驟和檔格式

透過分析, OPSWAT 研究員發現,在dompdf的轉換過程中有三個階段。要將 HTML 檔轉換為 PDF 格式,dompdf 庫首先將輸入檔解析為 DOM 樹,並儲存每個物件的位置和布局資訊。接下來,將解析 CSS 樣式並將其應用於每個物件。最後,將物件重新組織以適應頁面並呈現到最終的 PDF 檔中。  

Dompdf中的安全漏洞

為了增強安全性,dompdf 在進行下一步之前實施了驗證以確保 URI 輸入的安全。在處理 SVG 檔案期間,此驗證過程在 xlink:href 屬性。 

用於處理 SVG 檔的 PHP 代碼範例,顯示用於解析和驗證 SVG 內容的函數

如果 SVG 輸入檔包含 <image> 標記下 <svg> 標記中,則實現條件以僅允許某些協定,例如 http://, https://file://,對於 xlink:href 田。

PDF 轉換器服務的 Web 介面允許使用者上傳 HTML 或 SVG 檔以轉換為 PDF

resolve_url() 函數將先驗證 URI,然後再使用 drawImage() 功能。如果 URI 中的方案不在允許的協定中,則 resolve_url() 函數將向應用程式返回異常。 

PHP 文稿展示了如何處理數據 URI,演示了 網路應用程式中的錯誤處理和協議驗證

如果 URI 透過了驗證,它將被傳遞給 drawImage() 函數,該函數使用 file_get_contents() 函數來處理 URI 值 xlink:href 屬性。此時出現了安全漏洞:如果攻擊者可以繞過驗證並將 PHAR 包裝器傳遞到 URI 中,則可能會觸發 PHAR 反序列化攻擊。 

分析后發現,僅對具有確切名稱圖像的標籤執行驗證。 

圖像處理的PHP示例,詳細說明瞭從數據URL繪製圖像和處理檔內容的函數

因此,可以透過在標籤名稱中將一個或多個字元大寫(例如 Image)來輕鬆繞過它。因此,使用 Image 而不是 Image 的特製 SVG 檔可能會逃避此驗證。 

在後續步驟中, drawImage() 函數,將 SVG 檔中的 URI 傳遞給 file_get_contents() 功能。因此,驗證繞過和對 PHAR 檔的反序列化攻擊的結合允許攻擊者執行遠程代碼。如果應用程式伺服器由易受攻擊的 dompdf 版本處理,則此漏洞為惡意攻擊者打開了透過 SVG 檔破壞應用程式伺服器的大門。 

Dompdf開發類比

易受攻擊的應用程式

為了將此漏洞利用模擬為真實世界的場景, OPSWAT 研究生研究員使用 dompdf 庫版本 2.0.1 開發了一個具有 HTML 到 PDF 轉換功能的 網路應用程式。此應用程式允許使用者上傳 HTML、XML 或 SVG 等檔案類型,然後將它們轉換為 PDF 檔案。 

基於網路的PDF轉換器工具的螢幕截圖,該工具具有人形頭像,強調檔案上傳和轉換功能

攻擊者將按照以下步驟在使用易受攻擊的 dompdf 版本(版本 2.0.1)的應用程式中利用此漏洞: 

PHP 代碼片段,顯示使用 Dompdf 庫將 HTML 轉換為橫向格式的 PDF 檔
Composer.json檔片段,指定 PHP 專案的 Dompdf 庫版本 2.0.1 的要求
開發流程
一個圖形圖表,解釋了利用 Dompdf 漏洞利用 SVG 檔執行反向 shell 的四步過程

首先,攻擊者生成一個惡意物件,該對象在調用析構函數時創建一個反向shell。 

PHP 代碼示例演示了 PHP 中的物件反序列化漏洞,該漏洞導致透過反向shell遠端執行代碼

其次,攻擊者創建一個包含惡意元數據物件的 PHAR 檔。當 PHAR 包裝器在 file_get_content() 函數,則對元數據進行反序列化,並處理指定的物件。在此反序列化過程中,它會觸發析構函數並執行反向shell。 

PHP 文稿演示了如何創建一個 Phar 存檔,其中包含用於執行遠端命令的序列化對象數據

最終,攻擊者將包含 PHAR 包裝器的 URI 連結嵌入到 xlink:href 屬性來繞過驗證,執行惡意代碼,並將此惡意檔案上傳到應用程式。 

SVG代碼片段,演示如何透過圖像引用嵌入遠端PHP反序列化漏洞

在處理上傳的惡意 SVG 檔案期間,應用程式會與攻擊者建立反向連接,從而使他們能夠破壞應用程式伺服器。 

PDF 轉換器的 Web 介面,顯示用於上傳 HTML/SVG 檔並將其轉換為 PDF 的選項,具有數位人體模型
Metasploit控制台的螢幕截圖,顯示成功的反向TCP連接和網路配置詳細資訊
顯示從 Unix 系統檢索到的網路配置和憑據的終端螢幕截圖

使用以下方法保護開源元件 OPSWAT MetaDefender Core 

為了檢測和緩解 dompdf 中的 CVE-2023-23924 漏洞,我們的研究生研究員利用了 OPSWAT MetaDefender Core,一種多層網路安全產品,提供先進的惡意軟體預防和檢測技術,包括 SBOM。 

OPSWAT SBOM 透過為原始程式碼和容器提供全面的元件清單來保護軟體供應鏈。透過分析dompdf庫及其依賴, OPSWAT SBOM 可以快速識別易受攻擊的版本 2.0.1 的存在,並提醒使用者注意潛在風險。 

此外 OPSWAT SBOM 可以檢測相關技術,例如 SVG 和 PHAR 檔,這些技術對於理解和緩解 CVE-2023-23924 漏洞至關重要。這種對應用程式軟體元件的整體視圖使安全團隊能夠做出明智的決策,並採取適當的措施來解決已識別的風險。 

安全分析介面顯示由於漏洞而被阻止的 JavaScript 檔以及詳細的評估結果

除了檢測易受攻擊的dompdf版本外, OPSWAT SBOM 還提供有關受影響元件、其版本以及任何可用更新或補丁的寶貴見解。此資訊使安全團隊能夠確定修復工作的優先順序,並確保應用程式更新到 dompdf 的安全版本,從而有效解決 CVE-2023-23924 漏洞。 

JavaScript 物件表示法檔中漏洞的詳細視圖,列出帶有 CVE 標識元的關鍵和高安全性風險

透過利用內部的 SBOM 引擎 MetaDefender Core,組織可以主動監控其軟體供應鏈,識別開源元件中的潛在漏洞,並及時實施緩解策略,確保其應用程式的整體安全性和完整性。 

結束語 

在 dompdf 庫中發現 CVE-2023-23924 凸顯了在應用程式安全的動態環境中保持警惕的迫切需要。透過利用這篇文章文章中概述的見解和策略,安全團隊可以有效地檢測、緩解和保護其應用程式免受此類漏洞的侵害,從而確保其軟體生態系統的整體安全性和完整性。 

隨時瞭解OPSWAT 的最新資訊!

立即註冊,即可收到公司的最新消息、 故事、活動資訊等。