「OS XとiOSのマルウェア新時代」を懸念する報道があるにもかかわらず、AppleのiOSとOS X向けセキュリティシステムは、AndroidやWindowsを含むオープンプラットフォームに蔓延するマルウェアからユーザーを保護するという意図通りに機能しています。Appleユーザーが実際にどれほど安全なのか、そして発生する脅威からユーザーを守る方法について、現実的で誇張のない事実をご紹介します。
MacとiOSユーザーは、iOSデバイスのジェイルブレイク、Mac OS XのGateKeeperの保護機能の無効化、あるいはiOSが「信頼できないアプリ開発元」と判断するアプリのインストールを「信頼」するといったセキュリティシステムを回避しない限り、デフォルトでウイルスやマルウェアから保護されています。ここでは、これらのシステムの仕組みと、ユーザーが騙されてセキュリティをオフにしてしまうことを避ける方法について説明します。
Appleのセキュリティシステムを破らないMacとiOSのユーザーは危険にさらされない
パロアルトネットワークスが詳細を説明した最近のトロイの木馬攻撃「WireLurker」は、主要なセキュリティ機能が無効になっている Mac でも、Apple によって数時間以内にあらゆる形式でブロックされました。
アップルは先週の声明で、「中国のユーザーを対象としたダウンロードサイトから悪質なソフトウェアが入手できることを認識しており、特定されたアプリをブロックして起動を防止した」と述べた。
Apple はこれまで、XProtect を使用して、ユーザーがインストールした Mac マルウェア (昨年ブロックされたロシアの Yontoo のような「トロイの木馬」) や、深刻なセキュリティ上の脆弱性を持つソフトウェア コンポーネント (Oracle Java など) をリモートで無効にし、管理不能なセキュリティ問題に発展する前に問題を未然に防いできた。
XProtectは非常に効果的であるため、Macで発生した直近の重大なマルウェア問題(Flashback)は、Adobe Flash Playerを装ったトロイの木馬で、XProtectを無効にすることを目的としていました(ただし、マルウェア自体には実際には無効でした)。WireLurkerとMasque Attackはウイルス性がなく、ユーザーが意図的にセキュリティを無効にし、iOSとMacに搭載されているAppleの信頼検証システムをバイパスするアプリを手動でインストールしない限り、ユーザーに感染することはありません。
WireLurkerが悪用した脆弱性ベクトルの一つを共有する関連エクスプロイトであるMasque Attackも、同様に、不明なソースからのソフトウェアのインストール要求をユーザーに「信頼」させる必要があります。Appleは、この手順を非常に簡単にしました。幸いなことに、信頼できない開発者からのアプリをうっかり信頼してしまったユーザーは、iOSプロビジョニングプロファイルを確認し、既に承認した自己署名証明書を無効にすることができます。
WireLurker と Masque Attack はウイルス性がなく、ユーザーが意図的にセキュリティを無効にし、iOS と Mac に組み込まれている Apple の信頼検証システムを回避してアプリを手動でインストールしない限り、ユーザーに感染することはありません。
無知で怖がる必要はない
しかし、センセーショナルなブログが、その安全性についてユーザーを混乱させ続けるのを止めることはできていない。BGRに寄稿したクリス・スミス氏は、中国製のマルウェアの小規模な配布は「恐怖を感じるはずだ」と読者を説得しようと何段落も費やした。しかし、特定されたマルウェアは中国で数ヶ月前から流通していたものの、ジェイルブレイクされたデバイスの広大なオープンワールドの外には、実際のマルウェアのペイロードを配布していなかった。
MacとiOSユーザーは「恐れる」必要はありませんが、Appleのセキュリティシステムがどのように機能するかを大まかに理解し、騙されてマルウェアをインストールしないよう注意する必要があります。AppleはiOSのセキュリティをこれまで以上に容易に回避できるようにしましたが、それでもユーザーからの明示的な「信頼」の承認は依然として必要であるため、この問題はますます複雑になっています。
皮肉なことに、わずか 2 年前、電子フロンティア財団は、iOS と OS X のデフォルトでオンになっているセキュリティを「Apple のクリスタル プリズン」や「手の込んだミスリード」と非難し、同社に対して「設定メニューにアクセスし、クリスタル プリズンの門を開けて脱出するための、シンプルで文書化された、信頼できる方法」を提供するよう要求していました。
WireLurker、Masque Attackはユーザーに「クリスタル牢獄の門を開けて立ち去る」ことを要求
WireLurkerの特徴は、まずMacユーザーを騙してマルウェアをインストールさせようとする点にあります。ユーザーがMacのセキュリティを無効にし、WireLurkerを搭載したサードパーティ製のMacアプリを手動でインストールすると、このアプリはUSB接続されたジェイルブレイク済みのiOSデバイスに悪意のあるコードをインストールしようとします。あるいは、企業向けアプリ導入ツールを使用して、ジェイルブレイクされていないiOSデバイスにマルウェアをコピーしようとします。これはMasque Attackと同じ手法です。
WireLurkerは現時点では真の脅威ではありません。AppleはXProtectを使用してMac上での実行を直ちにブロックし、Macから接続されたiOSデバイスへのWireLurkerの移動を可能にしていた企業認証情報を無効化したためです。Appleのセキュリティ対策は意図したとおりに機能していますが、企業ユーザーがApp Store外で独自のカスタムアプリを開発・インストールできるようにAppleが構築したメカニズムを利用して、ユーザーがソフトウェアをインストールしてしまう可能性があります。
Apple の OS X および iOS のセキュリティ システムとその仕組みの概要を説明します。
AppleのMac XProtectの仕組み
AppleのOS XのXProtectサブシステムは、悪意のあるソフトウェアが発見されてから数時間以内に、既知のマルウェア定義のブラックリストをMacユーザーに展開するように設定されています。Macは毎日新しいマルウェア定義を自動的にチェックし、Appleが特定した新しい脅威を即座にブロックし始めます。
XProtectは非常にシンプルなウイルス対策スキャナーのように機能します。Macに必要なのはこれだけです。Appleは悪意のあるコードがそもそもインストールされるのを防ぐための二次システムを備えているからです。これらの対策は、ユーザーが無効にしない限り、効果が実証されています。
AppleのXProtectシステムは、5年前の2009年にOS X 10.6 Snow Leopard向けに初めて導入され、常時稼働しています。Windows向けに設計されたより複雑なウイルス対策スキャンツールとは異なり、Mac向けのXProtectシステムは、システム上のすべてのファイルやメールを常にスキャンして不正なコードを探す必要がないため、メモリやCPUリソースを大量に消費しません。
XProtect はそうする必要はありません。Android や Windows とは異なり、Mac プラットフォームはウイルスやスパイウェアの容赦ない攻撃にさらされていません。Mac(または iOS)を狙った稀な新しいエクスプロイトが発見された場合、それは大きなニュースとして扱われます。こうした攻撃は稀なだけでなく、Mac や iOS デバイスに組み込まれた一連のセキュリティ最優先の対策により、防止と修正が非常に容易です。
AppleはiOSのセキュリティを段階的に強化し、iOSで先駆的に導入されたセキュリティ機能をOS X Macプラットフォームに導入しました。これにより、実行可能なアプリ、アクセスできるデータ、そして取得できる権限を制限するバリアが導入されました。これらの保護対策により、Appleユーザーはマルウェア、スパイウェア、アドウェアの問題に巻き込まれるのを避けるために、コンピュータサイエンスの専門家である必要も、専門家を雇う必要もありません。
iOSアプリ署名とOS X GateKeeperの仕組み
XProtectはMacユーザーが手動でインストールしたマルウェアを無効化しますが、GateKeeperはユーザーが安全でないソースからアプリをインストールすることを最初から阻止します。2012年にOS X 10.8 Mountain Lion向けに導入されたGateKeeperは、iOSスタイルの安全なアプリ署名をデスクトップPCに効果的に導入しました。
テクノロジーコミュニティの多くの人々が、Appleのセキュリティルールの厳格化に憤慨している。GateKeeperの発表後、Ellis Hamburger氏はThe Vergeに「フラストレーションのサンドボックス:AppleのウォールドガーデンがMac開発者を締め出す」という記事を寄稿し、「2月にMountain Lionが発表された際、開発者たちはAppleの新しいルールに激しく反発した。その理由の一つは、アプリの再設計にどれほどの労力がかかるかという点だった」と述べている。
数か月後、デビッド・ストライトフェルド氏も同様にニューヨーク・タイムズ紙に寄稿し、iOS App Store のルールを規定する Apple の権限は「インターネット全体にとって有害となる可能性がある」と述べた。
AppleのモバイルiOSは、当初から「署名されていない」サードパーティ製ソフトウェアのインストールを防ぐように設計されていました。Appleが2008年にiOS App Storeを開設した際、すべてのiOSアプリはセキュリティ証明書による署名(暗号化)が必須となりました。iOSは、信頼できるソースからのものであり、かつ開発者による署名以降改変されていないことをシステムが検証できるアプリのみを実行するように設計されています。
開発者がAppleのApp Storeを通じてアプリを配布すると、そのアプリは開発者の秘密鍵によって「署名」、つまり暗号化されます。iOSでは、ユーザーが意図的にセキュリティシステムを「脱獄」しない限り、この署名を無効にする方法はありません。脱獄とは、既存の脆弱性を悪用して、システムによるアプリ署名の検証を無効にするプロセスです。
アプリのサイドローディングの危険性
2013年初頭、AppleのiOS App Storeが比類なき成功を収めてから5年が経った頃、Business InsiderのDylan Love氏は、携帯電話の脱獄を試みるiOSユーザーがごくわずかであることは、Appleがセキュリティポリシーをダウングレードすべき証拠だと結論付けた。
「これは明らかに、Appleの顧客層がいわゆる『壁に囲まれた庭園』からもっと多くのものを得たいと思っているという強いメッセージを送っている」と彼は述べた。
Androidにも同様のコード署名機能がアプリ向けに提供されていますが、これはオプションです。しかし、Googleは一連のミスを犯し、プラットフォーム上でマルウェアをブロックまたは無効化する能力を弱めてしまいました。今年の夏、AndroidのFake ID脆弱性は、Androidが証明書を適切に検証できなかったことに起因しており、システム上の任意のアプリが、システムが広範なアクセスを許可しているソフトウェアを装うことが可能になりました。
この問題は、Google Play 以外でアプリを購入し、この欠陥に対するパッチを適用していないほとんどの Android ユーザーに依然として影響を及ぼしています。ほとんどの Android ユーザーが 200 ドル未満の基本的なデバイスを使用しており、ハードウェア メーカーや通信事業者によって定期的に(またはまったく)更新されていないという事実によって、問題はさらに複雑になっています。
Googleは、AppleのApp Storeを制限だらけの「壁に囲まれた庭園」と蔑み、ソフトウェアインストールの許容度を「機能」と呼び、ユーザーにアプリのサイドロードを促しています。その結果、Androidには一連の複雑なセキュリティとプライバシーの問題が生じ、低スペック端末のユーザーを巧みに搾取しています。こうしたユーザーは、ノックしてくるアプリを比喩的に玄関から侵入させてベッドに潜り込ませることがどれほど危険であるかを、最も理解していない可能性が高いのです。
まったく対照的に、Apple は最新の iOS および OS X リリースの展開を非常に優先しているため、Apple ユーザーの大半はアップデートを迅速にインストールできます。一方、他のプラットフォームのユーザーは、パッチやアップデートについて知っていてインストールしたいと思っても、まったく入手できないことがよくあります。
しかし、Appleは企業や個人が自社アプリに自己署名し、信頼するユーザーに配布することをますます容易にしてきました。これにより、Androidに存在するのと同じタイプの「サイドローディング」によるセキュリティ問題が、出所不明のアプリを信頼するユーザーにとって発生する可能性が高まっています。
アプリ署名は著作権侵害をブロックし、アプリの合法的な市場を創出する
Appleは、iOSのリリースごとに、脱獄者がiOSのセキュリティを回避するために使用するメカニズムを定期的に無効化しています。これは、脱獄がApp Storeの大量かつ低価格な市場にとって直接的な脅威となるためです。脱獄済みのiOSデバイスはアプリの海賊版を作成できるため、Appleは脱獄を容易にしていません。アプリ署名は、開発者だけでなくエンドユーザーにとっても保護手段であり、iOSの不正行為を効果的に監視するものです。
効果的なセキュリティシステムがなければ、iOSはWindowsやAndroidプラットフォームのようになるでしょう。つまり、ソフトウェアの著作権侵害が蔓延し、マルウェアが蔓延し、悪質な攻撃によって、無防備な多数のユーザーを容易に感染させ、スパイ活動を行うことができるようになります。略奪、不法侵入、強盗を阻止する警察がいなければ、これらの問題は急速に制御不能に陥ります。
iOSとOS Xは、低価格で高品質なアプリの恩恵を受けるエンドユーザーと開発者を守るために、プラットフォームをロックダウンしています。これはマルウェア作成者やアプリを盗もうとする人々を犠牲にするだけでなく、AppleがApp Storeでの配布を承認していないコードを配布しようとする人々にも影響を与えます。
企業向けアプリのプロビジョニングは新たな脅威をもたらす可能性がある
企業ユーザーの中には、カスタムアプリをApp Storeで公開するのではなく、自社の従業員のみに配布したいと考える人もいるかもしれません。こうしたユーザーのために、AppleはiOSアプリと、アプリの信頼性を保証するプロビジョニングプロファイルを効率的にサイドロードできるようにしました。
AppleはiOSアプリを引き続き厳しく規制しています。iOSを安全でないプラットフォームに戻してしまうこと、つまり複数のソースから提供された一見正当に見えるアプリが、実際には正当ではないものを装い、ユーザーの信頼を裏切り、悪用されることを回避したいからです。しかし、エンタープライズアプリのプロビジョニングは、ユーザーが信頼できない開発者のアプリを「信頼」した場合、悪質なアプリを配布する新たな経路を生み出す可能性があります。
iOSが登場する以前は、悪意のあるデスクトップソフトウェア開発者が正規のツールを装った不正なコードを作成し、配布することで、ユーザーを騙して実行させることができました。マルウェアは、システム上の他のアプリに自身をコピーすることで潜伏し、現実世界のウイルスが健康な細胞にDNAを注入して自身のDNAを複製させるのと同じように、それらを改変することでアプリを改変することもできました。ソフトウェアウイルスとは、システムを騙して複製コードを実行させることで自己複製できるソフトウェアです。
iOSアプリの署名セキュリティ(およびOS X用の同一のGateKeeper)は、これらのシナリオを全て不可能にする壁を作ります。まず、MacとiOSデバイスはデフォルトで、既知の開発者によって署名されていないソフトウェアのインストールを許可しません。また、どちらのシステムもアプリの実行前に改ざんがないかチェックし、開発者の署名後に感染したり改ざんされたりしたアプリをブロックします。
アプリは他のアプリのデータを無差別に読み取ることも禁止されており、ユーザーの連絡先、写真、位置情報、その他のデータにアクセスするには、システムからユーザーの許可を得る必要があります。iOSとOS Xのアプリ署名は、Appleのプラットフォーム上でウイルスが侵入するのを効果的に阻止し、コンピューターではなくユーザーを騙す非ウイルス性のマルウェアからユーザー自身を守ることを容易にしています。
GateKeeperを「どこでも」に設定することは、iOSを脱獄するのと同じである。
Macでは、Appleのアプリ署名セキュリティは「GateKeeper」という名称で知られていますが、この機能はシステム環境設定の「一般」タブにある「セキュリティとプライバシー」パネル内でのみユーザーに公開されています(「GateKeeper」の表示はありません)。デフォルトでは、「Mac App Storeと確認済みの開発元」に設定されています(下図参照)。
この設定により、システムは、Mac App Store からの署名済みアプリ、または Mac が認識する証明機関によって署名された「サイドロード」されたアプリ (企業が Apple に登録した証明書によって署名された独自のカスタム アプリを配布するエンタープライズ開発者など) のみを実行できるようになります。
これはさらに制限され、App Storeで入手できるタイトルのみ実行できるようにすることも可能です。また、「Anywhere(どこでも)」を選択して事実上無効にすることも可能です。その場合、ユーザーはWireLurkerのような不正コードに感染したアプリを含むマルウェアを手動でインストールできます。Appleのセキュリティをオプトアウトすると、エンドユーザーは自らのセキュリティ管理に責任を負うことになります。これは、競合プラットフォームに蔓延するマルウェア、スパイウェア、アドウェアのポップアップが蔓延する広大な世界と似ています。
Appleが署名のないアプリの実行を一切禁止するiOSとは異なり、MacユーザーはGateKeeperを完全に無効にすることができます。これはMacのデフォルト設定では防げるリスクにさらされる可能性があり、Windowsでウイルス対策ソフトウェアを無効にするのと似ています。署名のないMacアプリの実行を許可する際には、ユーザーは細心の注意を払う必要があります。
「Anywhere」設定でアプリ署名セキュリティをオフにするだけでなく、ユーザーは署名されていないアプリを起動することで、GateKeeperセキュリティを一時的に回避できます。アプリの実行がブロックされたという警告が表示された後、ユーザーはシステム環境設定で手動でワンタイムボタンをクリックすることで、以前にブロックされていた署名されていないアプリを強制的に実行できます。これは、GateKeeperを完全にオフにするのと同じくらい本質的に危険です。
信頼できないアプリ開発者のiOSアプリを信頼することは、脱獄することと同じである
ユーザーが署名のないアプリをインストールしてMacのセキュリティ対策を無効にすると、インストールされたマルウェアがiOSデバイスにさらなる感染を広げる可能性があります。WireLurkerの場合、エンタープライズ開発者証明書で署名されたiOSペイロードアプリがインストールされる可能性があります。インストールされると、アプリはiOSの脆弱性を悪用してさらなる被害を与える可能性があります。ただし、現在のバージョンのWireLurkerは、エンタープライズアプリ開発パスを悪用して、その能力を実証するためのコミックアプリを配信するだけにとどまっています。
Masque Attackも同様に、企業のプロビジョニングを悪用してユーザーの警戒を解き、信頼できないアプリを承認させようとします。プロビジョニングプロファイルと共に配布された悪意のある可能性のあるアプリは、システムを通じてユーザーにインストールを「信頼」するよう要求します。ユーザーが「信頼」をクリックすると、システムは通常のApp Storeのルールを回避し、そのアプリをiOSデバイス上で実行できるようにするプロビジョニングプロファイルをインストールします。
しかし、Apple の企業プロビジョニング システムは、ユーザーが基本的なセキュリティをオフにできるようにするという単純なことよりも、さらに深刻な問題を引き起こします。FireEye の研究者が詳述しているように、悪意のあるアプリは、ユーザーに対しては基本的な無害なアプリとして自分自身を報告し、その後、既存のアプリの代わりとしてシステムに自分自身を提示する可能性があります。これは、ある意味で、今年の夏に Android で発生した偽の ID 問題に似ています。
既存のアプリのバンドル識別子を自身に付与することで、ユーザーがインストールを「信頼」すると、マルウェアアプリはユーザーが信頼する別のアプリを置き換えるだけでなく、そのデータも引き継ぐことができます。これにより、マルウェアはユーザーを騙して既知のアプリを不正なアプリにアップデートさせ、ユーザーがインストールしていると思っていたアプリが実際にはシステム上の別のアプリを上書きしていることに気づかせないまま、悪意のあるアプリに仕立て上げることができるのです。
研究者らは、「New Flappy Bird」を装ってユーザーにインストールを信頼させようとするアプリの例を示しました。しかし、システムに対してはcom.google.Gmailであると偽装し、ユーザーのGmailアプリを乗っ取ることができました。その後、Gmailアプリを装ってユーザーの認証情報を要求し、ログイン情報を盗み取る可能性があります。アプリを置き換える際に、このようなマルウェアは元のアプリのキャッシュから機密データを収集する可能性もあります。
さらに悪いことに、Appleは企業向けカスタムアプリをApp Storeのルール(プライベートAPIへのアクセス制限やサンドボックス化を含む)の適用除外としています。これにより、ユーザーを騙して「信頼」させ、インストールさせるマルウェアは、App Storeのタイトルでは厳しく禁止されている行為を実行できるようになります。例えば、バックグラウンド監視、システムパスワードの偽装によるユーザーアカウントログイン情報の提示、さらには他の脆弱性を悪用してシステムへのさらなるアクセス権限の取得などです。
信頼できないアプリ開発者のアプリを信頼しないでください。
そのため、Masque Attack を特定した研究者は、ユーザーに対して「Apple の公式 App Store またはユーザー自身の組織以外のサードパーティ ソースからアプリをインストールしないでください」 とアドバイスしています。
同団体はユーザーに対し、「サードパーティのウェブページからのポップアップでは、アプリについて何と書かれていても、『インストール』をクリックしないでください。ポップアップには、攻撃者が作成した魅力的なアプリのタイトルが表示される可能性があります」 と警告している。
3 番目に、「アプリを開いたときに、図 3 (上記) に示すように、iOS に「信頼できないアプリの開発元」という警告が表示された場合は、「信頼しない」をクリックして、すぐにアプリをアンインストールしてください」 と述べています。
iOS がアプリに開発者証明書による署名を義務付けることの副次的な利点の 1 つは、マルウェア作成者が正当なアプリ署名証明書を盗んだり、借用したり、その他の方法で入手して、それを使用して iOS デバイスにマルウェアをインストールした場合に、Apple が署名を取り消して、署名されたアプリの実行をブロックできることです。
ユーザーが「信頼できないアプリ開発元」からの自己署名アプリを「信頼」すると、iOS 7ではエンタープライズプロビジョニングプロファイルもインストールされます。このプロファイルは、「設定」→「一般」→「プロファイル」→「プロビジョニングプロファイル」で確認できます。iOS 8では、「デバイスに既にインストールされているプロビジョニングプロファイルは表示されないため、アプリのインストールには特に注意することをお勧めします」とグループは指摘しています。
セキュリティ専門家はAppleに対し、iOSをGoogleのAndroidに似ないようにするよう求めている
iOSアプリ署名、GateKeeper、Xprotectを組み合わせることで、Appleは問題が発生する前に対処・ブロックし、ユーザーがセキュリティ対策を回避しようとする問題さえも阻止することが容易になります。Appleユーザーは常に攻撃にさらされていますが、セキュリティをあまり重視していない他のプラットフォームのユーザーよりも安全です。
セキュリティ専門家は、テクノロジーメディアが長年求めてきたようにAppleにソフトウェアの「ウォールドガーデン」ポリシーを緩和するのではなく、App Storeの壁をさらに強固にすることを推奨している。セキュリティ専門家は、テクノロジーメディアが長年求めてきたようにAppleにソフトウェアの「ウォールドガーデン」ポリシーを緩和するのではなく、App Storeの壁をさらに強固にすることを推奨している。
FireEyeは特にAppleに対し、「企業ユーザーをこうした高度な攻撃から守るため、専門セキュリティベンダーにさらに強力なインターフェースを提供する」よう求めた。
セキュリティ専門家のジョナサン・ジアルスキー氏も、Apple に対し、iOS が「アプリケーションをインストールする前にユーザーに確認する機能を改善する」よう求め、「ユーザーが何に対して OK をクリックしようとしているのかをより詳しく説明することで、そもそも多くのユーザーが iOS にソフトウェアをインストールするのを阻止するのに役立つだろう」と指摘している。
さらに彼は、Apple がデフォルトでエンタープライズ アプリのインストールを無効にすることを推奨し、「エンタープライズ以外のユーザーの大多数はエンタープライズ アプリをインストールする必要はなく、インストールしようとしても失敗するはずです。では、なぜ Apple は明示的に有効にしない限りこの機能をロックしないのでしょうか?」と述べています。
Zdziarski 氏は、インストール時にマルウェアが別のアプリになりすますのをブロックする、より厳格なアプリ ポリシーも推奨しています。これには、企業のプロビジョニング署名証明書をアプリのバンドル ID にリンクする新しいルールや、一致するホスト名を使用してアプリのバンドル ID が Web サービスにアクセスするように制限する (たとえば、com.facebook.messenger として識別されるアプリは messenger.facebook.com として識別されるサーバーにのみデータを送信できるようにする) などのルールが含まれます。
Zdziarski 氏のもう一つの推奨事項は、新しい iOS デバイスのセキュア エレメントを使用してアプリを検証することですが、セキュア エレメントが組み込まれているのは新しい iPhone 6 モデルと Touch ID を備えた最新の iPad だけです。