Starlink 用户终端 Modchip
本仓库与题为“人类在地球上引发的故障:SpaceX Starlink 用户终端的黑盒安全评估”的演讲配套。
幻灯片可在此处获取,演讲录像不久后应可观看。
该演讲介绍了我们如何利用一枚执行电压故障注入的自制 modchip,在 Starlink 用户终端上实现任意代码执行。
该 modchip 可用于在片上系统(SoC)ROM 引导加载程序(BL1)执行期间绕过签名验证。从而允许从 BL2 开始,在 SoC 上执行任意代码,并允许进一步探索 Starlink 用户终端以及系统的网络侧。
我们提供了 modchip 设计,以便其他研究人员可以在我们工作的基础上继续构建。
🚨 风险自负 🚨
尽管我们已测试并使用所提供 modchip 设计,但使用该 modchip 仍可能对用户终端造成永久性损坏。
同样,拆解用户终端也可能导致永久性损坏,并很可能使您的保修失效。
Modchip 设计概述
该 modchip 由 RP2040 微控制器控制,它在 eMMC D0 线路上触发,并为 MOSFET 驱动器产生两个具有(可编程)延迟和偏移的脉冲。
其中一个脉冲控制 glitch MOSFET;当该 MOSFET 的栅极被拉高时,SoC 核心电压供电将被短路到地。RP2040 生成的第二个脉冲用于控制两个 MOSFET,从而启用/禁用两个电容器组。这些电容器是 UT 完全启动所必需的,但在电压故障注入期间不能启用这些电容器组,否则将无法获得我们想要的故障。
用于制作您自己的 modchip 的原理图和 Gerber 文件可在此处获取。

前提条件
- 拆解您的 UT。如果您不想使 UT 保修失效,或不愿承担永久性损坏的风险,请到此为止。
- 读取 eMMC 芯片的内容。请做好备份!
- 您必须提取、修补并重新打包不同的启动阶段,以禁用签名验证。
- eMMC 布局记录在 U-Boot GPL 发行版 的
spacex_catson_boot.h 文件中。
- 有关提取固件的更多信息,请参阅我们的博客文章。
- 早期启动阶段均基于 ARM Trusted Firmware-A 项目。
- 您可以使用 TF fiptool 将固件镜像包(Firmware Image Package)解包为各个独立部分。
- 在进行一些基本静态分析后,可以使用 Ghidra 修补这些启动阶段(可参考开源的 TF-A 代码来指导您的工作)。
- 确保禁用签名验证并重新启用 UART 输出。
- 更新证书中的固件哈希。我们通过 glitch 绕过签名验证,但哈希仍然必须是有效的。
- 类似地,您还需要对 U-Boot 镜像进行一些更改以禁用签名验证。
- 可以使用 dumpimage 解包 Flattened uImage Tree,该工具作为 U-Boot 项目的一部分提供。
- 将修补后的固件写回 eMMC 芯片。
将 Modchip 安装到 Starlink UT PCB 上
-
在尝试焊接之前,请确保您组装好的 modchip 工作正常。
-
移除红色方框内的去耦电容,这些电容通常用于稳定 SoC 核心电压供电。

-
将组装好的 modchip 对准 UT PCB,并使用半孔(castellated holes)焊接到位。确保不要在核心电压供电与地之间造成任何短路。
- 最右侧的半孔位置不正确。您可以重新设计 PCB,或者直接遮蔽 UT PCB 上裸露的焊盘,并将半孔连接到附近的接地焊盘(见图)。
-
将标记为 UT RST 的测试点连接到核心电压稳压器的使能引脚。
-
将标记为 12V 的测试点连接到 UT PCB 上附近的 12V 电源。
-
将最右侧的跳线焊盘(按钮下方)连接到 eMMC D0 测试点。
- 我们必须这样做,因为一次固件更新禁用了 UART 输出。
-
将标记为 1V8 的测试点连接到 UT PCB 上附近的 1.8V 电源(eMMC 旁边有一个连接至 1V8 的去耦电容)。
现在您应该一切就绪,可以开始进行 glitch 攻击了,祝好运!
Python 文件夹 中包含一个示例,演示了如何开始使用该 modchip 进行实验。

已知问题和限制
- 该 modchip 设计于 SpaceX 引入烧断熔丝以禁用所有 UART 输出的固件更新之前。该 modchip 最初设计为在 UART 输出上触发,但可以改为在 eMMC D0 信号上触发。在较新的版本中,最好既能读取 UART 输出,也能在 eMMC D0 数据上触发。UART 可在 BL2 中重新启用,并可为验证 glitch 是否成功提供一种简便的方法。
- 该 modchip 是针对圆形用户终端设计的,同样的攻击应适用于方形用户终端,但您需要设计一块新的 PCB。
- 有一部分半孔的位置不对。按原样使用该设计时请小心,并遵循相应的安装说明。
- glitch 成功后将 modchip 从控制 PC 上拔下可能会导致碟形天线重启。这很可能是由于 MCP1405 MOSFET 驱动器的
IN A 引脚上缺少下拉电阻。
- 提供的固件需要一个外部控制 PC 来编排故障注入尝试。使用(当前未使用的)第二个 RP2040 Cortex-M0 内核将其变为独立的 modchip 应该相当简单。
常见问题
- 我们不销售成品 modchip
- 我们不提供(修补过的)Starlink 用户终端固件
- 我们不提供确切的 glitch 参数。演示幻灯片中包含各种提示,具体参数将取决于您如何修补固件。