跳到正文
CVE-high(cvefeed.io)·· 2 小時前精選品質評分60

CVE-2026-16760:Fickling check_safety() 跳過,likely_safe_imports 讓未驗證標準庫可呼叫函式獲得模組來源信任

CVE-2026-16760 - Fickling check_safety() bypass: likely_safe_imports grants module-origin trust to unvalidated standard library callables

重點導讀

Trail of Bits fickling 0.1.12 透過 check_safety() 跳過,likely_safe_imports 讓未驗證的標準庫函式被視為安全,導致 pickle 反序列化可執行任意程式碼或寫入檔案。

推薦理由

此研究揭示了 Python 標準庫中函式安全判斷缺陷,對使用 pickle 的開發者提示需審慎評估模組來源風險。

正文 · 中文翻譯

譯文尚未完整,完整內容請切換至原文。

在 Trail of Bits 針對 0.1.12 的 fickling 中,fickle.py 的 _process_import() 方法會在來源模組存在於 sys.stdlib_module_names 且該名稱未列入 UNSAFE_IMPORTS 拒絕清單時,將該被匯入名稱加入 likely_safe_imports 集合,而不檢查該名稱解析為何或其行為。analysis.py 中的 OvertlyBadEvals 分析階段接著會無條件跳過任何函式名稱出現在 likely_safe_imports 中的呼叫,即使該呼叫本來會被標記為明顯危險。結果是,任何可透過未被阻止的標準函式庫模組取得的可呼叫物件,都會繼承模組層級的信任,無論其自身行為如何,check_safety() 將以 LIKELY_SAFE 回傳並且對能透過此類呼叫達到程式執行或檔案寫入的 pickle 負載不報告任何發現。示範的原語:dataclasses._create_fn,該函式將攻擊者控制的函式主體傳遞給 exec(),在 Python 3.7 至 3.12 版本中導致任意程式碼執行(內部 _create_fn 函式已於 Python 3.13 被移除);mailcap.findmatch,該函式內部會以攻擊者控制的 caps 字典中取得的測試指令呼叫 os.system(),在 3.12 之前的 Python 版本中導致任意程式碼執行(mailcap 模組已於 Python 3.13 被移除);以及 readline.add_history() 之後的 readline.write_history_file(),會將攻擊者控制的內容寫入任意檔案系統路徑(POSIX 平臺,且 readline 模組可用)。fickling.load() 將 check_safety() 連結至 pickle.loads() 作為明確的安全門檻,因此 LIKELY_SAFE 判決將使負載被反序列化並以受害者程式的許可權執行。根本原因是從模組來源推斷可呼叫物件的安全性;此問題與以 CVE-2026-118938 追蹤的點點 __qualname__ 解析弱點獨立,且可單獨修正,而本通告並未涵蓋該弱點。至 2026-10-30,三個示範模組已於供應商主分支(commit d011709)加入 UNSAFE_IMPORTS,待釋出;截至 0.1.12 的已釋出版本仍受影響,且模組來源信任的根本原因仍存,正如相關 CVE-2026-118938 在同一版中仍可利用所示。

影響

受影響產品

以下產品受到 CVE-2026-16760 漏洞影響。 即使 cvefeed.io 知道受影響產品的精確版本 產品 之 是 受影響,資訊未在下表中呈現。

ID 供應商 產品 行動
1 Trailofbits fickling

通用漏洞評分系統(Common Vulnerability Scoring System)是一套標準化的框架 用於評估軟體與系統中漏洞的嚴重程度。 我們從各種來源收集並顯示每個 CVE 的 CVSS 分數。

分數 版本 嚴重性 向量 可利用性分數 影響分數 來源
CVSS 3.1 高 aa17e1a1-c329-4d6e-a1ed-8d0188aea082
CVSS 3.1 高 MITRE-CVE

將庫更新到一個能正確處理不安全匯入且拒絕危險模組的版本。

  • 將庫更新到已修補的版本。
  • 檢查模組匯入安全性。
  • 明確列入黑名單危險模組。
  • 檢查可呼叫物件行為,而非其來源。

在此,您將找到一份精選的外部連結清單,提供關於 CVE-2026-16760 的深入資訊、實用解決方案與有價值的工具。

