JavaScript、PHP、Python等5款主流编程语言爆安全漏洞
PHP、JS 等主流编程语言爆安全漏洞
没有不漏的锅,如果底层的编程语言如果出现问题,顶层的应用程序还能幸免于难吗?
这周在 Black Hat Europe 2017 安全会议上,一名安全研究员公开了几款目前非常流行的解释型编程语言中出现的漏洞。这些编程语言上存在的问题,可能让运用这些语言开发的应用程序因此也很容易遭受攻击。
这项研究的作者是 IOActive 的高级安全顾问 Fernando Arnaboldi。这位专家表示他使用了自动化的模糊测试工具在解释器中对五种编程语言进行了测试:Java,Perl,PHP,Python和Ruby。在对默认库和内置函数进行模糊测试之后,他在研究中公布了每种语言存在的一些问题。
图0:JavaScript、PHP、Python等主流编程语言爆安全漏洞
使用 XDiFF 对 5 款语言进行模糊测试
使用模糊测试工具,对软件进行测试通常需要检测到不寻常的行为,以及对内存崩溃以及溢出进行检测。
目前比较流行的测试工具(如AFL和Peach)通常需要在寻找漏洞的时候的时候采用相同的逻辑,而这些工具无法存储执行过的测试用例的信息。
在这位研究员的研究过程中,他自定义了自己的模糊测试工具 XDiFF(扩展差分模糊测试框架),以此适应这几款不同的编程语言。在测试过程中,他将每种编程语言都分解成了最基本的功能,然后使用XDiFF来提供各种payload输入来进行测试。
图1:JavaScript、PHP、Python等主流编程语言爆安全漏洞
在这次测试中,我们的的输入中主要使用了不到 30 种的原始数据类型,但也有一些特别的payload。这些特别的payload 是用于测试程序获取外部数据资源时是否会出现问题。
以上这些测试都是用于分析测试目标——是否会出现“暴露本地文件、未授权的代码注入、未授权的系统代码执行操作”等安全问题。
测试结果:均暴露出问题
而从他的测试结果来看,我们确实可以看到Java、PHP、Ruby、Perl、Python分别在经历了多项测试之后,暴露出来了哪些问题。
- Python中存在可用于OS命令执行的未记录方法和本地环境变量。
- Perl 中有一种可执行如 eval() 的 typemap 函数。
- NodeJS 中输出的错误信息会泄露部分文件内容。
- JRuby 可以加载和执行并非设计为远程代码执行的代码
- PHP中常量的名字可以用来执行远程命令。
最安全的应用层序也会因此“倒下”
Arnaboldi 表示攻击者可以利用这些编程语言上的漏洞来“放倒”最安全的应用程序。
一些软件开发者可能会在没有意识到的情况下将代码包含在应用程序中,而这些代码可能导致的后果却是开发者没有考虑到的。
即便是按照安全指南来进行开发的最安全的应用程序也可能会因此出现“安全隐患”。
即便开发者没有恶意企图,但这些漏洞也可能因为开发者无意识或试图简化开发而引入进来。
图2:JavaScript、PHP、Python等主流编程语言爆安全漏洞
目前XDiFF已经作为开源项目公布在GitHub上。
更具体的演讲和演示内容也可以在Arnaboldi的论文中了解。
参考资料:
- http://securityaffairs.co/
- https://www.bleepingcomputer.com/
相关文章
- 图像处理工具Python扩展库,你了解吗?
- 十个常用的损失函数解释以及Python代码实现
- 30 个数据科学工作中必备的 Python 包
- 如何在 Windows 上安装 Python
- 几行 Python 代码就可以提取数百个时间序列特征
- 使用Python快速搭建接口自动化测试脚本实战总结
- 哪种编程语言最适合开发网页抓取工具?
- 不要在 Python 中使用循环,这些方法其实更棒!
- 震惊!用Python探索《红楼梦》的人物关系!
- 如何最简单、通俗地理解Python模块?
- 酷炫,Python实现交通数据可视化!
- 为什么急于寻找Python的替代者?
- 30 个数据工程必备的Python 包
- 去字节面试被面这题能答上来吗?谈谈你对时间轮的理解?
- 火山引擎在行为分析场景下的 ClickHouse JOIN 优化
- 用Python爬取了某宝1166家月饼数据进行可视化分析,终于找到最好吃的月饼~
- 在 Linux 上试试这个基于 Python 的文件管理器
- Python列表解析式到底该怎么用?
- 如何快速把你的 Python 代码变为 API
- 十个Python初学者常犯的错误