30分钟扫描一亿行代码找bug,这款神器连Facebook黑粉都赞叹不已

新闻 开发工具
Bug,可能藏在一亿行代码中的每一行里,而且Facebook的工程师们还一直在添加新的代码进去,这要是出了什么问题,影响超多用户,要怎么在浩如烟海的代码里定位问题?

[[274624]]

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

Facebook,拥有数十亿用户规模的超级大厂,代码总行数高达一亿行。

Bug,可能藏在一亿行代码中的每一行里,而且Facebook的工程师们还一直在添加新的代码进去,这要是出了什么问题,影响超多用户,要怎么在浩如烟海的代码里定位问题?

靠大案牍术么?

不,靠Zoncolan,静态分析工具,能在30分钟内扫描完整个代码库,及时发现bug的所在,检测内部的安全漏洞。

不少人都在Twitter上称赞这款工具,有人觉得这款工具非常有趣,还能让大家更有干劲;

30分钟扫描一亿行代码找bug,这款神器连Facebook黑粉都赞叹不已

还有人觉得自动搜索代码找错误这一点,实在是太迷人了。

30分钟扫描一亿行代码找bug,这款神器连Facebook黑粉都赞叹不已

甚至有Facebook黑都觉得,虽然不喜欢这公司,但他们的安全和工程团队的确令人尊重。

30分钟扫描一亿行代码找bug,这款神器连Facebook黑粉都赞叹不已

Zoncolan

Zoncolan是Facebook内部复杂的代码检查系统中的一种工具,用静态分析的方法自动检查Facebook内部的代码,映射代码库的表现和功能,检测潜在的安全威胁,让安全工程师的工作规模化。

有了Zoncolan,代码检查的速度大大提高了。手动检查可能需要经年累月的时间,但靠Zoncolan,从冷启动开始,只要不到30分钟的时间,就能检查完Facebook长达一亿行的整个代码库。

[[274625]]

自从开始应用以来,Zoncolan已经找出了数千个潜在的安全问题。

Zoncolan设置了关于不良架构或代码的“规则”,并自动扫描系统中的这些类错误。除了标注下这些问题之外,Zoncolan还能将问题实时反馈给工程师,让它们规避掉此类问题。

Facebook安全工程经理Pieter Hooimeijer介绍说,每当工程师提交代码到代码库的时候,Zoncolan就会在后台运行,找出来的问题直接告诉这位提交代码的工程师,或者提交到值班的安全工程师那里。

按照Facebook工程师们的提交频率,Zoncolan每天运行数千次,仅仅2018年一年,它就发现了1500个问题。

隐私泄露问题无法万无一失

不过,有了这类找bug和安全漏洞的工具存在,Facebook也不能保证万无一失。

去年,Facebook就因黑客攻击,导致3000万用户包括手机号码、邮箱地址等用户信息泄露。咨询公司TrustedSec的CEO David Kennedy说,Zoncolan这类静态分析工具,无法发现这种数据泄露问题。

不过,也并非所有的隐私问题Zoncolan都无法解决。

今年3月,Facebook被爆出有6亿用户密码被以明文方式存储,超过2万名员工都可以看到这些密码。此事发生之后,Facebook把这类漏洞的规则提交到了Zoncolan上,因此,Zoncolan也可以扫描代码库中类似的状况,也确实找到了一些问题。

将会开源

最后,Zoncolan这么好的东西,能不能拿出来和大家一起分享呢?

Facebook安全工程经理Pieter Hooimeijer说,他们希望能推出开源的版本。不过,鉴于开源版本可不仅仅只用适配Facebook内部环境就好了,所以还需要增强灵活性,适配更多环境。

此前,Facebook已经针对Python推出了一个名为Pyre的代码检查器,虽然能力范围并不像Zoncolan一样强大,但这基本上就是Facebook准备开源的一个范例了。Hooimeijer说,这个基本上就是Python版的Zoncolan。

Pyre开源地址:

https://github.com/facebook/pyre-check

参考链接:

https://www.wired.com/story/facebook-zoncolan-static-analysis-tool/

 

责任编辑:张燕妮 来源: 量子位
相关推荐

2017-01-10 09:07:53

tcpdumpGET请求

2013-05-03 10:57:09

泛型泛型教程

2017-03-15 09:34:26

华为软件开发

2020-05-22 10:20:27

Shiro架构字符串

2017-07-18 11:10:45

2020-08-17 10:50:29

Python代码get

2017-06-07 18:40:33

PromiseJavascript前端

2024-08-27 13:43:38

Spring系统业务

2013-12-11 10:00:14

C++新特性C

2016-08-03 16:01:47

GitLinux开源

2022-09-30 15:46:26

Babel编译器插件

2016-04-06 11:14:48

iOS相机自定义

2022-05-30 08:34:49

PythonSQL

2018-09-14 16:04:45

Facebook 开发工具

2009-11-10 17:27:01

Oracle全表扫描

2018-02-02 10:24:37

Nginx入门指南

2022-07-27 15:50:55

漏洞网络攻击

2021-10-28 05:34:46

云计算云游戏Stadia

2022-03-31 06:27:59

网络故障网络管理平台网络中断
点赞
收藏

51CTO技术栈公众号