日産リーフのクラウドベースのアプリにセキュリティの脆弱性

日産リーフはガソリンをまったく使わずに 100% 電気で動く自動車です。充電して使用する必要があり、バッテリーがなくなると他の燃料でクルマを走らせることはできません。

電気自動車は、ガソリン車やディーゼル車と比較して出荷台数が少なく、ガソリンスタンドの数と比較すると、充電ステーションの数も非常に少なくなっています。

そのため、最後に充電してからどれだけ遠くまでドライブしたか、バッテリーの残量がどのぐらいか、運転の効率性はどうなっているか、効率的に走行するためにどのルートを通るかなどについて、心配しなければなりません。

もちろん、このような心配を解消するためのアプリが提供されています。

このアプリは、クラウドベースのサービスであり、リーフからデータを収集し、オンラインに接続するとこのアプリと共有します。また、アプリからはさまざまなデータや指示を受け取ります。

このアプリは、インターネットを介して直接リーフと接続し、やりとりすることはないのですが、アプリとリーフは、ブローカーであるクラウドサービスと通信します。

つまり、ユーザーの最新の運転状況を監視するアプリの機能は、アプリとリーフが同時にオンラインでなくても動作します(多くの IoT (モノのインターネット) サービスはこのような仕組みを採用しています)。

リーフのオンラインサービス

リーフのこのオンラインサービスはカーウイングスと呼ばれます (このアプリのコンポーネントは NissanConnect EV へのリブランディングが進められています)。

日産によると、このアプリは以下のような機能を提供しています。

  1. 現在の充電レベルをチェックする。
  2. 充電を開始する。
  3. 充電完了までの時間をチェックする。
  4. エアコンをオンまたはオフにする。
  5. エアコンの自動開始をスケジュールする
  6. ドライブできる推定距離をチェックする

運転した時間や距離などの基本的なドライブ履歴も、リーフからアップロードされ、アプリから取得できます。

この情報は、ユーザーの住所、パスポート番号、また誕生日などと比べるとそれほど重要ではありませんが、何かに悪用される恐れがあります。

同じように、ドアのロックを解除したりエンジンをオフにしたりするわけではなく、エアコンを操作するだけではありますが、クルマにコマンドを送信する場合には、パスワードのような何らかのログインセキュリティで保護される必要があります。

リーフのアプリには認証の仕組みがまったく実装されておらず、誰でもこのクラウドサービスを使用して、データを読み取ったり、ユーザーのリーフにコマンドを送信したりできる問題を世界各国の多くの研究者が見つけています

カーウィングサーバーに Web からリクエストを送信するときに使用する必要があるユーザー名のようなものが存在します。

残念なことに、このユーザー名のように使用されているのが VIN (車両識別番号) です。

この VIN は変更できない ID であり、クルマのさまざまな場所に印字されています。フロントダッシュボードにある場合には、フロントガラス越しに読み取ることもできます。

多くの国では、見つけやすいように登録ステッカーに印刷されている場合もあり、クルマの外から簡単に読み取ることができるように 2D バーコードに VIN が含まれている場合もあります。

ここで問題になっているのは認証です。

VIN を認証シークレットとして使用することは、スマートフォンやラップトップの MAC アドレス (ネットワークカードの ID 番号) を認証に使用しているようなものです。これらの ID は秘密の情報ではなく、一意ではないこともあります。

対策

  • Web の開発者の方は、個人情報を扱ったりデバイスを管理したりするクラウドアプリを開発する場合には、必ず認証の仕組みを取り入れてください
  • サービスとユーザー間で共有される認証シークレットを探している場合には、サードパーティによって割り当てられている正式な番号は、シークレットとは見なされないことに注意してください
  • リーフのオーナーの方は、日産がパッチを公開し、自分のクルマのデータがアップロードされ第三者に読み取られることがなくなるまでは、CARWINGS サービスの利用を停止することも検討してください