今天拿到了北京大学库博研究团队刚刚发布的灏博软件源代码成分和漏洞分析平台的试用网址,非常兴奋,因为这是国内第一个能够对系统中进行开源组件引用分析和组件中安全漏洞分析的平台,打破了国外对该领域的垄断地位,国内企业也可以用上我们具有自主知识产权的面向开源的安全漏洞检测工具了。
迫不及待的打开网站登录,网址是
http://www.cobot.net.cn:8095/
有兴趣的朋友可以咨询使用。登录到系统后,整个页面相对简洁,左侧是当前列出项目检测出的高中低三种级别漏洞,右侧主窗口是检测的项目列表、语言类型、检测时间、检测状态、组件数、三种漏洞的个数以及组件关系图等。
我近期比较关注国内开源软件,于是下载了阿里开源数据库alisql的整个开源包进行检测。整个工程代码量将近170万行。新建项目上传整个包,大概40多兆,上传很快,传完后,单击检测按钮,会提示检测进度,没有想到检测速度非常快,大概不到5分钟,检测完成。可以看到上面截图,检测出alisql开源数据库引用了57个开源组件,这些组件中有高、中、低共197个安全漏洞。非常震惊,阿里开源数据库中居然存在这么多漏洞,由于第一次的alisql包不是官方地址,可能有什么问题,于是又找到官方在github的下载地址:
https://github.com/alibaba/AliSQL
,下载包名称为AliSQL-master.zip,项目打包的最后时间显示为2018年5月1日。
新建一个项目重新检测,检测结果除了在组件数量上增加之外,安全漏洞数量仍然是197个。
打开这些漏洞,看看有哪些安全漏洞呢,先看24个高风险漏洞。
可以看到mysql连接器、著名的心脏滴血漏洞组件openssl、samba和curl,都是非常著名,用户量非常大的开源组件。那我们先看看openssl组件中的漏洞,看看有没有心脏滴血漏洞呢?
心脏滴血漏洞的CVE编号是CVE-2014-0160,上面对照,应该是没有这个漏洞,那么使用了那个版本的openssl组件呢?当前组件版本是OpenSSL_1_0_0-beta2版本,而心脏滴血摆动是在OpenSSL1.0.1版本发现的,那么存在两种可能性,一个是1.0.0版本中没有这个漏洞,这个漏洞是后续版本引入的。或者工具有没有未检测出这个漏洞的可能呢?
于是我查询心脏滴血的漏洞描述,发现:
通过查阅资料,长长出了一口气,庆幸阿里的开发团队没有升级openssl到更高版本,非常多少使用阿里alisql开源数据库的企业存在着巨大风险呢?
但是alisql引用的openssl中仍然存在7个CVSS2.0(通用漏洞评分系统)打分在7.0以上的高风险漏洞。
我们打开其中一个看看。
上面有简短的漏洞说明,我查阅CVE-2010-3864漏洞信息。通过单击查看对应漏洞的查看漏洞详情直接进入CVE官方网站对应该漏洞的说明。
下面是CVE官方对CVE-2010-3864的摘要。
再次打开
Learn more at National Vulnerability Database (NVD)
查看美国国家安全漏洞库对于该漏洞的详细描述。
便于大家阅读,我翻译了一下:
openssl 0.9.8f到0.9.8o、1.0.0和1.0.0a中的ssl/t1_lib.c中的多个争用条件,当在一个tls服务器上启用多线程和内部缓存时,可能允许远程攻击者通过客户端数据执行任意代码,从而触发基于堆的缓冲区溢出,与(1)相关TLS服务器名称扩展和(2)椭圆曲线加密。
再看心脏滴血的漏洞描述:
我们检测出的漏洞与心脏滴血的漏洞原因近似,都是由于未对用户的请求数据未加处理,进行边界检查,导致攻击者可以利用获得溢出的缓冲区数据内容。由于时间,不再继续分析。
回顾一下发现的24个高级别漏洞,还在mysql连接器存在着6个高级别的漏洞。其中一个CVSS评分是9.0分,说明是被利用的可能性非常高。
进入查看该漏洞情况:
可见,该漏洞被恶意用户利用的风险非常高。
作者到这里,不敢再去深入分析和想象,阿里这样的企业开源数据库安全漏洞情况尚且如此,国内的开源软件的安全情况可想而知。随着开源软件文化的盛行,政府、国防军工、科院院所、金融银行、互联网等等企事业为了加快研发速度,对开发人员引用开源软件缺乏管理和控制,这些软件系统通过软件供应链进入到各行各业,为黑产产业提供了多少攻击的靶机呢?
非常幸运,这个世界总是矛和盾相克相生。灏博软件成分和漏洞分析平台的面市,为IT行业日益研究的安全形势提供了一种手段,对开源组件进行漏洞检测。为软件生产者、采购方、软件资产评估方等提供了自动化工具检测手段。灏博是北京大学库博研究团队历时3年有余研发推向市场的开源代码漏洞检测工具,通过建立开源软件代码和安全漏洞大数据数据库。截止目前,已经从主流开源网站Github、Gitlab、Source Force等下载3000万开源项目,超过10亿个开源文件,累计收集CVE/NVD/CNVD/CNNVD中约15万个安全漏洞,包括了二进制代码漏洞。支持80种以上许可证分析。据说,有上百个T的数据,占据了北京大学软件工程中心机房的大部分空间。
试用虽然结束了,但是面对目前软件行业严峻的安全形势,笔者还是非常担心,我们IT从业者为这个行业贡献了大量的技术成果和产品,推动着IT行业的进步,但是生产这些软件的管理者是否可以真正关注一下软件安全,尤其是代码安全,从底层就要守住安全底线,不要等部署到生产环境中受到攻击,遭受重大损失时,再亡羊补牢呢。