二進位制漏洞掃描:識別 Backport 補丁,消除誤報
二進位制漏洞掃描是指直接在執行中程序的機器程式碼裡驗證 CVE 補丁是否存在,而不是拿包的版本號做匹配。它能讓掃描工具穿透 Backport 補丁——這是 Linux 漏洞報告中最大的誤報來源——只報告真正仍可被利用的漏洞。
每一次版本匹配掃描,交給安全團隊的都是同一份東西:一份紅色告警清單,大多數工程師憑經驗就能猜到裡面多半是誤報——但要逐條證明,真實風險就被淹沒在人工核查裡。OpenResty XRay 直接檢測執行中的二進位制,補上了這個缺口。
為甚麼版本匹配漏洞掃描會失效:三類疊加代價
主流 Linux 發行版——RHEL、Rocky Linux、Debian、Ubuntu LTS——普遍採用 Backport 策略:當上遊元件發現安全漏洞時,發行版維護者會將補丁移植回當前使用的版本,而不升級版本號,以此保持 ABI 相容性和系統穩定性。結果是,一個標註為 openssl-3.5.1 的包可能已經包含了數十個 CVE 的修復補丁,但從版本號來看,它與一個完全未打補丁的 openssl-3.5.1 毫無區別。這種單一依賴版本號的判斷方式,給工程團隊帶來三類疊加代價:
誤報噪聲持續累積。 發行版每個 LTS 週期內會積累大量 Backport 補丁,每一個被修復但版本號未變的 CVE,都會在下一次掃描中重新出現在報告裡。隨著時間推移,誤報數量只增不減。
人工澄清消耗安全團隊的核心精力。 針對每條告警,工程師需要查閱發行版 changelog、對照 CVE 資料庫、判斷補丁是否已經覆蓋——這些工作本質上是在彌補掃描工具的能力缺口,而非真正的安全分析。
真實風險被稀釋,優先順序管理失效。 當一份報告中 90% 的告警都是誤報時,剩餘 10% 的真實漏洞很容易被忽視。漏洞管理的核心價值——幫助團隊聚焦最高風險——在噪聲中消解殆盡。
傳統版本匹配掃描的根本問題不在於工具質量,而在於它依賴了一個在 Backport 生態中根本不可靠的訊號:版本號。
OpenResty XRay 的二進位制漏洞掃描如何工作:證據優先模型
OpenResty XRay 從根本上繞開了版本號這個不可靠的訊號。它的掃描物件不是包管理器的後設資料,而是正在執行的程序本身。
當 OpenResty XRay 評估某個 CVE 是否影響當前系統時,它不會去查詢元件的版本字串,而是直接檢測執行中程序所載入的庫檔案,驗證與該 CVE 對應的補丁特徵是否實際存在。
換句話說:我們不看版本號說甚麼,只看二進位制程式碼裡實際有沒有漏洞補丁。
這一方法天然相容 Backport 場景。無論發行版以何種方式打入補丁——版本號變沒變、changelog 有沒有記錄——只要補丁實際存在於二進位制程式碼中,OpenResty XRay 就會將該 CVE 標記為已修復;反之,則如實報告漏洞仍然存在。
執行時二進位制掃描 vs 靜態檔案系統掃描
OpenResty XRay 的掃描基於執行時動態追蹤,這一點決定了它與靜態掃描工具在覆蓋範圍上的本質差異:
| 維度 | 傳統靜態掃描 | OpenResty XRay 執行時掃描 |
|---|---|---|
| 掃描物件 | 檔案系統上的包與檔案 | 正在執行的程序及其已載入依賴 |
| 漏洞判定依據 | 版本號與 CVE 資料庫匹配 | 二進位制程式碼中的補丁特徵驗證 |
| Backport 感知 | 不感知,產生誤報 | 感知,準確反映實際修復狀態 |
| 自編譯/第三方元件 | 依賴包管理器,存在盲區 | 來源無關,只要執行即可掃描 |
需要特別說明的是,執行時掃描意味著 OpenResty XRay 的掃描範圍嚴格限定於當前正在執行的程序及其已載入的依賴庫。未啟動的服務、未載入的庫檔案不在掃描範圍之內。這一特性在實際使用中需要納入考量:確保掃描時目標服務處於執行狀態,是獲得完整掃描結果的前提。
XRay 掃描哪些庫的 CVE
OpenResty XRay 當前支援對以下關鍵依賴庫的漏洞掃描:
| 類別 | 元件 |
|---|---|
| 核心加密庫 | OpenSSL、LibreSSL |
| 壓縮庫 | zlib、bzip2 |
| 系統基礎庫 | glibc、musl |
| 其他關鍵依賴 | libcurl、libxml2、pcre2 |
覆蓋範圍持續擴充套件,如需對特定依賴庫的支援,可聯絡 OpenResty.Inc 團隊確認。
實戰案例:Rocky Linux 雙版本 OpenSSL 場景下的二進位制漏洞掃描
以下演示在 Rocky Linux 生產環境中進行,該環境同時執行兩套 OpenSSL:系統自帶的 OpenSSL 3.5.1(含發行版 Backport 補丁)以及 OpenResty Plus 自行編譯內建的 OpenSSL 1.1.1w。這一場景在實際生產環境中極為常見,也是傳統掃描工具最容易產生混亂判斷的典型配置。
場景環境說明
作業系統:Rocky Linux
系統 OpenSSL:
/usr/lib64/libcrypto.so.3.5.1
/usr/lib64/libssl.so.3.5.1
(來源:系統包管理器,含發行版 Backport 補丁)
自編譯 OpenSSL:
/usr/local/openresty-plus/openssl111/lib/libcrypto.so.1.1
/usr/local/openresty-plus/openssl111/lib/libssl.so.1.1
(來源:OpenResty Plus 內建編譯,版本 1.1.1w)
其他系統庫:
/usr/lib64/libpcre2-8.so.0.11.0
(來源:系統包管理器)
掃描結果總覽解讀
OpenResty XRay 漏洞掃描的具體呼叫命令請參考產品文件。以下展示掃描觸發後的輸出結果。
OpenResty XRay 會自動發現當前系統中所有正在執行的程序,列舉其載入的依賴庫,並對每個受支援的元件逐一執行二進位制證據驗證。整個過程無需人工指定掃描路徑,也無需依賴包管理器資料庫。
掃描完成後,OpenResty XRay 以元件為單位輸出結果,每條記錄包含:庫檔案路徑、CVE 編號、漏洞狀態。
狀態以視覺化方式區分:
- 🟢 綠色背景:該 CVE 已透過補丁修復(Patched)——二進位制證據確認補丁特徵存在
- 🔵 藍色背景:該 CVE 仍然存在(Vulnerable)——二進位制證據未發現補丁特徵
以下為本次掃描的代表性結果:
系統 OpenSSL 3.5.1(發行版包)
庫檔案:/usr/lib64/libcrypto.so.3.5.1
/usr/lib64/libssl.so.3.5.1
CVE-2025-11187 ✅ Patched
CVE-2025-15467 ✅ Patched
CVE-2025-15468 ✅ Patched
CVE-2025-15469 ✅ Patched
CVE-2025-66199 ✅ Patched
CVE-2025-68160 ✅ Patched
CVE-2025-69418 ✅ Patched
CVE-2025-69419 ✅ Patched
CVE-2025-69420 ✅ Patched
CVE-2025-69421 ✅ Patched
CVE-2026-22795 ✅ Patched
CVE-2026-22796 ✅ Patched
CVE-2026-2673 🔵 Vulnerable
交叉驗證:與發行版 changelog 對齊
OpenResty XRay 的掃描結論是否可信?我們透過發行版自身的 changelog 直接驗證。
對系統 OpenSSL 包執行以下命令:
rpm -q --changelog openssl-libs | head -20
輸出如下:
* Fri Jan 16 2026 Dmitry Belyavskiy <dbelyavs@redhat.com> - 1:3.5.1-7
- Fix CVE-2025-11187 CVE-2025-15467 CVE-2025-15468 CVE-2025-15469
CVE-2025-66199 CVE-2025-68160 CVE-2025-69418 CVE-2025-69419 CVE-2025-69420
CVE-2025-69421 CVE-2026-22795 CVE-2026-22796
Resolves: RHEL-142068
Resolves: RHEL-142002
...
changelog 中列出的所有 CVE,在 OpenResty XRay 掃描結果中全部標記為 Patched,兩份記錄完全吻合。
點選任意一個漏洞,即可檢視詳細描述資訊:
唯一標記為 Vulnerable 的 CVE-2026-2673,在 changelog 中同樣找不到對應的修復記錄——該漏洞嚴重等級較低,發行版維護團隊評估後選擇暫不 Backport。OpenResty XRay 如實反映了這一現狀:既不會因為版本號已是最新就誤判為已修復,也不會因為發行版暫未處理就將其掩蓋。
這正是二進位制證據驗證的雙重價值所在:對 Backport 補丁不誤報,對發行版主動選擇不修的漏洞不漏報。掃描結論與發行版實際釋出的二進位制補丁狀態嚴格對應。
從告警疲勞到精準:可持續的漏洞掃描實踐
看不見的風險是最難管理的風險。OpenResty XRay 將這部分原本不可見的依賴納入統一的漏洞掃描檢視,是其在包管理器之外提供的核心增量價值。
漏洞管理的本質不是生成報告,而是建立一套讓工程團隊持續信賴、持續使用的訊號體系。誤報率高的工具會系統性地訓練出「告警疲勞」——當每條告警都需要人工二次核查時,響應速度下降,流程名存實亡,真實的高危風險反而在噪聲中被延誤處理。
OpenResty XRay 基於二進位制證據的驗證機制,從源頭消除了 Backport 場景下的結構性誤報,使每一條漏洞告警都對應二進位制層面實際存在的風險,無需再做真偽初篩。
與此同時,OpenResty XRay 提供的不是「系統安裝了甚麼」的包管理器檢視,而是「系統正在執行甚麼」的執行時檢視——當一個存在已知漏洞的 EOL 元件(如 OpenSSL 1.1.1w)正在處理生產流量、卻對所有靜態掃描工具完全不可見時,這一差異直接決定了真實攻擊面是否被納入保護範圍。精準的掃描結果,是漏洞管理從專項任務演化為可持續安全運營能力的前提條件。
常見問題
二進位制漏洞掃描如何消除誤報?
二進位制漏洞掃描會檢測載入到執行程序中的機器程式碼,尋找 CVE 補丁本身的二進位制特徵。只要補丁存在於二進位制中,該 CVE 就會被標記為已修復——無論包聲稱的版本號是甚麼。這樣就消除了發行版 Backport 靜默打補丁卻不升版本號所導致的整類誤報。
OpenResty XRay 掃描的是 OpenResty 本身,還是它的依賴庫?
OpenResty XRay 掃描的是載入到執行程序中的共享庫——目前覆蓋 OpenSSL、LibreSSL、zlib、bzip2、glibc、musl、libcurl、libxml2 和 pcre2。本文案例中,OpenResty Plus 內建的 EOL 版本 OpenSSL 1.1.1w,正是包管理器掃描完全看不到的典型場景。覆蓋範圍仍在持續擴充套件,如需支援特定依賴庫,請聯絡 OpenResty Inc. 團隊。
執行時掃描和靜態掃描有甚麼區別?
靜態掃描讀取磁碟上的包和檔案,拿版本號去匹配 CVE 資料庫。執行時掃描則直接附加到主機上正在執行的程序,驗證其載入的二進位制中是否存在補丁。兩者的取捨是:靜態掃描能看到執行時看不到的非活躍檔案;而執行時掃描能看到從未經過包管理器的自編譯、內建二進位制,並能準確反映 Backport 後的真實補丁狀態。
為甚麼基於版本號的掃描工具在 Backport 補丁場景下容易出問題?
基於版本號的掃描工具依賴漏洞資料庫來判斷某個版本是否已打補丁。一旦資料庫不全——缺少發行版的 Backport 記錄、覆蓋不到非發行版編譯的二進位制、或新披露的 CVE 尚未收錄——工具就只能回退到看版本字串,從而產生誤報。二進位制掃描則直接在執行中的機器程式碼裡驗證補丁是否存在,不依賴資料庫完整性。
關於 OpenResty XRay
OpenResty XRay 是一款動態追蹤產品,它可以自動分析執行中的應用,以解決效能問題、行為問題和安全漏洞,並提供可行的建議。在底層實現上,OpenResty XRay 由我們的 Y 語言驅動,可以在不同環境下支援多種不同的執行時,如 Stap+、eBPF+、GDB 和 ODB。
關於作者
章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。
章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴, 是 “邊緣計算“、”動態追蹤 “和 “機器程式設計 “的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用動態追蹤技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等,並編寫過 60 多個開源軟體庫。
關注我們
如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:
翻譯
我們提供了英文版原文和中譯版(本文)。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!


















