アプリを使ってマイカーをリモートコントロール。実に魅力的です。凍えるような寒い日でも、毛布にくるまったまま車のエンジンをかけておけば、家を出る頃には車内がいい具合に温まっているでしょう。燃えるような暑さの日なら、エンジンをかけてエアコンをつけておけばOK。車をどこに停めたか覚えておく必要もなし。モバイルアプリが停車位置のGPS座標を教えてくれます。
素晴らしいではありませんか。モバイルアプリで制御できる車種が増えているのも当然です。でも、安心して使えるのでしょうか?Kaspersky Labでは、こうしたアプリのセキュリティの実態を把握するため、2回に分けて調査を実施しました。
コネクテッドカー用アプリのセキュリティの調査
最初の調査は2016年末に実施されました。その結果は、2017年2月開催のRSA Conferenceにて「Mobile apps and stealing a connected car」(モバイルアプリとコネクテッドカーの窃盗)と題し、アンチウイルスアナリストのミハイル・クージン(Mikhail Kuzin)とヴィクトル・チェビシェフ(Victor Chebyshev)により発表されました(英語記事)。分析対象となったのは、ドアの解錠、エンジンの起動、地図上での自動車検索、ダッシュボードの計器類が示す値の表示など、コネクテッドカーをリモート制御する機能を備えたAndroidアプリです。
この2人のエキスパートは、大手自動車メーカーのモバイルアプリ9種類を分析し、その保護性能をテストしました。調査の目的は、これらのモバイルアプリが、悪意あるAndroidアプリを使った典型的な攻撃から保護されるかどうかを評価することでした。典型的な攻撃とは、デバイスのroot権限を得る(root化)、アプリのインターフェイスに偽のウィンドウを重ねて表示する、正規のコネクテッドカー用アプリに悪意あるコードを注入する、の3種類です。
まず、これらの攻撃がなぜ危険なのか理解しておきましょう。
考えられる攻撃経路
root化
標準的な動作モードでは、どのAndroidアプリもデータ(ログインやパスワードなどの重要な情報を含め)を隔離されたメモリ領域に保存していて、この領域に他のアプリがアクセスすることはできません。root化は、このセキュリティの仕組みを妨害します。rootアクセス権を手に入れた悪意あるアプリは、他のアプリが保存したデータにアクセスし、盗むことができます。
この仕組みを悪用するマルウェアは、何種類も存在します。最も一般的なAndroidマルウェアの約30%は、OSの脆弱性を利用してデバイスをroot化します。それだけでなく、Android利用者が自分でデバイスをroot化し、結果としてマルウェアの活動を助けていることも多々あります。root化したスマートフォンやタブレットをどうやって保護するべきか100%理解していない限り、root化はお勧めできません。
別のアプリのインターフェイスを重ねて表示
この不正行為の仕組みはシンプルです。マルウェアは、どのアプリが起動されるか常に監視していて、よく知っているアプリが起動されると、すかさずそのアプリのウィンドウ上に、よく似た(または瓜二つの)ウィンドウを重ねて表示します。一瞬の出来事なので、気付く暇もありません。
デバイスの利用者としては、問題のないアプリを普通に使っているつもりなので、偽のウィンドウに情報を入力してしまいます。こうしてマルウェアは、ログインIDやパスワード、クレジットカード番号など、ハッカーが望む情報を盗み取ります。
アプリのインターフェイスに別のアプリのインターフェイスを重ねて表示する仕組みは、モバイルバンキング型トロイの木馬に標準装備されています。しかし、「バンキング型」という言葉が、必ずしも当てはまらなくなっています。モバイルバンキング用アプリでデータを集めるだけでなく、他のタイプのアプリの偽ウィンドウを作成してクレジットカード番号その他の情報を入力させるようにもなってきました。
どういったアプリの偽ウィンドウが作られているのか、挙げていくときりがありません。各種決済システムや有名なメッセンジャー、航空券の購入やホテルの予約用のアプリ、Google Playストア(英語記事)やAndroid Pay、罰金支払い用のアプリなど、大変な数に上ります。近ごろは、このようなトロイの木馬の開発者は、タクシー配車アプリからも決済情報を盗むようになっています。
マルウェアの注入
ハッカーが正規のアプリを入手して仕組みを解明し、オリジナルの機能を残したまま悪意あるコードを注入し、Google Playなどを介して(特にGoogle AdSenseで悪意ある広告を使用して)拡散することもあります。
このような手口を封じるため、アプリを開発する場合は、アプリのリバースエンジニアリングや悪意あるコードの注入にできるだけ時間がかかるように、つまり採算がとれないように、アプリを設計する必要があります。アプリの強化に使えるテクニックは広く知られています。重要な利用者データを扱うアプリの開発では必ずこういったテクニックを使うのが理想ですが、残念ながら、必ずしもそうではないのが実情です。
主な脅威
悪意あるアプリは、前述の方法を使ってログインID、パスワード、PINコードのほか、自動車ごとに異なる車両登録番号(VIN)を盗み出すことができます。どれも、アプリの認証に必要な情報です。
これらの情報を手に入れてしまえば、あとは犯罪者自身のスマートフォンにコネクテッドカー用アプリをインストールするだけ。これで、車のドアロックを解除できますし(この機能はどのアプリにも備わっている)、エンジンをかけて(どのアプリでもというわけではないがこの機能を備えたアプリも多い)車を盗むこともできます。また、車の持ち主の行動を追跡することも可能です。
この脅威は理論上の話ではなく、現実となっています。闇世界のフォーラムには、コネクテッドカー用アプリの本物の利用者アカウント情報を売買する広告が、定期的に掲載されています。データは驚くほどの高値で取引され、多くの場合、盗まれたクレジットカード情報よりもずっと高額です。
サイバー犯罪者は「濡れ手で粟」の儲け話への反応が早いので、コネクテッドカー用アプリを攻撃するマルウェアが広まるのは時間の問題でしょう。
1回目の調査:コネクテッドカー用アプリ9種類のうち、マルウェアから保護されているアプリはゼロ
調査の話に戻りましょう。1回目の調査の結果が公表されたのは、先に述べたとおり2017年2月のことでした。この調査では、大手自動車メーカーが開発したコネクテッドカー用Androidアプリ9種類が調査対象となりましたが、前述の脅威から保護されているアプリは1つもないことが判明しました(英語記事)。
調査対象となった9種類のアプリは、いずれも、よくある攻撃に対して脆弱でした。
なお、脆弱性公表にあたっては、公表前に該当の自動車メーカーへ連絡して問題を報告しています。
2回目の調査:コネクテッドカー用アプリ13種類のうち、(一部の)マルウェアから保護されているアプリは1つ
物事の経過を観察するのは、いつも興味深いものです。クージンは、フランクフルトで9月に開催された国際モーターショー「IAA 2017」にて2回目の報告を行いました。
さらに4種類のアプリを調査対象に加え、合計13種類のアプリがテストされました。保護されていたのは新たに追加されたアプリの1つだけ、それも、3種類の攻撃のうちの1つに対してだけでした(このアプリは、スマートフォンがroot化されているのを検知すると動作しなくなります)。
それだけではありません。1回目から調査対象だった9種類のアプリは、2回目の調査でも、脆弱性を残したままでした。問題の報告から数ヶ月が経過しましたが、修正が行われていなかったのです。一部のアプリは、アップデートすらされていませんでした。
残念ながら自動車メーカーは、サイバーセキュリティを適切に実装するのに必要な経験がまだありません。
自動車メーカーだけではありません。同じ問題は、スマート電子機器やインターネット接続型の電子機器のメーカーにもあります。しかし自動車の場合、問題はさらに深刻で急を要します。ハッキングが数百万ドルもの損失を生じさせる可能性だけでなく、誰かの生命を危険に晒す可能性があるからです。
幸いなことに、サイバーセキュリティの専門知識は社外でも学ぶことができますし、同じ過ちを犯さなくても知識は得られます。Kaspersky Labでは、アプリをはじめとするデジタル分野の問題解決を支援するべく、いつでもご協力させていただきたいと考えております。
また、スマートフォンには信頼できるセキュリティ製品をインストールし、大切な情報を抜き取られることのないよう、マルウェアを検知・ブロックできる状態にしておくことをお勧めいたします。