安全性最高的 app 也会遭攻击,解释型语言来背锅

admin 2022-06-24 05:37:15 AnQuanKeINFO 来源:ZONE.CI 全球网 0 阅读模式

 

背景

IOActive 公司的高级安全咨询师Fernando Arnaboldi 在上周举行的2017年欧洲黑帽大会上指出,多种流行的解释型编程语言遭受严重漏洞影响,导致构建于它们基础之上的app易遭攻击。Arnaboldi表示他通过模糊测试找到了目前最流行的五款解释型编程语言中的漏洞。这五款流行编程语言是Javascript、Perl、PHP、Python和Ruby。

 

表1:所测试的解释型编程语言实现

编程语言 解释器
Javascript V8, ChakraCore, Spidermonkey, Nodejs (v8), Node (ChakraCore)
PHP PHP, HHVM
Ruby Ruby, JRuby
Perl Perl, ActivePerl
Python CPython, PyPy, Jython

 

模糊测试涉及向软件应用提供无效、异常或随机数据。多年来模糊测试技术都一直应用在软件测试领域,不过最近广受安全研究员尤其是谷歌安全团队和Linux 社区的青睐,原因是模糊测试能够识别出崩溃、挂起或内存损坏问题。通常来讲,这些问题产生的原因不仅在于app的源代码需要优化,还因为其中隐藏着安全问题。

 

自定义模糊测试工具从五款编程语言中发现问题

Arnaboldi专门构建了 XDiFF (Extended Differential Fuzzing Framework,可扩展差异化模糊测试框架)“差异化模糊器”,旨在适应编程语言的结构和工作方法。Arnaboldi将每种编程语言都解剖为最基本的函数,然后通过 XDiFF 填入多种类型的输入(即 payload)。

他指出,“找到有意思的漏洞完全依赖于选择合适的输入。这次测试使用的原始值(即数字、字母等)和特殊 payload 组合不到30个。这些特殊 payload 旨在帮助识别软件何时会尝试访问外部资源”。这个特殊的 payload 能暴露本地文件内容、检测未授权代码执行并找到未授权的操作系统代码执行。

他从五种编程语言中都找到了严重漏洞。

1、  Python 中包含未记录方法和本地环境变量,可用于操作系统命令执行。

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

3、  Nodejs 输出能暴露部分文件内容的错误信息。

4、  JRuby 在目的并非执行远程代码的函数上加载并执行远程代码。

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

 

即使最安全的 app 也受影响

Arnaboldi表示,攻击者即使在构建于这些编程语言基础上的最安全的应用中也能利用这些漏洞。

 

表2:针对每种编程语言所测试的函数数量

编程语言 所测试函数数量
Javascript 450
PHP 1405
Ruby 2483
Perl 3105
Python 3814

 

他指出,“软件开发人员可能在不知情的情况下在应用中使用了有漏洞的代码,而这种应用可被以某种设计人员并未预测到的方式利用。有些行为会给按照安全指南开发的应用带来安全风险。假设开发人员并无恶意,这些漏洞可能是因错误导致或者是为了简化软件开发过程。这些漏洞会最终影响到使用此解释器的应用。”

Arnaboldi在 GitHub 上开源了 XDiFF。感兴趣的读者可从他发表的论文 《通过差异化模糊测试技术暴露编程语言中的隐藏可利用行为 (Exposing Hidden Exploitable Behaviors in Programming Languages Using Differential Fuzzing)》 中了解更多详情。

weinxin
特别声明
本站(ZONE.CI)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
记一奇葩弱口令到内网实战 AnQuanKeINFO

记一奇葩弱口令到内网实战

一、前期打点拿到目标后首先要做的就是信息收集,这次给的目标就给个单位名称,通过互联网上搜索发现其网站在阿里云上着实无奈,在这里推荐个寻找资产的方法,利用ICP/IP地址/域名信息备
MITRE漏洞公告意外展示易受攻击资产 AnQuanKeINFO

MITRE漏洞公告意外展示易受攻击资产

第317期你好呀~欢迎来到“安全头条”!如果你是第一次光顾,可以先阅读站内公告了解我们哦。欢迎各位新老顾客前来拜访,在文章底部时常交流、疯狂讨论,都是小安欢迎哒~如果对本小站的内容
浅识k8s中的准入控制器 AnQuanKeINFO

浅识k8s中的准入控制器

背景在 k8s中各组件和kube apiserver通信时的认证和鉴权 中提到”NodeRestriction准入插件”,实际上它是一个”准入控制器”。“准入控制器”是一个重要的概
评论:0   参与:  0