2020 上半年,Pysa 在 Instagram 服务器端的 Python 代码中检测到了 44% 的安全漏洞。今天,Facebook 宣布正式将这款安全工具开源,以便广大开发者在应用程序庞大的 Python 代码库中进行 bug 查找和修复。作为一款静态分析器,其原理是在代码运行 / 编译之前,以静态的形式扫描代码、查找潜在已知的错误模式、然后帮助开发者标注出潜在的问题。
(图自:FB)
Facebook 表示,该工具最初由内部开发,但通过不断完善,其现在认为已经足够成熟。比如在 2020 上半年,Pysa 就帮助该公司在 Instagram 服务器端的 Python 代码中检出了所有安全漏洞中的 44% 。
作为 Pysa 幕后的功臣,Facebook 安全团队付出了相当多的努力。其基于 Pyre 项目的开源代码打造,但根据 FB 安全团队的实际需求而进行了构建。具体说来是,Pysa 可追踪程序中的数据流通。
(图自:FB)
现如今的大多数安全漏洞,都利用了未经过滤、或不受控制的数据流。以当前最严重的错误类型之一的远程代码执行(RCE)为例,其本质就是让某种输入抵达了代码库中不需要的部分。
作为应对,Pysa 工具可在后台对数据的通路进行分析,对其如何跨代码库进行传输而提供一些见解,尤其是那些由成千上万行复杂代码组成的大型代码库。
尽管这个概念并不新鲜,但 Facebook 还是借助 Zoncolan 对其进行了完善。后者是该公司于 2019 年 8 月发布的用于 Hack 的静态分析器,主要面向类似于 PHP 的编程语言。
(来自:Github)
两者都可对输入代码库的数据“源”和“接收器”进行查找,追溯其在代码库汇总的移动方式,并找到危险的“接收器”部分,比如可执行代码或检索敏感用户数据的函数。
当在输入源和危险的接收器之间发现连接时,Pysa 和 Zoncolan 就会向开发者发出警示,以便其展开相应的调查。在持续数月的内部测试期间,FB 安全团队也有密切参与。
最后,除了专注于效率和面向大型代码库而设计,Pysa 还具有可扩展的特性,可为运行不同的 Instagram 组件和功能支持奠定基础。