allbet代理开户(www.allbetgame.us):行使硬件级的 MDS 侧信道信息泄露破绽实现对 Chrome Sandbox 的逃逸_新2代理网址

新2代理网址

www.122381.com)实时更新发布最新最快最有效的新2网址和新2最新网址,包括新2手机网址,新2备用网址,皇冠最新网址,新2足球网址,新2网址大全。

,

可以行使跨历程内存泄露的破绽逃逸Chrome沙箱,在提议此攻击之前,仍然需要攻击者损坏渲染器,为了防止对受影响的CPU的攻击,请确保microcode是最新的,并禁用超线程(HT)。

在我的上一个文章“损坏数据流”中,我形貌了若何行使Chrome的JavaScript引擎V8中的破绽来在渲染器中执行代码。为了使这种行使有用,你通常需要将其与第二个破绽相关联,由于Chrome的沙箱会限制你对操作系统的接见,而且将跨站点渲染器的站点隔离移动到单独的历程中,以防止你绕过Web平台的限制。

在本文中,我们将研究沙盒,尤其是当从受熏染的渲染器使用RIDL和类似的硬件破绽时所发生的影响。Chrome的IPC机制Mojo基于新闻路由的隐秘,泄露这些隐秘使我们可以将新闻发送到特权接口,并执行不应允许渲染器执行的操作。我们将使用它来读取随便内陆文件,以及在Windows上的沙箱外部执行.bat文件。在撰写本文时,Apple和Microsoft都在与Chrome平安团队相助努力致力于修复此破绽,以防止这种攻击。

0x01 靠山知识

以下是Chrome流程模子的简要概述:

渲染器历程位于单独的沙箱中,而且对内核的接见受到限制,例如,通过Linux上的seccomp过滤器或Windows 上的  win32k锁定。然则,为了使渲染器执行任何有用的操作,它需要与其他历程举行对话以执行种种操作。例如,要加载图像,将需要要求网络服务代表其获取图像。

Chrome中用于历程间通讯的默认机制称为Mojo。它在后台支持新闻/数据管道和共享内存,然则你通常会使用C ++,Java或JavaScript中的高级语言之一绑定。也就是说,你使用自界说接口界说语言(IDL)的方式确立一个接口,Mojo用你选择的语言为你天生计根,而你只是实现了该功效。这可以检查出URLLoaderFactory .mojom IDL,C ++实现,并在渲染使用。

Mojo的一项显着功效是允许你通过现有通道转发IPC端点。该代码在Chrome代码库中获得了普遍使用,即,每当你在.mojom文件中看到吸收器或远程参数时。

Mojo在历程之间或更详细地在Mojo的节点之间使用特定于平台的新闻管道。两个节点可以直接相互毗邻,然则由于Mojo支持新闻路由,因此不必毗邻。网络中的一个节点称为署理节点,它具有一些其他责任来设置节点通道并执行沙箱限制的某些操作。

IPC端点自己称为端口。在上面的URLLoaderFactory示例中,客户端和实现方都由端口标识。在代码中,端口如下所示:

 class Port : public base::RefCountedThreadSafe {
  public:
   // [...]
   // The current State of the Port.
   State state;
   // The Node and Port address to which events should be routed FROM this Port.
   // Note that this is NOT necessarily the address of the Port currently sending
   // events TO this Port.
   NodeName peer_node_name;
   PortName peer_port_name;
   // The next available sequence number to use for outgoing user message events
   // originating from this port.
   uint64_t next_sequence_num_to_send;
   // [...]
 }

上面的peer_node_name 和peer_port_name 都是用于寻址的128位随机整数。若是将新闻发送到端口,它将首先将其转发到准确的节点,吸收节点将在内陆端口映射中查找端口名称,并将新闻放入准确的新闻行列。

这意味着若是浏览器历程中存在信息泄露破绽,则可以泄露端口名称,并使用它们将新闻注入特权IPC通道。现实上,在Mojo焦点文档的平安性部门中对此举行了声明:

“ [...]任何节点只要知道端口和节点名称,就可以将任何新闻发送到任何其他节点的任何端口。[...]因此,主要的是不要将端口名称泄露到不应被授予响应功效的节点中。”

可以很容易地行使泄露的端口号的一个破绽的一个很好的例子是crbug.com/779314通过@NedWilliamson。这是blob实现中的整数溢出,它使你可以在浏览器历程中读取blob前面的随便数目的堆内存。

该破绽行使历程将大致如下所示:

1. 损坏渲染器。

2. 使用Blob破绽泄露堆内存。

3. 在存储器中搜索端口(有用状态+ 16个高熵字节)。

4. 使用泄露的端口将新闻注入特权IPC毗邻。

接下来,我们需要思量两件事。若何用CPU破绽替换上面的第2步和第3步,以及若何通过特权IPC毗邻获得什么样的原语。

0x02  RIDL

