By Omar Yang (Senior Threat Researcher, Automotive)
Pwn2Own Vancouver 2024で、Synacktivのセキュリティリサーチャーは、悪意のある攻撃者が任意のコードを実行できる可能性のある脆弱性をTesla(テスラ)Model 3に発見しました。
攻撃の連鎖は、タイヤ空気圧監視システム (TPMS) から始まります。セットアップ プロセスの脆弱性により、境界外への書き込みにつながる可能性があります。この欠陥により、攻撃者はさまざまな車両機能を担う重要な電子制御ユニット (ECU) を乗っ取ることができます。さらに問題なのは、タイヤの摩耗を最適化するための TPMS機能により、ユーザーの介入なしにこの脆弱性を悪用できることです。つまり、ゼロクリック攻撃です。
TeslaのTPMSを理解する
TeslaのTPMSは、タイヤの空気圧の異常を検知して路上の安全性を高めるように設計されています。このシステムは、タイヤに埋め込まれたセンサーを使用して、リアルタイムのデータをワイヤレスで送信します。古いTesla ModelはワイヤレスにSub-GHzの無線周波数を使用していましたが、新しい世代では通信を改善するためにBluetooth対応センサーを採用しています。
受信側では、Teslaは車両コントローラー セカンダリ(VCSEC)ECUと呼ばれるモジュールを採用しています。このシステムオンチップ(SoC)は、TPMSデータを管理するだけでなく、モバイルアプリやNFCからの通信も処理します。VCSECは、ドアロックや車両の起動などの重要な機能を制御します。また、車両のバスとインターフェースして、さまざまなモジュール間でメッセージを中継します。
安全な通信を確立するには、VCSECとTPMSセンサーがデータを交換する前にハンドシェイクが必要です。このプロセスには、センサーの正当性を確認するための証明書ベースの認証が含まれます。皮肉なことに、セキュリティを強化することを目的としたこのメカニズム自体に脆弱性が発見されました。
TPMSセンサー登録時の脆弱性
通信のセットアップ中に、VCSECはTPMSにX.509証明書を要求します。交換されるデータには、データ構造の開始点を指定する startIndex フィールドが含まれます。本来であれば、 startIndex は 0 から始まる符号なし整数です。しかし、Synacktivのリサーチャーは、システムがこのフィールドを適切に検証していないことを発見しました。負の値を入力することで、リサーチャーは脆弱性を悪用して境界外書き込みをトリガーし、最終的に任意のコード実行を可能にしました。
この脆弱性のもう一つの要因は、システム内に適切なメモリ保護機能がないことです。コンピュータやスマートフォンで一般的に使用されているアドレス空間配置のランダム化(ASLR)やメモリ管理/保護ユニット(MMU/MPU)などの最新の保護メカニズムが実装されていません。これらのメカニズムがあれば、攻撃が成功する可能性を大幅に低減させることができたでしょう。
TPMS自動学習によるゼロクリックハック
Teslaの車両では、デュアルモーターモデルでは後輪のみがモーターで駆動されるため、前輪と後輪のタイヤの摩耗速度が異なります。前輪と後輪のタイヤのサイズは同じですが、Teslaでは、均一な摩耗を促し、タイヤの寿命を延ばすために、定期的なタイヤローテーションを推奨しています。
タイヤローテーションに呼応して、TPMSセンサーは再設定することなく、元は後輪だったタイヤの測定値を前輪の測定値として送信します。さらに、新しいセンサーが取り付けられた場合、TPMSは測定値の送信に失敗する可能性がありますが、これに対処するため、Teslaは「自動学習 (auto learn)」と呼ばれる機能を実装しています。この機能は、自動車が90秒以上走行し、時速25キロ以上の速度に達すると、TPMSセンサーを自動的に検出するというものです。
しかし、この自動学習メカニズムは、TPMSセンサー登録プロセスにおける前述の脆弱性を攻撃者が悪用する経路となってしまいます。Tesla車両が自動学習の基準を満たすと、VCSECとTPMSが再同期を試み、悪意のある行為者がVCSECまたはTPMSセンサーのいずれかを偽装する機会が生まれます。攻撃者は開発ボードを使用してVCSECを模倣し、TPMSセンサーが正規のVCSECと通信できないようにすることができます。また、攻撃者は同時に別の開発ボードを使用してTPMSセンサーを偽装し、脆弱性を悪用することも可能です。
TPMSセンサーの登録プロセスにおける脆弱性と自動学習機能を組み合わせることで、攻撃者はユーザーの操作を一切必要とせずにリモートコード実行(RCE)を達成することができます。
セキュリティへの影響
VCSECモジュールは、ユーザーにエンジン始動許可を与えたり、車両のCAN(Controller Area Network)バスとのインターフェースをしたりするなど、車両へのアクセス管理に重要な役割を果たしています。TPMSの脆弱性が悪用された場合、攻撃者は悪意のあるCANメッセージを注入または削除することが可能となり、車両の盗難や車両の重要な機能に対する不正な制御につながる可能性があります。
この脆弱性は特定のフィールドにおける検証の不足に起因するものですが、自動的に攻撃が成功するわけではありません。最新のメモリ保護メカニズムが実装されていれば、攻撃の連鎖を遮断することができたかもしれません。しかし、TeslaのVCSECモジュールは、読み取り可能(R)、書き込み可能(W)、実行可能(X)とマークされたメモリ構成を使用しています。これは、攻撃を容易にする構成です。通常、メモリセクションは、書き込み可能かつ実行可能にならないように設計されています。例えば、コードセクションは読み取り可能(R)および実行可能(RX)とマークされていますが、データセクションは読み取り可能(R)および書き込み可能(RW)です。メモリセクションが書き込み可能かつ実行可能である場合、攻撃者は悪意のあるコードを注入し実行することができ、重要なセキュリティ対策を回避することができます。
Pwn2Own Vancouver の主催者であり、VicOneのPwn2Own Automotiveの共同ホストで、脆弱性の発見と開示のパートナーでもある Zero Day Initiative (ZDI) は、このバグをTeslaに速やかに報告しました。Hexacon 2024でのプレゼンテーションで、Synacktivのリサーチャーは、Teslaが迅速に対応し、脆弱性を修正するファームウェアのアップデートをリリースしたこと、また、同様の問題がないか、他の変数や関連システムをチェックしたことを確認しました。
責任ある情報開示の時間軸に関する背景
Pwn2OwnイベントでZDIが、或るチームがデバイスやソフトウェアを「ハックに成功」または「pwned」と発表してから、そのハックに使用されたテクニックが公表されるまで、しばしば遅延があることに疑問を持たれた方も多いでしょう。この遅延は、ゼロデイ脆弱性をより責任を持って管理するために設計された調整型脆弱性開示(CVD)プロセスの一部です。
1990年代には、脆弱性を積極的に探し出すハッカーはごくわずかであり、多くのベンダーは脆弱性への対処に備えていませんでした。ホワイトハッカーもベンダーも、「ハッカーは利益と引き換えに脆弱性を報告しているのではないか?」や「脆弱性は修正されるのか、それとも報告は時間の無駄になるのか?」といった懸念を抱えていました。そして、次のような譲歩案が採用されることになりました。まずハッカーが脆弱性をベンダーに報告し、その後、ベンダーがパッチをリリースし、ハッカーの発見を公に認めるというものです。
ZDIの情報開示ポリシーに基づき、提出された脆弱性は、パッチが利用可能になった時点で、またはベンダーが対応しない場合は一定期間経過後に開示されます。このアプローチにより、問題が解決されるか、または修正方法が知られていない脅威が公に認知されることで、脆弱性が悪用されるリスクが回避または抑止されます。これが、脆弱性が最初に提出されてから詳細が公表されるまでの時間差を説明するものです。