URL 資源
https://bombadil.systems/advisories.html
https://github.com/trailofbits/fickling
https://github.com/trailofbits/fickling/commit/d011709
https://pypi.org/project/fickling/0.1.12/

雖然 CVE 標識具體漏洞例項,CWE 則分類可能導致漏洞的常見缺陷或弱點。CVE-2026-16760 與以下 CWEs 相關:

Common Attack Pattern Enumeration and Classification (CAPEC) 儲存攻擊模式,描述對手用於利用 CVE-2026-16760 弱點的常見特徵和方法。

我們掃描 GitHub 倉庫以偵測新的概念驗證利用。以下列表是已發布於 GitHub 的公開利用與概念驗證集合(按最近更新排序)。

由於潛在的效能問題,結果僅限於前 15 個倉庫。

以下列表顯示在文章中提及 CVE-2026-16760 漏洞的新聞。

以下表格列出 CVE-2026-16760 漏洞隨時間所做的變更。

漏洞歷史細節有助於瞭解漏洞演變,以及識別可能影響漏洞嚴重性、可利用性或其他特徵的最新變更。

  • 新 CVE 已接收 由 aa17e1a1-c329-4d6e-a1ed-8d0188aea082

    十月. 30, 2026

    動作 型別 舊值 新值
    新增 說明 在 Trail of Bits 的 fickling 0.1.12 版本中,fickle.py 內的 _process_import() 方法會在 source module 存在於 sys.stdlib_module_names 且該名稱不在 UNSAFE_IMPORTS 拒絕名單時,將該匯入名稱加入 likely_safe_imports 集合,而不檢查該名稱解析為何或其行為。analysis.py 中的 OvertlyBadEvals 分析階段則會無條件跳過任何 function 名稱出現在 likely_safe_imports 的呼叫,包括本來會被標記為明顯危險的呼叫。結果是,任何透過未被阻擋的標準函式庫模組可達到的可呼叫物件,無論其自身行為如何,都會繼承模組層級的信任,且 check_safety() 對於透過此類可呼叫物件達到程式碼執行或檔案寫入的 pickle 負載,會回傳 LIKELY_SAFE 並且沒有任何發現。示範的原語:dataclasses._create_fn,該函式將攻擊者控制的函式體傳遞給 exec(),並在 Python 3.7 至 3.12 版中造成任意程式碼執行(內部 _create_fn 函式已於 Python 3.13 移除);mailcap.findmatch,該函式內部會以攻擊者控制的 caps 字典中的測試指令呼叫 os.system(),在 Python 3.12 版以前造成任意程式碼執行(mailcap 模組已於 Python 3.13 移除);以及 readline.add_history() 之後的 readline.write_history_file(),會將攻擊者控制的內容寫入任意檔案系統路徑(POSIX 平臺,且 readline 模組可用)。fickling.load() 將 check_safety() 連結至 pickle.loads() 作為明確的安全門檻,因此 LIKELY_SAFE 判決會使負載以受害者程序的許可權被反序列化並執行。根本原因是從模組來源推斷可呼叫物件的安全性;這與本公告未處理的 CVE-2026-118938 所追蹤的 dotted __qualname__ 解析弱點獨立且可分別修復。至 2026-10-30,三個示範模組已在供應商主分支(commit d011709)上加入 UNSAFE_IMPORTS,等待發布;截至 0.1.12 之前發布的版本仍受影響,且模組來源信任的根本原因仍然存在,正如相關 CVE-2026-118938 在同一版本中仍可利用所示。
    Added CVSS V3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
    Added CWE CWE-693
    Added CWE CWE-502
    Added Affected New affected value received. <a href="https://github.com/CVEProject/cvelistV5/blob/main/cves/2026/16xxx/CVE-2026-16760.json">CVE-2026-16760</a>
    Added Reference https://bombadil.systems/advisories.html
    Added Reference https://github.com/trailofbits/fickling
    Added Reference https://github.com/trailofbits/fickling/commit/d011709
    Added Reference https://pypi.org/project/fickling/0.1.12/

EPSS 是每日估算在接下來 30 天內觀測到利用活動的機率。以下圖表顯示此漏洞的 EPSS 分數歷史。

來源: CVE-high (cvefeed.io)
開啟原文