欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

所有开发人员都注意了!苹果将正式采用Notarization机制

来源:本站整理 作者:佚名 时间:2019-05-15 TAG: 我要投稿

本文介绍了苹果将在10.14.5上新引入的App Notarization机制,届时,苹果将要求开发人员上传应用程序之前,将它们提交给苹果,以扫描恶意内容,并查找可能存在的代码签名问题,没有经过苹果检测的应用程序以后可能将不被允许运行。
随着macOS 10.14.5的正式发布,苹果首次要求所有开发人员创建一个属于开发者自己的ID证书,以Notarization机制他们的应用程序,并且所有新的和更新的内核扩展都要经过Notarization机制。
什么是Notarization机制?
代码签名机制是一种对抗恶意软件的重要武器,它能够帮助用户识别已签名App的真实身份,并验证目标应用是否被非法篡改过。代码签名机制基于密码学方法来判断代码的真实性,并防止攻击者将恶意代码伪装成合法代码。
在Notarization机制采用之前,macOS使用Gatekeeper来阻止从互联网上下载的应用程序启动,Gatekeeper是山狮中引入的一项新安全技术,它可保证用户安装来自Mac App Store或者拥有开发者签名的应用。具体来说,它可以作为Mac App Store的应用鉴别工具,也可识别来自Mac App Store以外应用的开发者身份, 从而防止一些恶意软件的进入。使用Gatekeeper时, macOS会记录那些有问题的已知应用程序列表,并防止其被执行。但是,在应用程序通过Gatekeeper并得到用户批准后,Gatekeeper就会失效,很难检测到现有的二进制文件是否被感染,并且没有好的方法可以撤销应用程序的批准。因为一旦开发人员上传的证书被撤销后,Mac App Store就会撤销所有开发人员上传的应用程序。为了出现这种歌情况,苹果引入了Notarization机制,来强化对开发者及其上传应用的管理。
简而言之,Notarization机制是建立在当前Gatekeeper安全检查之上的一个新验证层,是Gatekeeper技术的补充。
在Mojave(10.14)之前,苹果只需要一个注册的Apple ID代码签名,就会完全信任上传的应用程序。而实行Notarization机制后,苹果现在还会检查提交的代码中是否存在“已知恶意应用程序”和“可能阻止你的应用程序正确安装的常见代码签名问题。” 通过这些(目前可选)额外检查的应用程序,就被认为是“经过了Notarization机制”,即它们是安全的。
这可能是苹果为更好地防范今年早些时候发现的安全问题而做出的努力,今年早些时候,macOS发现,不正确签名的程序仍将受到macOS的信任。
2018年6月,来自安全公司Okta Rex的研究专家Josh Pitts 在macOS的代码签名机制中发现了一个可以利用的安全漏洞。这个漏洞允许攻击者将恶意的不受信任的代码伪装成受信任的合法代码,并绕过多款macOS安全产品的检测,其中包括Little Snitch、F-Secure xFence、VirusTotal、Google Santa和Facebook OSQuery。实际上,代码签名攻击并不是一种新型的攻击技术,根据Pitts发布的漏洞披露信息,这种技术跟之前的代码攻击方式有所不同,此次的漏洞并不需要管理员访问权、JITíing代码和内存崩溃便能够绕过代码签名检测。攻击者只需要利用一种专门制作的Fat/Universal文件就能够让macOS的代码签名功能返回有效的值,自2005年之后(OS X Leopard)发布的苹果操作系统都将受到该漏洞的影响。这意味着,该漏洞已经存在了13年之久。
现在,通过将代码签名提交给苹果的Notarization机制,使用户对开发者的应用程序更有安全归属感。该服务会自动扫描含有开发人员 ID签名的应用程序并执行安全检查。当程序被检查完并上传到APP商店时,苹果会在你的开发的程序上附上一个标识,让Gatekeeper知道它已经经过Notarization机制验证。
总的来说,Notarization机制是个高级别的安全机制:
1.Notarization机制是向苹果提交应用程序或内核扩展(kext)以获得批准的过程;
2.Notarization机制过程要求应用程序开发人员将其应用程序或内核扩展提交给Apple进行审核。在审核之后,苹果会根据情况判定是否给予批准,并在其服务器中记录app / kext。这是应用开发者在上传应用之前要做的事情,而不是Apple管理员要做的事情。
Stapling是Notarization机制过程的最后一步,它允许Notarization机制的应用程序在macOS上运行而无需检查Apple服务器。
一旦应用程序经过Notarization机制验证,Apple就会向开发人员提供可以“Stapling”到Notarization机制对象的标识。如果app或kext没有经过Stapling,当app / kext加载时,macOS将与Apple服务器连接以查看是否可以运行。
在未来的macOS版本中,默认情况下苹果会将所有应用程序进行Notarization机制验证。虽然目前Notarization机制还正在推广阶段,但苹果希望开发人员现在就开始对其上传的应用程序进行Notarization机制验证。
从macOS 10.14.5开始,苹果就必须对内核扩展进行Notarization机制验证,届时未经Notarization机制验证的程序将在加载时失败。
注意:在4月7日之前已经被签名的内核扩展将会被广泛使用并将继续运行(截至10.14.5 beta 4)。这意味着:
1.在4月7日以前,尚未更新的应用程序将按原来的方式在macOS 10.14.5 beta 4中运行。
2.如果具有内核扩展名(kext)的应用程序自4月7日以来已更新且未经Notarization机制,则无法成功安装。
经过Notarization机制验证的kext具有相关的安全时间戳,从macOS 10.14.5开始将需要该时间戳。在2019年4月7日之前签名的那些未经Notarization机制验证的kext将在macOS 10.14.5 beta 4中继续使用。kext文件是一个Mac OS X内核扩展,常见于Hackintosh(PC上的黑苹果)。它们通常用于设备驱动程序,运行于系统的核心基底。但是,在GAP环境中故意不加盖时间戳或签名的kext文件也可能不会运行。
译者注:GAP,源于英文的"air gap",gap技术是一种通过专用硬件使两个或者两个以上的网络在不连通的情况下,实现安全数据传输和资源共享的技术。gap中文名字叫做安全隔离网闸,它采用独特的硬件设计,能够显著地提高内部用户网络的安全强度。
总的来说,Notarization机制的特点如下:
1.Notarization机制是将其提交给苹果审核的过程,其目的就是要让苹果对商店里的应用程序进行安全控制。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载