U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

首页科技正文

怎么买usdt便宜(www.payusdt.vip):为什么你的MacsOS EDR解决方案不应该在Rosetta 2下运行

admin2021-04-1730资讯

USDT跑分平台

U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

上周,SentinelOne宣布了其v5.0署理的早期可用性,它成为之一个本机支持Apple的新M1(又名Apple芯片或arm64 Macs)系统结构的终端平安署理。与其他MacsOS的EDR/XDR平安解决方案差异,有了本机支持,Sentinel署理无需在Apple的翻译软件层(称为Rosetta 2)下运行。

在这篇文章中,SentinelOne的研究职员注释了在这个领域中所有热门术语的寄义,从“Rosetta2”和“Apple Silicon”到“arm64 architecture”和“Universal 2”二进制文件,并注释为什么在Apple Silicon上本机运行平安软件具有显著的性能和平安优势。

去年,苹果公司宣布将为Macs装备构建自己的CPU,而不是依赖英特尔作为其处置器,这一新闻惊动一时。这些新装备于2020年终更先发售,并通过多个代号与Intel Macs举行了区别。

苹果公司为推销他们的新装备缔造的之一个术语是“Apple silicon”,意思是指基于ARM公司设计的芯片的CPU芯片。苹果授权基础设计,并自行设计。很显著,他们不想把自己的芯片标榜为是ARM芯片,而更愿意用一个怪异的品牌名称“Apple silicon”来体现其品牌价值。

固然,苹果公司已经在iOS系统中使用他们自己定制的ARM芯片许多年了,并用“A”和数字说明符来举行编号,好比A10、A11、A12等等(当前版本的iOS系统搭载的是A14芯片)。也许是为了保持这种编号的划定,之一个Macs ARM芯片被编码为“M1”。随着苹果不停迭代设计,我们希望看到M2和M3等产物。因此,除了被称为“Apple Silicon Macs,苹果的之一代非英特尔装备也被称为“M1 Mac”。

这就有需要是我们研究二进制文件——可执行文件花样,它是苹果和第三方软件的基础,可以在这些新的M1芯片上运行。固然,这些必须有一个与CPU架构兼容的花样。在英特尔装备上,我们有x86_64 Macsh-O可执行文件;对于M1/Apple silicon Macs,本机二进制花样是arm64e Macsh-O。

因此,我们有一个基于ARM的M1/Apple硅处置器架构和运行在上面的arm64二进制文件。这似乎很简朴,但有一个问题:已往15年或更长时间里为英特尔Macs电脑编写的所有软件呢?不要忽视这样一个事实:至少在未来的两年内,苹果仍在销售和生产带有英特尔芯片的Macs电脑。同时拥有两个完全不兼容的软件目录的两个硬件产物线是站不住脚的。苹果需要找到一种方式,让在英特尔装备上构建的软件能够在新的M1装备上运行。

输入Rosetta 2和通用文件花样。

英特尔、ARM和对翻译软件的需求

Rosetta这个名字源于著名的“Rosetta Stone”,正是这块石碑让我们得以将埃及象形文字翻译成现代语言。苹果原始的Rosetta软件现实上辅助公司在2000年月中期将早期的架构PowerPC转化为英特尔。

由于 M1 芯片底层架构和已往差异,由此带来的应用生态兼容性问题是首先需要解决的,为此苹果也开启了为期两年的 Mac 过渡设计。详细来说,苹果借助的是 macOS 11 Big Sur 系统以及其内置的 Universal 2、Rosetta 2 和 Virtualizaion 三种手艺来解决问题。不外话虽云云,可能照样会有小同伴会对照犹豫,这些措施真的可以解决 M1 芯片 Mac 的软件兼容性问题吗?稀奇是原来在 x86 架构上的应用,开发者还没有实时做适配,能在 Mac 上很好地运行吗?

对于这个问题,实在苹果已经给出了专门的解决方案,就是 Rosetta 2。