为了行使此硬件破绽,我需要寻找另一个破绽,该破绽使你可以跨历程界线泄露内存。来自MDS攻击的 RIDL 似乎是最理想的选择,由于它完全可以保证:它允许你从受影响的CPU上的种种内部缓冲区泄露数据。有关其事情原理的详细信息,请查看论文或PPT,由于它们比我能注释的要好得多。

已经公布了 microcode和操作系统更新来解决MDS攻击。然则,若是你阅读了英特尔对该问题的深入](https://software.intel.com/security-software-guidance/insights/deep-dive-intel- *** ysis-microarchitectural-data-sampling)研究,你会注重到,缓解措施在切换到特权较低的执行上下文时祛除了受影响的缓冲区。若是你的CPU支持超线程,你仍然可以从物理内核上运行的第二个线程中泄露数据。解决此问题的建议是禁用超线程或实现组调剂程序。

你可以在网上找到多个验证了该MDS 破绽的PoC,他们中的一些具有差其余属性:

· 它们以加载或存储目的。

· 有些要求从L1缓存中祛除key。

· 你可以控制64字节高速缓存行中的索引从先前的接见中泄露或泄露64位的值。

· 速率转变很大,取决于变体和破绽行使。我看到的最高是针对Brandon Falk的228kB / s 的MLPDS攻击。为了举行对照,我的机械上的破绽行使仅到达25kB / s。

https://gamozolabs.github.io/metrology/2019/12/30/load-port-monitor.html,an-mlpds-exploit

所有行使变体有一个配合属性是,它们在泄露的内容上具有概率。只管RIDL论文形貌了一些针对某些值的同步原语,但通常需要触发对key的重复接见才气将其完全泄露。

我最终使用差其余MDS变体为Chrome编写了两个破绽行使,一个针对Xeon Gold 6154上的Linux构建,另一个针对Core i7-7600U上的Windows。我将形貌这两种方式,由于它们在实践中最终面临差其余挑战。

0x03  MFBDS

微系统结构填充缓冲区数据采样(MFBDS)

我的第一个破绽是使用针对CPU的行填充缓冲区的MFBDS。PoC异常简朴:

 xbegin out            ; start TSX to catch segfault
 mov   rax, [0]        ; read from page 0 => leaks a value from line fill buffer
 ; the rest will only execute speculatively
 and   rax, 0xff       ; mask out one byte
 shl   rax, 0xc        ; use as page index
 add   rax, 0x13370000 ; add address of probe array
 prefetchnta [rax]     ; access into probe array
 xend
 out: nop

今后,你将准时接见探针阵列以查看已缓存了哪个索引。

你可以在开头更改0 ,以控制泄露的高速缓存行中的偏移量。另外,你还希望根据本文所述在泄露值上实现前缀或后缀过滤器。请注重,这只会泄露不在L1高速缓存中的值,因此你希望有一种方式可以在两次接见之间从高速缓存中移出key值。

 https://mdsattacks.com/files/ridl.pdf

对于我的第一个泄露目的,我选择了一个特权URLLoaderFactory。如上所述,渲染器使用URLLoaderFactory来获取网络资源。它将为渲染器强制执行同源计谋(现实上是相同站点),以确保不会损坏Web平台的限制。然则,浏览器历程还将URLLoaderFactories用于差其余目的,而且它们具有其他特权。除了忽略同源计谋外,还允许它们上传内陆文件。因此,若是我们可以泄露其端口名之一,则可以使用它将/ etc / passwd 上传到https://evil.website。

下一步将触发对特权加载程序的端口名的重复接见。使浏览器历程发出网络请求可能是一种选择,但似乎开销太大,我决议针对节点中的端口查找。

 
 class COMPONENT_EXPORT(MOJO_CORE_PORTS) Node {
   // [...]
   std::unordered_map ports_;
   // [...]
 }

每个节点都有一个存储所有内陆端口的哈希映射。若是我们将新闻发送到不存在的端口,目的节点将在映射中查找它,发现它不存在并删除新闻。若是我们的端口名与另一个端口名位于统一哈希库中,它将读取未知端口的完整哈希值以与之举行对照。由于端口名通常与散列存储在统一高速缓存行中,因此这还将端口名自己加载到高速缓存中。MFBDS允许我们泄露整个缓存行,纵然未直接接见值也是云云。

该maps在一个新的Chrome实例上以约莫700的存储巨细,而且主要随着渲染器数目的增添而增进。这使攻击变得不能行,由于我们将不得不强制使用存储区索引缓和存行偏移量。然则,我注重到一个代码路径,该路径使你可以使用服务事情者确立大量特权URLLoaderFactories。若是你确立启用导航预加载的服务事情,则每个导航都将确立这样的loader。通过简朴地确立多个iframe并在服务器端住手请求,你可以同时使数千个加载程序保持流动状态,并使暴力破解变得加倍容易。

唯一缺少的是从L1缓存中寻找目的值。在实践中,简朴地用32KB数据填充我们的新闻似乎可以解决问题,由于我以为数据将被加载到受害者的L1缓存中。

总结完整的行使:

1. 损坏渲染器。

2. 在$ NUM_CPU-1历程中以差其余缓存行偏移量运行RIDL破绽。

3. 安装具有导航预加载的服务。

4. 确立许多iframe并暂停其请求。

5. 使用随机端口名称将新闻发送到网络历程。

6. 若是我们在存储索引上发生冲突,则2.中的历程可能会泄露端口名称。

7. 将新闻诱骗到URLLoaderFactory以将内陆文件上传到https://evil.website。

0x04 TSX异步中止(TAA)

在2019年11月公布了MDS攻击的新变种,而且由于TAA PoC似乎比我的MFBDS攻击更快,因此我决议将其改编为Chrome攻击。此外,VUSec公布了一项针对存储操作的破绽行使程序,若是我们可以将key写入到内存中的差异地址,则该破绽应允许我们逃走缓存刷新要求。若是我们可以触发浏览器将新闻发送到特权端口,则应该发生这种情形。在这种情形下,secret端口名称也将以节点名称作为前缀,而且我们可以使用RIDL文件中的手艺轻松对其举行过滤。

我还最先寻找一个更好的原语,发现若是可以与NetworkService举行通讯,它将允许我确立一个新的NetworkContext,从而选择存储cookie的sqlite3数据库的文件路径。

为了找出若何触发从浏览器历程到NetworkService的新闻,我查看了界面中的IPC方式,以找到一种看起来可以从渲染器影响它的方式。NetworkService.OnPeerToPeerConnectionsCountChange引起了我的注重,现实上,每次更新WebRTC毗邻时都市挪用此方式。你只需要确立一个伪造的WebRTC毗邻,每次将其符号为已毗邻/断开毗邻时,都市触发一条新新闻给NetworkService。

一旦从受损坏的渲染器中泄露了端口名称,我们就获得了编写具有完全受控路径的sqlite3数据库的原语。

虽然早先听起来并不是很有用,然则你现实上可以滥用它来获得代码执行。我注重到Windows批处置文件是一种异常好的文件名堂。若是文件的开头有gadget,它将跳过它直到下一个“ \ r \ n”并从那里执行下一个下令。在我的破绽行使中,我使用它在用户的自动运行目录中确立一个cookies.bat文件,添加带有“ \ r \ n”的cookie和其中的下令,它将在下次登录时执行。

最终,此破绽行使平均在我的机械上执行了1-2分钟,而且延续不到5分钟。而且我敢一定,由于某些手艺可以大大提高速率,因此可以大大改善这一点。例如,现实上MLPDS似乎比我使用的变体更快。

行使步骤:

1. 损坏渲染器。

2. 在$ NUM_CPU-1历程中以差其余缓存行偏移量运行RIDL破绽。

3. 确立伪造的WebRTC毗邻,并在已毗邻和已断开毗邻之间切换。

4. 泄露NetworkService端口名称。

5. 使用c:\ path \ to \ user \ autorun \ cookies.bat中的cookie文件确立一个新的NetworkContext

6. 插入cookie“ \ r \ ncalc.exe \ r \ n”。

7. 守候下一次登录。

0x05  剖析总结

当我最先研究此问题时,我感应惊讶的是,纵然破绽已经果然了一段时间,它仍然可以被行使。若是你阅读有关该主题的指南,则他们通常会在你的操作系统为最新的情形下谈论若何缓解这些破绽,并应注重你应禁用超线程以完全珍爱自己。专注于缓解措施无疑给我一种感受,那就是破绽已获得解决,我以为这些文章对于启用超线程的影响可能会加倍清晰。

话虽云云,我希望你从这篇文章中思索两个问题。首先,信息泄露破绽不仅仅可以绕过ASLR。纵然不是依赖key端口名,也可能会泄露其他有趣的数据,例如Chrome的UnguessableTokens,Gmail cookie或盘算机其他历程中的敏感数据。若是你对若何大规模查找信息泄露有所领会,Chrome可能是一个不错的选择。

其次,由于硬件破绽超出了我的研究局限,因此我长时间忽略了它们。然则,我希望我可以通过此文章为你提供有关其影响的另一个数据点,以辅助你做出是否应该禁用超线程的决议。对于可以用类似的方式损坏其他软件的方式,尚有许多探索的余地,我很愿意看到更多应用硬件破绽突破软件平安性界线的示例。

本文翻译自:https://googleprojectzero.blogspot.com/2020/02/escaping-chrome-sandbox-with-ridl.html:

欧博亚洲APP下载

欢迎进入欧博亚洲APP下载(www.aLLbetgame.us),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

  • 评论列表:
  •  新2备用网址
     发布于 2021-07-18 00:00:50  回复
  • 皇冠注册平台

    皇冠注册平台(www.huangguan.us)是一个开放皇冠即时比分、皇冠官网注册的平台。皇冠注册平台(www.huangguan.us)专业解决皇冠会员怎么申请开户、怎么申请皇冠信用盘代理、皇冠公司的代理怎么拿的问题。

    好看,真的好网站

添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。