開源軟件漏洞的傳染性-TK教主講CVE-2004-0597
- 2019 年 12 月 5 日
- 筆記
在小米安全峰會上,教主提到了另一個問題:「是否安全問題會影響多個產品,甚至整個行業?」
教主講的一個例子是libpng開源庫,CVE-2004-0597這個漏洞:
"Multiple buffer overflows in libpng 1.2.5 and earlier, as used in multiple products, allow remote attackers to execute arbitrary code via malformed PNG images in which (1) the png_handle_tRNS function does not properly validate the length of transparency chunk (tRNS) data, or the (2) png_handle_sBIT or (3) png_handle_hIST functions do not perform sufficient bounds checking."
libpng庫,在處理異常數據輸入時會激發漏洞。但更可怕的是這種開源軟件的漏洞具有傳染性,依賴這個庫的其它軟件,一旦與這個庫發生依賴關聯,基於此開源部件的軟件,如果有給個這個開源庫提供輸入的能力,就會造成漏洞觸發。
從時間線上講,libpng的漏洞產生在先,而很久之後被引入到MS的MSN通信軟件中,這樣將libpng的漏洞也同時引入的了MSN產品中,像教主說的,給MSN提供一個問題的圖片,就可能觸發漏洞。
正因為開源軟件,有廣泛的用戶基礎,所以基於軟件功能之間的庫依賴性,造成了漏洞的傳染性。隨着軟件規模的擴大化,在軟件之間引用類似libpng這種基礎庫的概率很大, 影響多了產品是很可能的, 如果某個軟件在行業中有具大規模的用戶基礎,影響整個行業是可能的。
為什麼的會特別的注意這個問題,因為在過去軟件開發中,特別的用過兩個庫,一個是libpng, 另一個是更基礎的字體庫FreeType。
libPng和FreeType這種底層基礎庫,很多系統都使引用,因此就具有傳染性,當時我們在高清攝像機里使用庫這些庫,攝像機系統是相對封閉專業的系統,沒有太多給用戶交互輸入機會。
設想一下,如果未來攝像型的改變,接入網絡,引入各種輸入交互的場景,同樣會引入漏洞。
教主的問題,答案是肯定的。
因為開源軟件復用性與依賴性,給漏洞軟件提供的傳播的渠道,一旦一個存在漏洞的軟件與多個軟件產品發生聯繫,就會存在互向影響,漏洞通過軟件的功能依賴,使其具備了傳染性。