开源软件漏洞的传染性-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这种底层基础库,很多系统都使引用,因此就具有传染性,当时我们在高清摄像机里使用库这些库,摄像机系统是相对封闭专业的系统,没有太多给用户交互输入机会。
设想一下,如果未来摄像型的改变,接入网络,引入各种输入交互的场景,同样会引入漏洞。
教主的问题,答案是肯定的。
因为开源软件复用性与依赖性,给漏洞软件提供的传播的渠道,一旦一个存在漏洞的软件与多个软件产品发生联系,就会存在互向影响,漏洞通过软件的功能依赖,使其具备了传染性。