请选择 进入手机版 | 继续访问电脑版
快捷导航
 
ShofEL2 - Switch破解漏洞与Tegra X1芯片启动漏洞介绍
VIEW CONTENTS

ShofEL2 - Switch破解漏洞与Tegra X1芯片启动漏洞介绍

2018-4-25 16:27| 发布者: admin| 查看: 1645| 评论: 1|原作者: GypsyRose|来自: 贴吧整理
摘要: 三个月前该团队就已经发现了Switch的启动漏洞,并通知了谷歌。如今时限已过,黑客也详细的公布了漏洞信息。

欢迎来到ShofEL2和Switch Linux,这是fail0verflow推出的用于任天堂Switch或其他基于Terga X1平台设备运行其他通用代码或linux的无需修改的启动栈(boot stack)。

是否发布此漏洞是一个困难的选择。鉴于我们过去在游戏主机方面的经验,我们一直担心发布与漏洞有关的细节或漏洞本身,会导致它们被主要用于盗版而不是自制软件。也就是说,Tegra bootrom的bug非常明显,以至于现在有多个人已经独立发现了它; 在最好的情况下,其他自制团队的发布也是不可避免的,而在最坏的情况下,某个盗版modchip团队可能会领先一步。90天前,我们负责任的开始了与Google的披露流程,因为Tegra芯片经常用于Android设备。目前披露截止日期已经失效。这个bug迟早会公之于众,并且很有可能及尽早发布,所以我们现在最好还是将漏洞和我们的Linux引导链和内核树一起发布,清楚地表明我们这样做是为了好玩和自制系统,而不是别的。

但之后有人在我们的90天披露窗口将于4月25日到期前两天发布了0day bug。好吧,是的,这与fuséegelée所利用的bug是一样的,这只是其他一些组织泄露的(但我们首先发现它)。

由于我们没有准备好博客帖/repos(因为我们很拖拉),这将会有点艰难,但没有什么特别的,这就是独家报道。

 

无论如何,这究竟是什么?

Nintendo Switch内部的Tegra X1(也称为Tegra210)SoC包含一个可以利用的bug,可以取得早期执行(early execution)的控制权,绕过所有签名检查。 此bug处于RCM模式,这是一种基于USB的救援模式,旨在用于初始化Tegra设备的flash和恢复变砖的设备。 通常情况下,RCM模式只允许加载已签名的镜像,但感谢这个bug,使得任意代码的执行成为可能。

这意味着为了在Switch上获得代码执行的权限,你需要做两件完全独立的事情:

1.进入RCM模式

2.执行基于USB的漏洞

每个步骤都可以通过几种独立的方式完成。请注意,这是iPhone用户称为“有线越狱”的原因,因为它需要在每次通过USB启动时执行。

由于此bug位于Boot ROM中,因此如果不是通过更新硬件版本,则无法进行修补,这意味着此bug在现在的所有的switch主机都将永久存在(注:无视switch软件系统版本)。Nintendo只能在制造过程中通过补丁修补此Boot ROM错误。由于该漏洞在启动过程中很早就发生,因此它允许提取所有设备数据和机密,包括Boot ROM本身和所有加密密钥。只要没有硬件损坏或发生不可逆转的变化(例如熔断器熔断),它也可以用于修复任何变砖的Tegra设备。并且由于这是一个启动阶段的bug,不需要修改板载的eMMC存储内容,也因此现有软件完全无法检测到是否使用了此漏洞!(原文此句话特意加粗,个人理解为任天堂无法获知用户是否利用了此漏洞,可能指自制系统可以正常联机)。只要你不尝试对板载内存进行更改(例如,你可以将Linux文件系统存储在SD卡另一个分区中或是另一张SD卡上),就可以永远不受惩罚地双启动Linux(通过利用USB漏洞)和Switch的操作系统(通过正常启动)。

 

进入RCM模式

对于Switch,可以通过多种途径进入RCM模式:

1.从系统上先前的内核模式代码执行,例如:使用WebKit漏洞和内核漏洞作为切入点

2.如果eMMC存储模块被移除,则Tegra将在引导时进入RCM模式

3.同时按住switch本体上的音量加,Home键和电源键(不是joy cons上的)

( 注:home键不是在右侧joy con上吗?后文说明此home键并不实际存在,而是指引脚)

请注意,Joy-Con上的home键在这里不起作用。你可能很好奇Nintendo switch主体上的秘密Home按钮在哪里。事实证明,Tegra所称的Home按钮实际上连接到了switch主体与右侧Joy-Con控制器的连接部分的引脚10(最后面的引脚)。你只需使用一根简单的电线将其桥接至导轨上的螺钉(最简单的办法),或者将引脚10和7(或1)连接在一起(10和9不起作用)。 你可以通过3D打印制作出一个小夹具来轻松的完成这一操作,或使用micro usb接头的内部结构(它与Joy-Con的连接部分有相同的引脚间距),再或者拆掉一个Joy-Con从中取出一部分以便当做连接器使用。最后一种办法很有用,因为Joy-Con的导轨是UART接口(注:这里我不是很明白,导轨上怎么会有串口?原文“Joy-Con rails are UARTs”)并且我们使用右侧Joy-Con端口当做coreboot、u-boot以及Linux的控制台。

 

执行基于USB的漏洞

执行USB漏洞需要一个USB主机(注:即有USB接口的PC)。该漏洞还需要使用非常长的控制传输协议,不幸的是一些操作系统对此支持并不十分友好(注:windows可能够呛)。你可以在运行vanilla Linux操作系统并带有xHCI(USB 3.0)控制器的PC上使用此漏洞,或者使用具有EHCI(USB 2.0)控制器和此内核补丁的PC上使用。

这一操作也可以从一部运行Android系统的手机上执行(最少还应该具有xHCI控制器),将此漏洞移植到安卓将留给读者们完成。在另一种Tegra设备上完成它来获得奖励积分,就像另外一个switch一样。

注:接下来的部分是如何部署Linux系统的启动链操作,有兴趣的吧友可以自己去原文链接查看,相关代码在博客中已经给出了链接,我就不再翻译了。希望大家看完这个帖子能对switch的破解原理有一个较为完整的认识。


鲜花

握手

雷人

路过

鸡蛋
admin

说到底,还是Tegra芯片害了老任。

2018-4-25 16:36 引用

热门更多
本作塞尔达地图极大,为了方便玩家跑图多了马匹相关的系统,这次
独家评论更多

让创业更简单

  • 反馈建议:service_media@36kr.com
  • 客服电话:
  • 工作时间:周一到周五

云服务支持

精彩文章,快速检索

关注我们

Copyright TRANSFUN  Powered by©  技术支持:     ( 蜀ICP备16004102号-2 )