Rosetta 2 是内置在 macOS 11 Big Sur 系统里的,在幕后事情,只有当你之一次下载一款 x86 应用,之一次打开时,才会提醒你安装 Rosetta 2。

换句话说,Rosetta 2 的存在完全不会对你已往一直以来使用 Mac 的习惯造成影响,它险些是无感的,悄悄做着翻译事情。

想要知道你使用的 App 到底是原生在 Mac 上运行的,照样经由 Rosetta 2“翻译”之后的,只要在 “应用程序”文件夹中找到这个应用的图标,右键打开菜单栏里的 “显示简介”,若是应用种类后面有一个 “Intel”,说明这个应用就是 x86 版本经由 Rosetta 2 翻译的。

基于这样的机制,Rosetta 2 能够辅助 x86 架构的应用在 M1 芯片的 Mac 上保持流通快速的响应,从而获得很好的使用体验。

固然,Rosetta 2 做翻译的方案事实只是权宜之计,不会一直存在,只是在开发者们将自己的应用周全转到 M1 芯片原生状态之前饰演过渡的作用。

那时,Rosetta的研发者使用了一种通用的文件花样,它是一种“FAT”二进制文件,其中包罗PowerPC和Intel二进制文件。无论CPU是PowerPC照样Intel,操作系统都从FAT通用二进制文件中提取准确的文件,并在CPU上本机运行它。然则,若是Intel CPU遇到只有PowerPC二进制文件的软件,它将执行Rosetta转换器,并将PowerPC二进制文件转达给Rosetta执行。

对于M1 Mac,苹果接纳了类似的方式:开发者(好比SentinelOne)使用Universal 2二进制花样在一个版本中宣布他们软件的Intel和arm64版本。使用Universal 2二进制花样,操作系统会检查它运行在哪个系统结构上,并自动选择适当的arm64(适用于M1 Mac)或Intel(适用于x86_64)片来执行。然而,若是M1 Mac遇到尚未举行本机转换的开发职员提交的Intel二进制文件,它就会将二进制文件转达给Rosetta 2转换机制来处置。

按着苹果公司的说法,整个历程对用户来说应该是“透明的”,在这里“透明”的意思是“不能见的”,而不是“显著的”。然而,Rosetta 2的事情方式与原始的Rosetta并不完全相同,这对性能和平安都有影响,用户应该注重这一点。

新的系统结构意味着终端平安性面临新的挑战

,

USDT交易平台

U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

,

原始的Rosetta和Rosetta 2的主要区别在于举行翻译的时间。对于Rosetta 2,苹果希望阻止在原始Rosetta机制下影响一些严重消耗资源的软件的性能问题,好比Adobe CS2。

最初的Rosetta的问题在于,每次运行该软件时都市翻译该软件,从而在每次启动时都频频给CPU造成肩负。 Apple接纳Rosetta 2的方式是,通过在软件首次启动时举行“提前”(AOT)翻译并将该翻译保留以供未来宣布,来尽可能地阻止这种情形。

虽然这是一种改善仿真软件性能的好方式,但也有瑕玷,稀奇是从平安软件的角度来看。

相对于翻译后的代码,本机arm64代码至少具有两个性能优势,而翻译后的代码与大型,庞大的程序(例如EDR产物)稀奇相关。

我们上面提到的Ahead-of-Time转换是通过名为oahd_helper的辅助程序举行的。该程序认真在首次运行x86_64二进制文件时确立转换后的AOT二进制文件。要翻译的x86_64代码的巨细越大,启动时间越长。当需要oahd_helper转换异常大的Intel可执行文件时,这又会导致装备上的内存和CPU占用过多。

其次,对于需要在运行时剖析的庞大程序代码的某些部门,无法举行完整的AOT转换。由于局部环境变量和条件的缘故原由,有时直到运行时才气确定需要运行什么代码。虽然理论上开发职员可以提前编译所有可能的代码分支,但这既效率低下又容易失足。需要时确定运行什么代码并即时举行编译(即时编译或JIT编译)的效率和防错性要高得多。

