APP下载

脸书开源可侦测Python程式码安全与隐私问题的工具Pysa

消息来源:baojiabao.com 作者: 发布时间:2024-06-09

报价宝综合消息脸书开源可侦测Python程式码安全与隐私问题的工具Pysa

脸书开源了自家用来侦测Instagram服务器程式码库臭虫的安全工具Pysa,Pysa是一个程式码静态分析工具,以Python类型检查器Pyre为基础,Pysa能分析资料流通过程式码的方式,找出资料流隐藏的安全和隐私问题。在2020上半年,Instagram服务器中有44%的安全性问题,是利用Pysa侦测到的。

脸书提到,去年他们释出的静态分析工具Zoncolan,已经用来分析了超过1亿行程式码,找出了大量的安全性问题,由于Zoncolan解决方案的成功,因此让他们决定另外开发Python静态分析器(Python Static Analyzer)Pysa,以提升自家Python程式码的安全性。

Pysa可以用来侦测常见的安全性以及隐私问题,诸如检查Python专案是否有使用脸书某些内部隐私框架,以保护用户资料与防止泄漏,另外,Pysa还可以侦测常见的网页应用程序的安全性问题,包括XSS和SQL注入攻击漏洞,脸书主要将Pysa用于Instagram服务器的程式码库,以确保Python应用程序的安全性。

用户可以将Pysa应用于自己的Python程式码中,以探索各种安全性问题。由于脸书在内部专案使用Django和Tornado等开源框架,因此当用户的专案也有使用这些框架,便能以Pysa方便地找出专案的安全漏洞,而没有使用Pysa覆盖的框架也没关系,用户只要加入几行设定,告诉Pysa服务器程式的资料进入点,Pysa就可以开始侦测工作。

Pysa使用静态分析算法,追踪程式中的资料流,使用者需要定义资料来源(Source)以及资料接收器(Sink),资料来源也就是指重要资料的来源处,而资料接收器处理资料,但不能是资料结束的地方。脸书提到,以安全的应用程序来说,最常见的资料来源是用户控制资料进入应用程序的位置,像是Django的HttpRequest.GET字典(Dictionary),而接受器的种类更多,包括可以执行程式码的API如eval,或是存取档案系统的API都属于接受器。

Pysa执行迭代分析并产生摘要,以确定哪个函式从来源回传资料,又是哪个函式具有参数,能将资料送至资料接收器,当Pysa发现资料来源最后连接到的是资料接受器,则便会发出问题通知,警示使用者。

而Pysa也有一些限制,脸书提到,不可能建构出完美的静态分析工具,Pysa的目的是要发现跟资料流相关的安全问题,但并非所有安全性和隐私问题,都可被归类成为资料流的问题,像是Pysa没办法用来检查与身份验证相关的安全性问题,虽然使用者可以重新编写程式码,使其被描述为资料流问题,但这也说明了,Pysa无法侦测所有形式的安全问题。

另外,因为Python是一个动态语言,部分功能难以应用静态分析发现,像是在没有类型资讯的情况下,Pysa难以透过方法呼叫追踪资料流,用户需要花一些心力,扩展Pysa覆盖的重要类型。

2020年上半年,Instagram服务器程式码中的安全性问题,有44%是利用Pysa发现的,Pysa侦测到330个安全性问题,其中有15%是重大问题,而有40%虽然也是安全性问题,但因为执行环境的缘故,使这些问题不那么严重,脸书提到,因为他们怕遗漏任何漏洞可能性,因此倾向接受大量误报,剩下的45%则属于误报。脸书还在持续改进Pysa,改善浏览问题追踪,并且更好地找出Pysa误报的问题。

2020-08-10 22:48:00

相关文章