Facebook宣布开源静态分析工具Pysa。这是 Instagram 上用于检测和修复应用程序庞大 Python 代码库中错误的一个内部工具,可以自动识别 Facebook 工程师编写的易受攻击的代码段,然后再将其集成到社交网络的系统中。
其工作原理是在代码运行 / 编译之前,以静态的形式扫描代码、查找潜在已知的错误模式、然后帮助开发者标注出潜在的问题。Facebook 声称,Pysa 现已通过持续改进达到了成熟;在2020 上半年,该工具在 Instagram 服务器端的 Python 代码中检测到了 44% 的安全漏洞。
Pysa 是 Python Static Analyzer 的首字母缩写,其基于 Pyre 项目的开源代码构建,可以对 Python 应用程序中的数据流进行分析。此外,Pysa 还可以检测常见的 Web 应用安全问题,例如 XSS 和 SQL 注入。
Pysa 的开发汲取了 Zoncolan 的经验,其使用了与 Zoncolan 相同的算法执行静态分析,甚至与 Zoncolan 共享了一些代码。像 Zoncolan 一样,Pysa 可追踪程序中的数据流。Zoncolan 是 Facebook于2019 年 8 月发布的用于 Hack 的静态分析器,主要面向类似于 PHP 的编程语言。
Pysa和Zoncolan都可对输入代码库的数据 “源”和 “接收器”进行查找,且都可以跟踪数据在代码库中的移动方式,并找到危险的 “接收器”部分,例如可以执行代码或检索敏感用户数据的函数。当在输入源和危险的接收器之间发现连接时,Pysa(和 Zoncolan)就会向开发者发出警示,以便其展开相应的调查。
此外,Pysa 也是为提高速度而构建的,它能够在 30 分钟到几小时内处理数百万行代码。Pysa 的另一个特性则是具有可扩展性,Facebook 安全工程师 Graham Bleaney称,“因为我们自己的产品使用了开源的 Python 服务器框架,比如 Django 和 Tornado,所以 Pysa 可以从第一次运行就开始发现使用这些框架的项目的安全问题。而将 Pysa 用于我们尚未涉及的框架,一般来说只需添加几行配置,告诉 Pysa 数据进入服务器的位置即可。”