在其他条件相同的情形下,当你在本机处置器上运行本机代码时,JIT编译是没问题的,但现代码必须通过Rosetta举行翻译时,这意味着只管使用了AOT编译,但仍然需要举行一些即时编译。当这种情形发生时,内核将控制权转移给一个特殊的Rosetta翻译存根,由它来处置这项事情。简而言之,任何足够庞大的程序(如EDR解决方案)都需要通过Rosetta实时翻译至少一部门Intel代码,而与运行本机arm64代码的平安解决方案相比,这种翻译将导致性能消耗。

苹果也在自己的官方文件中也提到了这一事实:

“翻译历程需要时间,以是用户可能会以为翻译后的应用程序有时会启动或运行得更慢。”

通过设计,本机M1软件更平安

然则性能并不是唯一需要忧郁的事情。更主要的是,本机M1代码比通过Rosetta翻译运行英特尔代码更平安。这是由于macOS Big Sur(acOS Big Sur是苹果公司研发的桌面端操作系统,于北京时间2020年6月23日在2020苹果全球开发者大会上宣布,该操作系统适用于一部门Mac电脑。)带来的转变之一只适用于Apple silicon Macs,即本机arm64代码不能在M1 Mac上执行,除非它有有用的代码署名。

除非附加了有用的署名,否则Apple Silicon Mac在任何情形下都不允许执行本机arm64代码。然则,翻译后的x86_64代码不受此限制:翻译后的x86_64代码完全可以通过Rosetta执行,而没有任何署名信息。

你可以在M1 Mac上用一个简朴的“hello world”程序轻松验证这一点。若是首先将下面的程序编译为arm64e,请注重操作系统在实验执行时是若何阻止它的,然则一旦我们重新编译了与x86_64可执行文件相同的源文件,就可以在没有代码署名且没有代码的情形下运行hello.out:

这就允许了软件改动的可能性,即通过Rosetta(Rosetta)翻译仅以英特尔二进制代码运行的软件,其代码署名可能被删除,代码被修改,程序在没有有用开发者代码署名的情形下通过Rosetta(Rosetta)执行。

只管实验举行此类攻击的攻击者另有其他障碍需要祛除,但仍然存在这样的情形:在M1 Mac上,本机arm64代码比翻译后的Intel代码在本质上更平安,由于后者无需举行任何代码署名检查就可以运行。

这自然就引出了一个问题:Rosetta自己是否可以用作攻击前言。只管所有组件都通过系统完整性珍爱举行了锁定,但Rosetta是一个多方面且庞大的机制,由许多联锁部件组成,每个部件都有潜在的攻击面。

在Rosetta的某些部件上,研究职员已经完成了一些初始的、精彩的逆向工程,但关于这个转换层另有许多需要领会的地方,研究仍在举行中。

总结

毫无疑问,苹果在Rosetta 2上比原始Rosetta有了长足的提高,这也允许以注释为什么某些软件开发职员尚未举行过渡,也许还不领会本机M1支持的优势。其他开发职员可能更愿意让他们的解决方案在Rosetta下运行,以行使他们尚未或无法转换为ARM的旧式Intel模块的优势。

然则,如上所述,出于性能和平安方面的思量,在Apple芯片上本机运行平安软件的利益显而易见。就像在其他地方,苹果可能会在某些地方禁用Rosetta 2,而不会引起人们的注重。最后,同样不能阻止的是,正如最初的Rosetta在苹果最终完全从Intel的PowerPC架构过渡过来之后的几年就停产了,苹果最终将放弃对Apple silicon平台上的翻译软件的支持。

本文翻译自:https://www.sentinelone.com/blog/why-your-macos-edr-solution-shouldnt-be-running-under-rosetta-2/:

网友评论