探究Safari扩展-Mojave上的恶意插件

在第2部分中,我们将探讨Apple新架构的优缺点以及它对macOS恶意软件和广告软件的意义

在第1部分中,我们研究了Safari扩展带来的安全隐患,并剖析了一个名为Pitchofcase的广告软件扩展样本的情况。而在这篇文章中,我们将探讨Apple是如何以提升安全为目标来改变扩展程序架构的。我们将基于这些变化重新审视Pitchofcase的行为,并总结对安全意识较强的用户具有重要意义的所有这一切提升内容。

正如Apple在2018年WWDC上所指出的那样,“legacy extensions”(“扩展后遗症”) - 指Safari Extensions Gallery内外以.safariextz后缀文件类型分发的那些扩展插件,

“incredibly powerful, because they had access to all your browsing data, which made them popular, especially for fraud and malware”.

“难以想象的强大,因为它们可以随意访问你的所有浏览数据,这使得他们很受欢迎,特别是对于欺诈和恶意类软件”。

于是在2016年,Apple从长远的眼光来规划,推出了Safari App Extensions。与用户必须独立于父应用程序安装、更新和删除的旧版Safari扩展形式不同,Safari App Extensions作为appex插件被包含在应用程序包中:

这意味着它们与开发者ID进行了绑定,并且可以通过App Store提供服务;换句话说,现在扩展程序的分发受到了与常规macOS应用程序分发相同的约束。

除此之外,在Mojave系统和Safari 12中,除了直接来自Apple的Safari Extensions Gallery库的扩展,传统的.safariextz现在已经被阻止使用。这也只是暂时的过度时期。 Apple打算完全放弃Gallery,并且直到2018年底才接受绑定了ID的扩展程序的提交。最终,只有与应用程序捆绑在一起的扩展程序才允许在macOS上的 Safari中进行使用。

当然,这并没有让合法的开发者长久意识到除了为其扩展提供包装外,什么都不做的空白“shell”应用程序很容易被创建:

我们相信恶意软件的创建者很快就会跟着效仿。

向前一步说

从安全角度来看,App Extension模型对用户来说既有利也有弊。除了扩展与其关联的应用程序之间的集成变得更紧密之外,另一个优势就是在Mojave中,Apple增加了开发人员使用subresource integrity或SRI的能力。这意味着开发人员可以防止MITM的攻击,比如在我们上一篇文章中提到过的攻击,确保可以依据开发人员在App Extension包中所包含的预定义校验和来检查扩展通过http或https下载的任何脚本内容。

 

往后退两步说......

虽然这是一个很好的用以帮助尽责的开发人员保护他们用户的安全补充,但它仍然需要开发人员的采用。它最终也并不能阻止不道德的开发人员在以后去选择将一个看似无害的扩展转变为恶意软件来源。只有Apple将SRI变成规定,MITM的威胁才能真正被压制。

但因为或多或少的某种原因,开发在调用外部脚本时会无法保证采用了完整的子源码,所以也会无法完全保护用户不受这种没有恶意意图的开发人员的影响。通常人们会认为这类不遵循最佳实践规则的开发人员数量会比较少,从而会令人放松警惕和感觉良好,但历史数据却显示的并不是这样。在2017年,研究人员发现Safari扩展库中高达40%的扩展包都存在一个并不是由于Apple API的错误而导致的安全漏洞,而仅仅是由于许多开发人员没有遵循最佳实践规则,导致的一个安全令牌token发生泄露产生的后果。

往后退两步的情况涉及到恶意软件进程对众多已安装的扩展插件产生作用的能力。正如我们在其它地方已经报道过的那样,Mojave的一个重大变化是锁定了程序对用户数据的访问,其中一个锁定区域之一是用户的Safari文件夹。在早期的macOS版本上,恶意软件进程是可以访问该文件夹的,以便于枚举分析选定用户的已安装扩展程序:

这个命令无法在Mojave上运行是一件好事(即如果没有绕过用户保护的话)。获取扩展插件列表是恶意软件开发人员分析用户特征和执行有针对性攻击的一种方式之一。例如,恶意软件可以:

