本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
Facebook,拥有数十亿用户规模的超级大厂,代码总行数高达一亿行。
Bug,可能藏在一亿行代码中的每一行里,而且Facebook的工程师们还一直在添加新的代码进去,这要是出了什么问题,影响超多用户,要怎么在浩如烟海的代码里定位问题?
靠大案牍术么?
不,靠Zoncolan,静态分析工具,能在30分钟内扫描完整个代码库,及时发现bug的所在,检测内部的安全漏洞。
不少人都在Twitter上称赞这款工具,有人觉得这款工具非常有趣,还能让大家更有干劲;
还有人觉得自动搜索代码找错误这一点,实在是太迷人了。
甚至有Facebook黑都觉得,虽然不喜欢这公司,但他们的安全和工程团队的确令人尊重。
Zoncolan
Zoncolan是Facebook内部复杂的代码检查系统中的一种工具,用静态分析的方法自动检查Facebook内部的代码,映射代码库的表现和功能,检测潜在的安全威胁,让安全工程师的工作规模化。
有了Zoncolan,代码检查的速度大大提高了。手动检查可能需要经年累月的时间,但靠Zoncolan,从冷启动开始,只要不到30分钟的时间,就能检查完Facebook长达一亿行的整个代码库。
自从开始应用以来,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/