By Jay Turla (Principal Security Researcher)
VicOneとBlock HarborのAutomotive CTF Japan(主催:経済産業省)/Automotive CTF2024決勝の設問を開発しているチームの一員として、私たちはPwn2Own Automotive 2024のターゲットから出題のヒントを得ようという事になりました。幸いにも、Pwn2Own Automotiveの共同主催者であり、脆弱性の発見と開示におけるパートナーであるZero Day Initiative (ZDI) が、電気自動車(EV)充電器と車載インフォテインメント(IVI)システムの両方を惜しみなく提供してくれました。自動車に焦点を当てたCTF(フラッグ獲得)競技向けの挑戦課題として、おそらく今までになかった興味を掻き立てるような難問になることを期待して、まずEV充電器、具体的にはEmporia Level 2 EV充電器に着目しました。
このブログ記事は、ハードウェアやデバッグインターフェースがどのように攻撃に悪用されるのか強調する目的で、敢えてハッカー視点で手順を追って書いてみることにしました。EV充電器をハードウェアハッカーが見たら何が見えるのでしょうか?
では、ハッキングを開始します。
分解とセットアップ
Emporia Level 2 EV充電器に電源を投入する前に、そのハードウェアを検査するため、まずは通常の分解を行います。なお、このEV充電器はPwn2Own Automotive 2024で、リサーチャーのTobias ScharnowskiとFelix Buchmannによって、Wi-Fiスタックのバッファオーバーフローを使って攻略されています。
図1. Emporia Level 2 EV充電器の内部
Emporia EV充電器には、入力用と出力用の電源ケーブルがすでに接続されています。この機器への充電プロセスについては、この文書の後半で説明します。
図2. Emporia Level 2 EV充電器の入力および出力用電源コネクタ
ボード上にESP32モジュールを発見したので、さらにハードウェアを詳しく調べました。ZDIセキュリティ リサーチャーのJonathan AnderssonがCanSecWest 2024で行ったプレゼンテーション「Electric Vehicle Chargers: Survey of Devices from Pwn2Own Automotive 2024」を参照し、すぐに、重要なシリアルまたはデバッグインターフェースである露出したUART(ユーアート/汎用非同期送受信機)を特定しました。
図3. シリアルインターフェースが露出したESP32マイクロコントローラ
Emporia EV充電器を起動
前述の通り、Emporia EV充電器には、電源入力用および充電出力用のケーブルがユニットに付属しています。作業を進めるために、車両内に差し込むために通常使用されるSAE J1772コネクタ付きの送電ケーブルを取り外しました。次に、電源入力ケーブルを3つのピンを持つケーブルに交換し、昇圧/降圧トランスに接続できるようにしました。
図4. 電源入力ケーブルを3ピンケーブルに交換する
図5. Emporia Level 2 EV充電器を起動する
幸いにも、何の問題もなく起動してくれて、Emporia EV充電器のベンチトップ実験とセキュリティリサーチを行う準備が整いました。
露出したシリアルインターフェースのリスク
Emporia EV充電器の基板にむき出しのシリアル プログラミング インターフェースがあることで、攻撃者がデバイスを改ざんしたり、ファームウェアをダンプしたり、機密情報を抽出したり、シリアルインターフェース経由でルートアクセス権を取得したり、さらなる攻撃を実行するためにデバイスを改変する可能性があり、悪意のある目的でデバイスを悪用する可能性もあります。
Flipper ZeroなどのUARTブリッジを露出したシリアルインターフェースに接続すると、EV充電器のデバッグログにアクセスできるようになります。ただし、我々の経験ではファームウェアのダンプやフラッシュに問題が発生するため、開発モードでのFlipper Zeroの使用はお勧めしません。UART-to-USBコンバータの方が信頼性の高いオプションとなります。
図6. UARTブリッジとしてFlipper Zeroを使用
実証実験として我々は元のファームウェアとは異なるESP32 Wi-Fi侵入ツールを成功裏に書き込むことができました。というのもEV充電器の基板上のESP32モジュールはファームウェアのチェックを行うようになっていなかったからです。つまり、ハッカーはesptoolコマンドラインを使用してファームウェアをダンプまたはアップロードすることが簡単にできるということです。
図7. ESP32 Wi-Fi 侵入ツールの書き込みに成功
EV充電器を悪用した攻撃を実行する
多機能かつ安価なシステムオンチップ(SoC)マイクロコントローラであるESP32は、ハッカー、ホビイスト、侵入テスト担当者などによって、さまざまなプロジェクトや概念実証に広く使用されています。
- Wi-Fi ディオーソ攻撃
- 不正なアクセスポイントの設置
- iOSクラッシュペイロードを含むBluetooth攻撃とスパム
- 分散型サービス拒否(DDoS)攻撃を実行可能なIoTボットネットの構築
- その他のWi-Fiの脆弱性利用、例えば、ハンドシェイクからペアワイズマスターキー識別子(PMKID)をキャプチャするなど
これらの活動に関連する多くのオープンソースプロジェクトがGitHubで入手できます。Wi-Fi侵入テストで使用したESP32 Wi-Fi Penetration Tool(侵入ツール)の他にも、ESP32 Wifi Marauder(略奪ツール)も存在します。
この実験では、ESP32 Wi-Fi 侵入ツールを書き込んだ後、私たちは隔離した検証用ネットワーク内でWi-Fi攻撃をシミュレートすることができました。
図8. 侵入ツールに書き換え後、ESP32にWi-Fi経由で接続すると、図のようなインターフェースが表示される。
図9. Emporia EV充電器のESP32マイクロコントローラが攻撃者側のツールになった事を示しています
ハッカーの視点から見ると、シリアルインターフェースが露出している場合、その可能性は無限大であることがわかります。
まとめ
Pwn2Own Automotive 2024でfuzzware.ioが発見したバグはスタックベースのバッファオーバーフローであり、おそらくハードウェアの問題ではないと思われますが、シリアルインターフェースが露出していることによる、より広範なセキュリティへの懸念が薄れるわけではありません。ここで取り上げた脆弱性は、OWASP Internet of Things (IoT) Top 10 2018の「I10 Lack of Physical Hardening(物理的な堅牢化の欠如)」に該当します。デバッグポートを見つけ、ファームウェアを改ざんするのは簡単でした。
今度は、攻撃者が同じハードウェアにアクセスし、ファームウェアをダンプして、ボードに悪意のあるコードを埋め込んだと想像してみてください。これにより、さまざまな攻撃を実行可能なIoTボットネットが作成される可能性があります。このことは、重大な問題を提起しています。ハードウェアの保護は不可欠ですが、それだけでは十分ではありません。
緩和策のベストプラクティスには、デバッグポートの無効化と隔離、署名ベースのファームウェアバリデーションの実装、改ざん防止策の採用、ストレージシステムの暗号化などがあります。これらの対策を行わなくてもセキュリティが保たれると考えるのは楽観的過ぎるでしょう。
ハッカーがデバイスに物理的に何らかの方法で侵入した場合、ファームウェアを分析し、書き換えることで、多くの防御策を回避することができてしまいます。そのため、ハードウェアのインターフェースを保護するだけでなく、ファームウェアの完全性を確保し、不正なアクセスや変更を防止するための強固な対策を実施することが重要となります。