JSSEC技術部会 スマートフォン・サイバー攻撃対策ガイド
第9回 サイドローディングの危険性
JSSEC技術部会マルウェア対策WG
宮崎力(株式会社ラック)
昨今、サイドローディングの危険性についての議論が改めて活発化しています。
ご存知の通り、スマートフォンのOSは、AppleのiOSとGoogleがリードするAndroidがシェアのほぼ全てを占めており、この状況は世界的にも変わりありません。
アプリのインストールは、iOSはApp Store経由で、またAndroidはGoogle Playを経由して行います。ただし、Androidでは設定次第で、Google Playを介さないインストール、いわゆるサイドローディングによるインストールが可能になっています。
いずれにしても、両者ともサイドローディングによるアプリのインストールを推奨していないことが伺えます。今回は、サイドローディングの是非について、改めて考察していきたいと思います。
攻撃の概要
公式Store以外からのアプリのインストールを認める場合、どのような危険性が考えられるでしょうか?まず思いつくのが、正規のアプリを装った悪意あるアプリの横行、そして海賊版アプリではないでしょうか?
App Storeでアプリをリリースするには、Appleが実施する審査を通過しなくてはいけません。この審査はApp Store Reviewガイドラインを基準に、人手により行われています。また、Google Playも同様で、この場合はGoogleデベロッパーポリシーを基準に審査が行われています。
審査では、アプリが有害なコンテンツを含まないか、知的財産の侵害はないかなどのコンプライアンス的な観点、そして、個人データを悪用または不正使用する意図がないかなど、利用者のプライバシー保護の観点をはじめとした審査が行われています。
サイドローディングを認める場合、いかなるアプリも無審査で配信することが可能となり、利用者の安全性を担保することは極めて難しくなります。また、有料アプリの海賊版が出回ることも予想され、開発者のイノベーションを削ぐことにも繋がるでしょう。
スマートフォンのシェアのほぼ全てを占めるAppleとGoogle、この2つの企業のサイドローディングに対する姿勢から、サイドローディングの是非について考察を進めていきましょう。
技術解説
設定次第ではサイドローディングが可能となっているAndroidに比べ、iOSではApp Storeを経由しないアプリのインストールは不可となっています。iTunesの古いバージョンではipaファイルをダウロードして手動でインストールすることも可能でしたが、現在はその方法も不可となっています。
このようなAppleの姿勢に対しては批判もあります。特に2021年頃から欧米のサードパーティを中心に、独占禁止法上の観点からの批判が活発になりました。
App Storeで有料アプリを購入した場合、購入価格の30%がAppleに支払われる仕組になっています。そこから差し引かれた利益が開発者の収益となるため、開発者ははじめから差し引き額を考慮した価格設定にせざるをえません。Apple純正アプリと直接競合するアプリを販売している開発者にしてみると特に不公平であり、反競争的であるという批判です。
このような批判に対しAppleはスモールビジネスプログラムを発表しました。これは、年間収益が100万ドル以内の小規模事業者に対しApp Storeの手数料率を15%に引き下げるというものです。限定的ではあるものの、実際には98%の開発者に適用されるため、上述の反競争的であるという批判に対する、直接的な回答と言えるかと思います。
また、批判の中には、App Store がiOSアプリの「市場」を独占している状態を指し、サイドローディングを許容すべきという主張もあります。実際App Storeにおける販売と流通はAppleが100%独占しており、開発者にはその他の方法でアプリを販売する方法はありません。
この主張に対してもAppleは、利用者が深刻なセキュリティリスクに晒される危険性をかねてより繰り返し述べており、「Building a Trusted Ecosystem for Millions of Apps」と題したレポートとしてまとめています。
副題を「- A threat analysis of sideloading -」(サイドローディングの脅威)とするこのレポートの中では、サイドローディングが可能なAndroidのマルウェアはiPhoneの15〜47倍であることなどを挙げて、App Storeの安全性が強調されています。
サイドローディングを許可した場合、App Storeの外部でのみ配布されるアプリも出てくることでしょう。それを望む利用者がいる一方、セキュリティ上の理由などからサイドローディングを望まない利用者に対しても、本意ではないインストール方法を強いることになり、結果的にユーザビリティを棄損することになり得ます。
また、攻撃者にとっては、正規のアプリを装って悪意ある偽のアプリを利用者にインストールさせることも容易となります。レポートでは、各国の郵便事業のアプリを装った偽のアプリが一例として挙げられており、その中には日本郵便の偽アプリも含まれています。
対策
独占的であるというサードパーティからの批判に対するAppleの回答はいずれも明瞭で合理的なものと思われます。プラットフォームを提供する側としての責務に対する姿勢が垣間見えてきますし、おそらくそれは、幅広い年齢層であるスマートフォンの利用者に配慮してのものと言えるでしょう。
App Storeで公開される前の審査によって、アプリのリリース時期が不明瞭になることを懸念する開発者もいるかもしれません。
この懸念についても同社は改善策を進めており、審査に要する時間は、50%が24時間以内、90%が48時間以内に完了すると公式の説明にあります。ただし、リジェクトされた場合は修正に要する時間が発生するため、審査を通過するには1週間はかかると見るのが現実的です。
しかし、この審査期間でアプリの安全性が担保されることを考えれば、十分に短期間であるといえるのではないでしょうか。
一方のAndroidでは、設定次第ではGoogle Play以外からアプリをインストールすることが可能となっています。
Google PlayではBouncerと呼ばれるマルウェア検知機構が運用されており、安全性を向上させる取り組みが行われていますが、それを介さないアプリのインストールについても、利用者責務においては認めるというのは、Appleとは対照的と言えるかもしれません。
Google Play 以外の配布経路としては、ECサイトが運営するアプリストアや、開発者による直接配布などがあります。
柔軟な選択肢と考えられる一方で、誰もがアプリを作成でき、あらゆる経路で配布が可能な状態は、悪意ある攻撃者にとっては絶好の活動の場にもなり得ます。
利用者責務においてインストールしたアプリであっても、それが悪意あるアプリであった場合、自分の情報だけではなく、端末に保存された友人の連絡先や写真が漏洩してしまう危険も考えられます。このような事態になった場合、個人レベルで責任を負えるものではありません。
加えて、Google Playでは、バックグランドで位置情報を取得するAPIやSMSを送信するAPIなどを利用する場合には、厳格な利用条件を定めており、利用条件に合致しない場合は審査には合格させないという対策を行っていますが、Google Play以外の配布経路の場合は、このような制限は適用されず、本来であれば利用すべきでないAPIを使っているアプリをも配布可能になっています。最終的に、このようなAPIは利用者の承諾をもって利用可能にはなりますが、アプリ利用時の許諾について、多くの利用者は十分危険性を理解して同意しているとは思われず、結果として問題が発生した場合に、個人の責任とすることは無理があると考えます。
したがって、できることなら、公式のストアのみを使用することが望ましいと言えるでしょう。やむを得ずGoogle Play以外からアプリをダウンロードしてインストールする必要がある場合、利用者自身でアプリのセキュリティチェックを行うことも可能です。
ここではAndroidの純正機能であるPlayプロテクトを利用する方法を紹介します。
Google Playのアプリを起動し、アカウントアイコンをタップすると、「Playプロテクト」のメニューが確認できます。
「Playプロテクト」をタップすると以下のような画面が表示されます。真ん中に表示されている「スキャン」ボタンをタップすると、スマートフォンにインストールされているアプリをチェックし、Google Playストア以外から入手したアプリも含めて、有害性のチェックを行います。
このときGoogleのデベロッパーポリシーやソフトウェアポリシーに違反するアプリが検出された場合は、通知や警告が表示されます。Playプロテクトの機能はデフォルトで有効になっていますが、リリース前のアプリを検証するテスター向けに、機能を無効にすることも可能です。ただし、一般的な用途においてはデフォルトのまま常に有効にしておくことをお勧めします。
アプリの有害性をチェックするアプリはサードパーティのものもあります。ここでは、VirusTotal Mobileを紹介します。
VirusTotalとはファイルやウェブサイトのマルウェア検査を行うウェブサイトであり、マルウェアの表層解析においては頻繁に参照されるサイトです。VirusTotal Mobileはこのアプリ版という位置づけで、スマートフォンにインストールされたアプリをスキャンし、各アプリごとに検出された脆弱性をカウントし、スコア付けを行ってくれます。
カウントは、複数のセキュリティベンダーのうちいくつのベンダーがマルウェア判定するかによって行われ、ベンダー内のDBは日々更新されています。ただし、未知のマルウェアに関しては、そもそもDBに情報が登録されていないため、たとえそれが悪意あるアプリであっても、全くカウントされないことも考えられます。
過信は禁物ですが、やむを得ずGoogle Play以外からアプリをダウンロードしインストールする必要がある場合においては、自身で出来るセキュリティチェックの一つとして、活用してみてはいかがでしょうか。