找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

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

2018-4-25 10:22| 发布者: admin| 查看: 685| 评论: 3

摘要: 三个月前该团队就已经发现了Switch的启动漏洞,并通知了谷歌。如今时限已过,黑客也详细的公布了漏洞信息。

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


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

 

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

 

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

 

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


Nintendo Switch内部的Tegra X1(也称为Tegra210SoC包含一个可以利用的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(最后面的引脚)。你只需使用一根简单的电线将其桥接至导轨上的螺钉(最简单的办法),或者将引脚107(或1)连接在一起(109不起作用)。 你可以通过3D打印制作出一个小夹具来轻松的完成这一操作,或使用micro usb接头的内部结构(它与Joy-Con的连接部分有相同的引脚间距),再或者拆掉一个Joy-Con从中取出一部分以便当做连接器使用。最后一种办法很有用,因为Joy-Con的导轨是UART接口(注:这里我不是很明白,导轨上怎么会有串口?原文“Joy-Con rails are UARTs”)并且我们使用右侧Joy-Con端口当做corebootu-boot以及Linux的控制台。


执行基于USB的漏洞


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

 

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

 

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


路过

雷人

握手

鲜花

鸡蛋

相关阅读

发表评论

最新评论

引用 yinoo3 2022-11-29 03:09
666
引用 zhushiyao 2022-11-19 20:59
谢谢分享
引用 Qjq1992 2022-10-2 00:30

查看全部评论(3)

相关分类

Archiver|手机版|小黑屋|深圳斯威奶牛科技有限公司 ( 粤ICP备14034528号-1 )|网站地图

GMT+8, 2024-12-21 12:59 , Processed in 0.031080 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部