可能改变世界软件安全格局的一次收购--------从微软通过收购Github间接收购软件安全创企Semmle谈起

在商业社会中,没有永远,只有商业利益。当然商业利益与国家利益发生冲突时,要服从国家战略利益。

                                     

2018年微软以75亿美金收购了世界第一开源网站Github时,我们惊叹这世界变化太快,思考微软收购Github会给开源带来什么影响时,而这几天,微软又宣布收购软件安全创企Semmle时,我不仅要陷入思考,而是开始担心,微软间隔一年时间收购开源第一网站和安全行业创业企业是下一盘什么棋,目的是什么?会对软件行业产生什么影响,会对世界产生什么影响呢?

对于Github,软件行业都了解,其实一个开源网站,托管了将近8500万个开源项目,超过2800万开发人员,是最大的开源社区。而对Semmle可能不是太了解,我先简单介绍一下这家企业。

Semmle是一家做安全软件的企业,是一家孵化于牛津大学的安全公司,成立于2006年。先后获得三轮融资,今年获得B轮2100万美元融资。领投方为Accel Parters,包括微软、谷歌、NASA和Nasdaq Trust、Work-Bench等(可见,在美国对于高科技创新企业的支持)。这么多世界著名企业投资于一个创业企业,这个企业的价值在哪里呢?

Semmle公司是以一种创新的方式寻找代码中的漏洞,而国内还处于鲜有企业对代码中漏洞关注。其技术核心在于把代码数据化,把分析代码中的漏洞转变为对数据库的请求,实际上是通过已知漏洞模式,在数据库中查找相似漏洞的方式。其两款产品中Engineering Analytics主要是进行工程分析,而Code Exploration是做深层代码审查工具。通过现有资料分析,第一款工具Engineering Analytics主要是通过对代码组成成分进行等分析,给出软件组件相关数据,从而评估软件项目质量。

其展示界面如下:

其给出了软件项目中组件的名称、版本(可能暂时未实现)、大小、贡献者、行数、问题数。

第二款工具Code Exploration则是通过一种声明式的面向对象查询语言QL,在数据库中寻找代码缺陷、安全漏洞、检查API是否正确、库(也就是代码)在哪里被使用、以及代码静态度量指标等。同时他们针对开源项目提供了一个平台lgtm.com,可以与Github关联,对github上的项目进行检测,给出安全漏洞报告。QL查询语言支持COBOL、C/C++、C#、Java、Javascript和python。项目只支持Github或者Bitbucket上的项目。只支持master分支且公开的项目才能测试。可以判断,Semmle已经在其数据库中抓取了Github和Bitbucket上的主流开源项目,进行分析后,存储在数据库中,其组件信息和问题(包括缺陷和漏洞)已经进行了分析,且组件中的问题与漏洞已经在数据库中进行了对应。在用户查询时,通过在数据库中查询控制流图,如果匹配上则把对应的问题显示给客户。

根据作者从事相关行业的经验,分析两款工具的原理大概如下:

 

下面我们以其网站(https://lgtm.com/rules/2159000700/)给出的一类错误的检测过程来验证一下原理。

    从上面描述可以看到,这是一个对C/C++函数每一条路径都是否有返回值的检测规则。在使用QL查询时,可以控制使用这条规则。exclude和include关键字来控制是否检测。

其给出的例子如下:也就是当某个分支中有返回值,如果函数返回前没有返回值,则产生错误(当然这种错误目前大多数编译器也提示缺少返回值)。

  该规则参考:主要来自于MISRA 2008标准。

 

其对应的QL查询语句:

每一类问题可以通过上面编写规则查询语句进行查询。根据作者的理解,这是把相当于把检测问题的方式公开透明了,开发人员可以使用现有QL检查规则去检测,也可以定制自己查询语句,也就是可以挖漏洞。

Semmle公司这两款工具,也就是借助于大数据检索技术、构建代码抽象语法树、指向分析、区间分析、符号执行等技术,提供了缺陷和漏洞检测的方法和不断。

作为安全从业人员,我们很容易了解Semmle工具技术原理,但是随着中美贸易战、科技战的愈演愈烈,我们更担心的是该技术的运用给软件行业尤其是中国所带来的潜在风险。试想,微软掌握了桌面操作系统和办公软件、开发编译工具等,微软收购了Github,再用Semmle对Github中的开源软件进行基于白盒、系统化的安全漏洞分析,则其掌握了大多数软件中的0day漏洞,而0day漏洞是重要的战略资源,这意味着什么?

回到国内,大多数企业对源代码安全不是太重视,而源代码安全漏洞检测工具长期被国外垄断,而国内大数据安全厂商则是依靠渗透测试工具发现系统脆弱点,渗透工具则基本上是包装开源渗透工具。从事源代码安全的厂商非常少,能够从底层采用主流技术研发工具的厂商屈指可数,一个是北大库博(cobot.net.cn),从2012年开始在软件源代码安全方面进行研究,目前有CoBOT源代码缺陷检测工具和软件成分和同源漏洞分析工具两款,采用自主可控的专利技术,能够主动发现软件中的缺陷和漏洞,能够提供SDK开发接口,类似于Semmle QL查询功能,应用该接口已经发现了多个0day漏洞。

在国内,我们在互联网行业发展的如火如荼,现在国家还在推广工业互联网建设,通过互联网技术融入到工业企业,想弯道超车。当然国内也有像华为这样的企业,能够在多年之前洞察到今天的局面,进行操作系统、芯片等支撑互联网的底层软硬件的研发。政府和资本应该支持具有底层创新技术的公司和团队,保证我们的IT基础设施建设的安全。国内军队、国防企事业更是如此,依赖国外总会被卡脖子,断供,且存在巨大风险,伊朗、委内瑞拉等涉及到重要工业设施的计算机遭受攻击就是前车之鉴,可能随着各国军事实力的增强以及核武器研发,大国之间的爆发军事战争的可能性在减少,而躲在暗处的互联网上的战争却每天都在进行,互联网攻防演练需要不断加强。谁掌握了软件源代码静态分析技术,包括二进制代码分析技术,就可以进行漏洞挖掘,在没有硝烟的战争中抢占先机、把握主动。

      (完)

发布了309 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/manok/article/details/101221551