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

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

分析CVE-2023-33733漏洞 MetaDefender Core

by OPSWAT 發布
分享此文章
領導安全研究人員討論 CVE-2023-33733 漏洞
OPSWAT 研究員計畫參與者

科技的快速崛起對技術嫻熟的開發人員需求甚殷。開放原始碼軟體 (OSS) 已經成為這群成長中的勞動力的重要工具。在各種程式語言中,目前已有數十萬種成熟的開放源碼軟體套件。超過 90% 的開發人員在其專屬應用程式中使用這些開放原始碼元件,突顯了開放原始碼軟體的效率與價值主張。為了進一步強調其重要性,全球 OSS 市場預計將在 2030 年達到 807 億美元,年成長率預計為 16.7%。 

然而,開放源碼軟體的廣泛採用也帶來了一層新的複雜性:安全漏洞。大量互相連結的開放源碼軟體元件為惡意使用者創造了更廣泛的攻擊面。管理各種 OSS 套件之間的依賴關係可能非常複雜,因此難以及時識別和修補漏洞。此外,開放源碼軟體的安全性通常有賴於開發者社群的警覺性與貢獻。這可能會導致修補漏洞的延遲,尤其是不太流行的專案。  

在這篇文章中,OPSWAT 研究員檢查了CVE-2023-33733,這是在流行的開放原始碼程式庫 ReportLab 中發現的安全漏洞。他們的分析結合了模擬攻擊,利用 MetaDefender Core與其 Software Bill of Materials (SBOM)功能來識別應用程式相依性中的漏洞,包括易受攻擊的 ReportLab 函式庫。 

報告實驗室圖書館簡介

ReportLab 圖解

ReportLab 是一個功能強大且開放原始碼的 Python 函式庫,可讓使用者從 Python 程式碼中產生功能豐富的 PDF。它為開發人員提供了一個成功的組合:靈活性、易用性和廣泛的自訂選項,以創建動態檔案。該函式庫增強了開發人員對 PDF 的控制,允許精確地加入文字、圖片、表格和圖表。這種客製化程度使 ReportLab 成為製作動態檔案(如發票和資料驅動報表)的重要工具。 

CVE-2023-33733 背景

CVE-2023-33733 突顯 ReportLab 函式庫內的安全漏洞,影響 ReportLab 函式庫的多個版本。

  • 發現 3.6.13 版之前的 ReportLab 版本容易受到沙箱規避的攻擊,特別是在 rl_safe_eval 功能。開發是透過 HTML 標籤的 color 屬性來達成,直接以 Python 表達式來評估,使用 評估() 函數,最終導致遠端執行程式碼。 
  • NVD 分析師給予 CVE-2023-337337.8 HIGH的 CVSS 分數。 
CVSS 3.x 嚴重性和指標顯示 CVE-2023-33733 的基本分數為 7.8,歸類為高風險。

ReportLab 安全漏洞分析

OPSWAT 研究員對 ReportLab 工作流程進行深入分析,找出 CVE-2023-33733 安全漏洞的根本原因。

ReportLab 圖書館工作流程 

ReportLab 賦予開發人員高效地建立 PDF 的能力。該函式庫可讓您毫不費力地進行整合:匯入函式庫、定義 HTML 內容,並使用 result 函式在一行代碼中生成 PDF。 

使用 ReportLab 程式庫示範建立簡單檔案範本的 Python 程式碼

我們的畢業研究員揭露了使用 ReportLab 從 HTML 建立 PDF 的五個步驟。 

圖表說明使用 ReportLab 和相關功能從輸入 HTML 到輸出 PDF 的流程

在使用 ReportLab 從 HTML 製作 PDF 的 5 步流程中,有三個主要流程相當突出:段落處理、解析器處理和 HTML 處理流程。 

高亮顯示 Python 腳本中 HTML 處理、段落處理和解析器處理的除錯流程截圖

如上圖所示,ReportLab 中的 HTML 處理程序利用 評估() 功能,特別是在顏色屬性上。作為執行惡意程式碼的焦點,顏色屬性的 評估() 功能促使研究人員尋求對其輸入的控制,以利用應用程式。然而,由於沙箱強制執行的 __rl_safe_eval__ 功能。 

顯示安全評估函數的程式碼片段,包含允許的方法和逾時檢查
ReportLab 分析中的安全漏洞 

ReportLab 實作了一個稱為 __rl_safe_eval__.此沙箱排除所有內建的 Python 函式,並包含數個覆寫的內建函式。此限制允許在函式庫內執行安全程式碼,同時防止存取可能用於惡意目的 (例如檔案系統存取、網路通訊) 的危險函式和函式庫。 