“search for users with shopping management extensions and password managers to narrow down their attack surface to only those users whose credit card information has a higher likelihood to be stolen. Another possibility would be to identify the presence of a major antivirus vendor extension to personalize an exploit kit or to decide whether the malicious payload should be delivered or not to a certain user. “

“首先搜索安装有购物助手和密码管理器扩展插件的目标用户,然后将他们的攻击范围缩小到只有那些信用卡信息被盗可能性更高的用户。另一种可能是识别目前绝大多数防病毒供应商扩展存在的个性化漏洞开发工具包或决定恶意负载是否应该向该特定用户传送。 

不幸的是,App Extensions 的迁移破坏了阻止访问Safari文件夹扩展数据的努力。结果事实上是现在的扩展应用程序包中的.appex插件使得恶意软件可以使用pluginkit组件枚举已安装的扩展:

重新审视Pitchofcase

如果回忆一下第1部分,我们知道如果不卸载应用主程序就无法删除Pitchofcase,而现在基于对Safari App Extension模型的了解,我们可以逐渐开始理解为什么会产生这样的结果了。

尽管实际上Pitchofcase安装程序确实包含额外遗留的.safariextz版本,但它是需要删除应用主程序才能卸载它这一方式的“新”版本。这对于当前使用新架构设计的所有扩展都是如此运作的,而且一旦Apple完全停止Safari扩展库后,它将是卸载扩展的唯一方法,也许就在2019年的某个时间。

Pitchofcase既不来自Safari Extensions Gallery,也不是来自App Store,但仍然如开发商Genieo所设计的在Mojave 10.14系统上“按部就班工作”。

使用Safari 12版本的“显示所有历史记录”视图,我们可以轻松确定Genieo软件重定向的站点:

尽管Extensions的封装体系结构已发生变化,但其实现细节大致相同。 现在“script.js”文件被放在了.appex包的Resources文件夹中:

在Mojave上,也能够像在早期版本的macOS上一样,发挥它的影响 - 以开发人员身份来看就好像是一种诙谐的双关语所说的- “URL Hell”:

控制扩展

我们可以看到,新架构和Mojave的新安全协议实际上并没有能阻止安装不必要和恶意的扩展。至少目前还没有。

但是,可以公正地说,Mojave采取了一些重要的步骤来控制扩展。我们还没有找到一种让应用程序自动启用它们的扩展的方法,所以即便存在这么一个任何带有appex插件的应用程序都会被要求注册插件架构的令人担忧事实,但我们通过pluginkit在Mojave上启用它们应用程序的实验还好是让人放心的失败结果。

更重要的是,虽然之前我们已经在非正式的场合见识过,用户被欺骗来运行了恶意卸载器而不是仅仅将父程序移入废纸篓这样的行为是非常真真切切的风险。但这也许仅仅是一个时间过度问题,用户会逐步习惯于这个新的工作流和变得不再那么容易被特定的伎俩所欺骗和伤害。我们也期望看到对macOS应用程序越来越严格的终极认证检查要求,包括对任何捆绑插件的检查。总之,我们乐意看到对即使仅仅是shell扩展的应用程序也有更严格的约束,以及强制执行SRI的严格政策。

虽然用户被欺骗运行恶意卸载程序而不是仅仅将父应用程序发送到垃圾箱的风险是一个非常真实的,我们已经看到在野外发生,但用户应该只是一个时间问题习惯于这个新的工作流程,不太可能成为特定机动的受害者。我们还期望随着即将要求所有macOS应用程序最终进行公证,公证检查还将包括对任何捆绑插件的检查。最重要的是,我们希望看到对仅仅是扩展外壳的应用程序有更严格的限制,以及更严格的执行SRI的政策。

糟糕的扩展是否将成为过去?当然还没有,但我们可以看到,Apple正走在为实现这一明确目标的前进道路上。

本文翻译自:https://www.sentinelone.com/blog/inside-safari-extensions-malicious-plugins-remain-mojave/

如有不妥之处,请多多指教!

最近正好在了解这篇文章中提到的malware,所以就冒昧的献丑翻译了下!

如果觉得还可以,那就赞一个或者扫我的头像关注我吧!

--------------------- 
作者:我在地球村--做个有意思的人 
来源:CSDN 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/julius_lee/article/details/84335084