社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

没有一个APP是安全的!PHP、Python等编码语言出现重大漏洞

嘶吼专业版 • 7 年前 • 787 次点击  

Black Hat Europe 2017安全会议的成果可谓是成果满满,这不又有专家发现多种编码语言(JavaScript, Perl, PHP, Python, Ruby)都存在严重漏洞,这意味着使用这些语言所编写的各种应用程序也都存在同样的漏洞。

发表该研究的作者是美国安全公司 IOActive 的高级安全顾问Fernando Arnaboldi,他是通过模糊测试找到了目前最流行的5种解释型语言中的漏洞。

模糊测试(fuzz testing)是一种安全测试方法,它介于完全的手工测试和完全的自动化测试之间。为什么是介于那两者之间?首先完全的手工测试即是渗透测试,测试人员可以模拟黑客恶意进入系统、查找漏洞,这对测试人员的要求比较高。能力强的测试人员可以发现比较多或者高质量的安全性问题,但是如果测试人员的能力不够,可能就不能找到足够多、威胁大的安全漏洞。

虽然模糊测试已经在软件测试领域使用了许多年,不过最近才在安全研究人员的圈子中流行开来,特别是在Google的安全团队和Linux社区中。因为使用模糊测试可以有效地发现崩溃、挂起或内存损坏等问题。一般情况下,我们会认为发生这些问题是因为应用程序的源代码太冗长需要优化,而不会想到是编写代码的语言出现了问题。

5种解释型语言中的漏洞

在Arnaboldi进行的模糊测试中,他为了弄清5种编程语言的结构和运行方式,还专门编写了自己的 XDiFF (Extended Differential Fuzzing Framework,可扩展差异化模糊测试框架)。Arnaboldi首先将每种编程语言都分解为最基本的函数,然后使用XDiFF向每一种语言进行多种类型的输入(即 payload)。

Arnaboldi对此的解释如下:

发现有趣的漏洞完全取决于如何选择正确的输入,在这次测试中,我使用了差不多30组原始值的组合,它们是数字、字母等和特殊的有效载荷的组合。

之所以要和有效载荷组合,是因为它可以检测到应用程序何时会访问外部资源,并识别出本地文件内容、检测未授权代码执行并发现那些未授权的操作系统代码执行

经过这些测试,他最后发现了5种解释型语言中的漏洞:

1.Python 包含可用于操作系统命令执行的违规方法和本地环境变量。

2.Perl 中包含能执行如eval()代码的typemaps函数。

3.NodeJS 可以输出暴露部分文件内容的错误信息。

4.JRuby会加载并执行一些远程代码,而这些代码的初始设计并不是执行远程代码。

5.PHP常量中包含可被用于执行远程命令的名称。

世界上没有一个APP是安全的

Arnaboldi认为,一个经过严格训练的攻击者完全有可能利用这些编程语言的漏洞,对构建在其之上的所有应用程序发起底层攻击。

Arnaboldi表示:

我相信很多程序开发人员都不知道其中的这些漏洞,他们可能会在不知情的情况下,将漏洞编写在程序中。而由于目前的开发都是工业大规模化的,所以可以预测很多程序都会又被攻击的风险。

现在,Arnaboldi已在 GitHub 上开源了XDiFF,另外,他还发表了《通过差异化模糊测试技术来发现编程语言的隐藏行为》的论文。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/3LlNELypGP
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4730
 
787 次点击