去年6月的苹果世界开发者大会(WWDC)上,高级副总裁 Craig Federighi 做了两个小时的主旨演讲,突出 macOS Mojave 新隐私功能——应用若想访问敏感组件及数据(包括摄像头、麦克风、消息及浏览历史),必须征得用户的明确同意,也就是弹框询问用户是点击 “允许” 还是 “拒绝”。观众自然尽职尽责地鼓掌捧场。

但几个月后,前美国国家安全局(NSA)安全研究员 Patrick Wardle 在夏威夷毛伊岛上观看这段主旨演讲时,他对该新安全功能产生了疑问。

此前一年,他曾两度发现可使恶意软件暗中点过这些安全提示的方法,询问弹框在此类方法面前完全失去了作为安全措施的功用。Wardle将这两个可执行安全提示点击攻击的漏洞提交给苹果后——一个在WWDC主旨演讲前,另一个在演讲2个月后,苹果修复了这些漏洞。如今,Wardle就在坐看苹果将这些安全措施营销为其在即将推出的操作系统中致力于安全的正面典型。

就在6月2日,今年WWDC前夕,Wardle第三次在这些防护措施中挖了个洞。利用Mojave中的一个漏洞,Wardle又一次证明了任意自动化恶意软件都可以利用MacOS “合成点击” (synthetic click) 功能轻松通过安全提示弹框,令攻击者毫无障碍地访问主机的摄像头、麦克风、地理位置数据、联系人、消息,甚至修改系统内核,向操作系统最深处插入恶意代码。

在自己组织的 “Objective by the Sea” 讨论会前,Wardle向媒体透露:

从攻击者的角度看,产生合成点击比以前更有意思了。即便苹果的市场营销重点强调 ‘点击以允许’ 安全提示功能,该公司依然无法阻挡黑客利用简单的漏洞绕过这些安全提示。他们实现这种新安全机制的方法百分百没用。在台上各种炒作,实际却各种打脸,真是大写的尴尬。

合成点击——以程序而非鼠标或触控板上的人类手指产生的点击动作,一直以来都是实现自动化和残障用户辅助功能的有力工具。为封锁合成点击的恶意利用,MacOS要求只有被用户添加到允许列表中的应用才可以使用该功能。但去年11月份,专注苹果技术的博主 Howard Oakley 发现,这条规则有几个例外,一些应用被MacOS系统默认添加到了允许列表中。这份简短而奇怪的应用列表包含了几个版本的VLC播放器、Adobe Dreamweaver、Steam和其他几个程序,这几个应用都能不经过用户预先批准就使用合成点击。

Wardle在今年4月看到了Oakley有关这份列表的帖子。读后一小时,Wardle就宣称自己找到了诱骗MacOS将恶意软件当成该白名单中合法程序的方法。由于苹果在该名单代码签名 (代码签名即核查应用代码是否以合法密钥签名以自证身份的一个功能) 实现上的疏漏,Wardle发现只需简单修改已批准程序将恶意软件包含进去,比如让VLC将他自己的恶意软件包进去,就能完美避过安全提示。尽管代码被改过,MacOS仍会将该带毒程序识别为合法VLC的一个副本,允许该程序随意产生合成点击。

这就好像查身份证,但是并不验证身份证的真假,只比对上面的名字对不对。因为苹果搞砸了验证,他们根本检测不到我已经修改并破坏了VLC,让我的合成点击畅通无阻。我也就能绕过所有这些新的Mojave隐私措施了。

虽说在合成点击点掉之前 “允许” 或 “拒绝” 安全提示框仍会短暂显示在屏幕上,Wardle表示,他的恶意软件也可以弄暗屏幕,让屏幕看起来好像计算机进入睡眠状态一样。也就是说,在他执行合成点击攻击时用户根本没有机会看到安全提示框。

截至目前,苹果公司未对媒体有关该新合成点击漏洞的评论请求予以任何回应。

Wardle承认,他的漏洞利用本身不能够让远程攻击者通过互联网黑掉Mac机。攻击者需已经拥有受害主机的远程访问权,或已经在受害主机上安装了恶意应用。但如果黑客能够建立该初始立足点,比如通过网络钓鱼电子邮件中的恶意附件或其他常见技术,也就能够让恶意软件更深入到目标系统的底层了。

最糟糕的情况下,Wardle的合成点击攻击可被用于安装所谓的内核扩展——需用户点击 “允许” 才能够执行的操作系统内核修改。内核扩展类似Windows中的驱动,必须经由合法开发者加密签名才能被安装进MacOS。但黑客有时候会安装带有安全漏洞的合法内核扩展,然后用该漏洞获取进入目标机器最深处的全部权限。去年披露合成点击攻击的时候Wardle就说过:只要你能感染内核,你就能看到所有东西,绕过任何安全机制,隐藏进程,嗅探用户击键。基本上相当于全完了。

Wardle这次披露的Mojave漏洞,标志着他在暴露苹果合成点击安防措施漏洞上的帽子戏法。早些时候的研究中他已经证明,尽管MacOS试图封锁安全提示框上的合成点击,他的恶意软件仍可利用所谓 “鼠标键” 的不起眼功能,用键盘代替鼠标来突破MacOS的封锁。苹果随后修复了这一漏洞,但几个月之后,Wardle发现自己能用更奇怪的方法可以绕过这个补丁。就像使用实体鼠标一样,合成点击也包含两个指令(动作),一个 “按下”,一个 “放开”。Wardle发现,不知怎么回事,两次 “按下” 也会被解释为一次点击动作,而且不会触发安全提示。利用这个漏洞,Wardle成功点过了阻挡他执行内核扩展攻击的安全提示。

Wardle称,自己是在公开披露前一周才通报给苹果的,这点时间差确实不太够苹果做漏洞修复。但看苹果在同类型漏洞上一而再再而三地栽跟头,他实在是对苹果的粗心大意忍无可忍了,所以希望通过公开该未修复漏洞来施加更多压力。

我的负责任披露根本没用。所以我决定尝试另一条路来激励苹果。

苹果在修复同一安全机制漏洞上的连续失败——该安全机制还是在WWDC上作为卖点大肆宣传的,说明该公司的安全方法存在更深层次的问题

他们为什么不在发布前审计这段代码?尤其是在准备上台吹嘘这些基本没用的安全功能之时。只要实现做不好,那就是单纯的市场营销。

声明:本文来自安全牛,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。