对于开源管理,开源许可证和开源漏洞都是不可忽略的方面。市面上很多开源管理工具号称支持开源组件已知漏洞扫描,其根据扫描出的开源组件版本号来确认对应的已知漏洞。工作原理示意图如图1所示:
图1
事实上,漏洞一般只和整个组件的一小部分文件相关,有时候与漏洞相关的文件可以缩短到几行(片段)。如图2所示:
图2
据已知资料统计,OpenSSL v1.0.1含有63个已知安全漏洞。也就是说,如果被扫描的代码引用了开源OpenSSL v1.0.1就会被开源管理工具上报63个漏洞,无论是否应用了完整的OpenSSL v1.0.1。就如图2所示,无论扫描代码是否引用了d1_both.c和t1_lib.c,开源管理工具都会上报漏洞CVE-2014-0160,这明显的是误报!即使引用者修改了d1_both.c和t1_lib.c中和漏洞相关的代码,开源管理工具仍然会上报漏洞CVE-2014-0160。
FOSSID 漏洞片段探测器是唯一一个开源扫描器,它能够找到引入和暴露安全漏洞的实际代码行(易受攻击的代码段)。如图3所示:
图3