
Starlink端末のブラックボックスセキュリティ評価用の電圧フォールトインジェクションmodchip。ブートローダーの署名検証をバイパスして任意のファームウェアを実行する。
このリポジトリは、「Glitched on Earth by Humans: A Black-Box Security Evaluation of the SpaceX Starlink User Terminal」という講演に付随するものです。 スライド資料はこちらから入手できます。講演の録画は近日公開予定です。
この講演では、電圧フォールトインジェクションを行うカスタムModchipを使用して、Starlinkユーザーターミナル上で任意のコードを実行した方法について説明します。 このModchipは、System-on-Chip (SoC) のROMブートローダー (BL1) 実行中に署名検証をバイパスするために使用できます。これにより、BL2以降でSoC上で任意のコードを実行でき、Starlinkユーザーターミナルとシステムのネットワーク側をさらに調査することが可能になります。 私たちは他の研究者が私たちの研究を基に作業を進められるよう、Modchipの設計を公開します。
提供されたModchip設計はテスト済みで使用していますが、このModchipを使用するとユーザーターミナルに恒久的な損傷を与える可能性があります。 同様に、ユーザーターミナルを分解すると恒久的な損傷が生じる可能性があり、保証が無効になる可能性が高いです。
ModchipはeMMC D0ラインでトリガーし、MOSFETドライバー用に(プログラム可能な)遅延とオフセットを持つ2つのパルスを生成するRP2040マイクロコントローラーによって制御されます。 これらのパルスの1つはグリッチMOSFETを制御し、このMOSFETのゲートがハイに駆動されると、SoCコア電源がグランドに短絡されます。RP2040によって生成される2番目のパルスは、2つのキャパシタバンクを有効/無効にできる2つのMOSFETを制御します。これらのキャパシタはUTが完全にブートするために必要ですが、電圧グリッチ中にキャパシタバンクを有効にすると、目的のフォールトを得られなくなるため、有効にすることはできません。
自作Modchipのための回路図とガーバーデータはこちらで提供しています。


spacex_catson_boot.hファイルに記載されています。bootdelayパラメータを増やすこともできます。はんだ付けする前に、組み立てたModchipが動作することを確認してください。
赤い四角で囲まれたデカップリングコンデンサを取り外します。これらは通常、SoCコア電源を安定させるために使用されます。

組み立てたModchipをUT PCB上に位置合わせし、キャスタレーションホールを使ってはんだ付けします。コア電源とグランドの間を短絡させないように注意してください。
UT RSTとマークされたテストポイントを、コア電圧レギュレータのイネーブルピンに接続します。
12Vとマークされたテストポイントを、UT PCB上の近くの12V電源に接続します。
右端のジャンパーパッド(ボタンの下)をeMMC D0テストポイントに接続します。
1V8とマークされたテストポイントを、UT PCB上の近くの1.8V電源に接続します(eMMCの隣に1V8に接続されたデカップリングコンデンサがあります)。
これでグリッチを始める準備が整いました。頑張ってください! Pythonフォルダには、実験用にModchipの使用を開始する方法を示すサンプルが含まれています。

IN Aピンにプルダウン抵抗がないためです。