rl_safe_eval sandbox 函數實作了各種條件,以確保在使用 Python 內建的 getattr() 函式來擷取並傳回結果。 

檢查方法名稱是否允許在安全上下文中使用的函式範例程式碼

安全評估函式的目的是透過排除危險函式和防止惡意動作,以確保環境安全。但是,如果找到繞過其條件並訪問功能強大的內建函式的方法,就有可能被利用。  

基於這個想法,安全研究人員嘗試繞過限制。最初,他們利用物件注入的方式,使用 類型() 函數來建構物件,並重新定義其屬性和方法,以規避在 __rl_safe_eval__.此外,由於 ReportLab 函式庫會覆寫內建函式,並將其作為 globals 放入 eval 上下文中,因此研究人員可以利用此實作存取其中一個原始內建函式。這可以讓他們繞過沙箱環境並執行惡意程式碼。 

示範重新定義內建函數的程式碼片段

有效負載準備如下: 

顯示攻擊者類別和全局屬性剝削的程式碼範例

然而,在 eval 上下文中執行多行表達式是不可能的。然而,可以使用列表理解技巧,利用此 CVE 的有效負載如下: 

說明如何利用 CVE-2023-33733 的複雜程式碼結構

報告實驗室開發模擬 

研究人員針對 CVE-2023-33733 發表了概念驗證 (POC),證明使用 ReportLab 的弱點版本建立的應用程式可能會受到網路攻擊。為了評估此潛在威脅,OSPWAT 研究員針對網頁應用程式進行了模擬攻擊。他們利用具有 SBOM 功能的MetaDefender Core 來識別應用程式軟體相依性中的安全漏洞,包括受影響 ReportLab 函式庫的存在。 

模擬安全漏洞 

為了模擬真實世界的利用情況,OPSWAT 研究員使用 Python 和易受攻擊版本的 ReportLab 函式庫開發了一個網路應用程式。此應用程式模擬了一個典型的使用個案:使用者可以上傳 HTML 檔案並將其轉換成 PDF 檔案。 

惡意檔案上傳介面的螢幕截圖,提示瀏覽要上傳的檔案

攻擊者可以製作一個惡意的 HTML 檔案,其中包含設計來利用以下功能的程式碼 33733.此程式碼可以繞過沙箱,並透過透過 評估() 功能。  

正在進行指令注入攻擊的程式碼片段

由於過時的 ReportLab 函式庫存在漏洞,成功上傳惡意檔案可讓攻擊者控制應用程式伺服器。 

惡意檔案上傳器顯示已上傳的 evil.html
終端顯示作用中的反向殼

SBOM 和主動安全的重要性 

OPSWAT 畢業研究員對 CVE-2023-33733 的研究強調了與 OSS 相關的潛在安全風險。雖然開放源碼軟體在開發效率和成本效益方面提供了無可否認的好處,但像在 ReportLab 中發現的漏洞可能會讓組織暴露於網路攻擊之下。 

OPSWAT SBOM 

OPSWAT SBOM 為原始碼與容器提供全面的元件清單,以確保軟體供應鏈的安全。它支援 10 種以上的語言,包括 Java、JavaScript、Go、PHP 和 Python,以及超過 5M+ 的第三方開放原始碼軟體元件,並使用來自 National Vulnerability Database (NVD) 和 GitHub (GHSA) 的 17K+ 漏洞資料庫。 

MetaDefender Core 安全儀表板顯示封鎖的檔案及其弱點分析

OPSWAT MetaDefender Core 擁有整合式SBOM 功能,可讓組織主動處理這些風險。MetaDefender Core 可掃描軟體應用程式和相依性,識別所列元件中是否存在 CVE-2023-33733 等已知漏洞。這可讓開發人員和安全團隊優先進行修補工作,並在安全風險被利用之前將其減輕。 

MetaDefender Core 安全儀表板顯示 CVE-2023-33733 的詳細漏洞掃描結果

結束語

OPSWAT 畢業研究員對 ReportLab 漏洞 (CVE-2023-33733) 的研究,提醒我們在軟體開發生命週期中採取主動安全措施的重要性。透過運用OPSWAT MetaDefender Core 等工具,組織可深入瞭解其軟體依賴性,並在攻擊者利用之前找出潛在漏洞。 

此外,OPSWAT 提供全面的網路安全解決方案套件,不僅限於漏洞掃描。 這些解決方案提供即時的威脅偵測、資料安全和端點防護,保護組織免受各種網路威脅。透過採用包含MetaDefender Core 等工具的分層安全方法,組織可以充分利用 OSS 的優點,同時將相關的安全風險降至最低。 

隨時瞭解OPSWAT 的最新資訊!

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