技术编辑:徐九丨发自:思否编辑部git
近日,Facebook 宣布开源静态分析工具 Pysa。这是 Instagram 上用于检测和修复应用程序庞大 Python 代码库中错误的一个内部工具,能够自动识别 Facebook 工程师编写的易受攻击的代码段,而后再将其集成到社交网络的系统中。github
其工做原理是在代码运行/编译以前,以静态的形式扫描代码、查找潜在已知的错误模式、而后帮助开发者标注出潜在的问题。segmentfault
Facebook 表示该工具是内部开发,经过不断完善如今已经成熟。Facebook 表示在 2020 年上半年,Pysa 在 Instagram 的服务器端 Python 代码中检测到了全部安全漏洞中的 44%。安全
Pysa 是 Python Static Analyzer 的首字母缩写,其基于 Pyre 项目的开源代码构建,能够对 Python 应用程序中的数据流进行分析。此外,Pysa 还能够检测常见的 Web 应用安全问题,例如 XSS 和 SQL 注入。服务器
其实 Pysa 的概念并不新鲜,该工具的开发也借鉴来 Zoncolan。Zoncolan 是 Facebook 于 2019 年 8 月发布的用于Hack的静态分析器,主要面向 PHP。网络
Pysa 和 Zoncolan 都在寻找“源”(输入代码库的数据)和“接收器”(数据结束)。两种工具均可以跟踪数据在代码库中的移动方式,并找到危险的“接收器”,例如能够执行代码或检索敏感用户数据的函数。框架
此外,Pysa 也是为提升速度而构建的,它可以在 30 分钟到几小时内处理数百万行代码。Pysa 的另外一个特性则是具备可扩展性,Facebook 安全工程师Graham Bleaney 称,“由于咱们本身的产品使用了开源的 Python 服务器框架,好比 Django 和 Tornado,因此 Pysa 能够从第一次运行就开始发现使用这些框架的项目的安全问题。而将 Pysa 用于咱们还没有涉及的框架,通常来讲只需添加几行配置,告诉 Pysa 数据进入服务器的位置便可。”函数
该工具的背后是 Facebook 安全团队。该工具是围绕安全团队的需求而构建的。工具
尽管大多数静态分析工具都在寻找各类各样的错误,但 Pysa 是专门为寻找与安全相关的问题而开发的。更具体地说,Pysa 跟踪“经过程序的数据流”。spa
数据如何经过程序代码流动很是重要。现在,大多数安全漏洞利用都利用了未通过滤或不受控制的数据流。例如,远程代码执行(RCE)是当今最严重的错误类型之一。
对于这类工具,若是要花费数天时间才可以扫描整个代码库,那么对于安全的防御能力就会大打折扣。
所以,Pysa 的构建过程当中也考虑来速度的因素,可以在 30 分钟到几小时以内遍历数百万行代码。这样,Pysa 能够近乎实时地发现错误,并使开发团队能够放心地将该工具集成到其常规工做流程和例程中,而没必要担忧使用它可能会延迟其代码的发布或未达到严格的期限。
GitHub 地址:https://github.com/facebook/p...