の人気アンドロイドますます多くのハッカーを惹きつけており、そのモデルを疑問視するニュースを聞かない日はありません。安全Googleによって設定されました。 Play ストアからのアプリケーションであれ、サードパーティ マーケット経由でインストールされたアプリケーションであれ、セキュリティを専門とする企業は、Android に到達するマルウェアの数が増えていることに憤慨しています。
ここで問題となるのはウイルスではなくマルウェアです。アプリケーションは携帯電話から機密データを「盗み」、それを悪意のある目的に使用するからです。ただし、許可があるため、損害は常に限定的であることに注意してください。これらにより、アプリケーションの範囲を制限することが可能になります。たとえば、インターネット アクセスを要求しない場合、リモート リクエストを行うことはできません。権限は、次のようなユーザーにとっても非常に役立ちます。できるアプリケーションをインストールするときは、他のユーザーの意見とともに自問する必要があります。したがって、Android ではマルウェアは危険ですが、非常に多くの部分は非常に簡単に検出できます。
さらに、テクノロジー ニュースを見ると、ほぼ毎日、大企業がデータを盗まれていますが、その原因は Android ではないことに気づくでしょう。すべてのセキュリティ会社にも同様のことが当てはまり、コンピュータ部門を非難することがよくあります。 Android は優秀な学生ではないかもしれませんが、コンピューティング全般には常に脆弱性が存在します。明らかに解決策はあります。それは、より安全なソフトウェアです。しかし、これらの素晴らしい言葉の裏では、実装は必ずしも簡単ではありません。スマートフォン分野はごく最近に登場したものであり、しばしば限界(利益相反、企業が作成するウイルスなど)を示してきたセキュリティ専門企業に恩恵をもたらしていることも忘れてはなりません。
Android は強固なセキュリティ モデルに基づいて構築されており、それをわかりやすく説明していきます (この記事はできる限り技術的な話ではないように努めます)。
あなたのコンピュータ: 開かれた扉
コンピュータ上でアプリケーションを起動すると、そのアプリケーションは現在のユーザーによって実行されます。したがって、ゲームやアプリケーションを起動すると、すべてのファイル (およびその潜在的な機密データ)、インターネット履歴、写真ライブラリ、その他多くのものへのアクセスが許可されることになります。これは、特に通常管理者権限を持っている Windows ユーザーにとっては非常に危険です。データの盗難は、ユーザーにとって非常に簡単かつ透過的な方法で目撃できます。
Android では、エコシステムはまったく異なる動作をします。各アプリケーションは異なるユーザーによって起動されるため、導入されているセキュリティ モデルが大幅に変化します。 Android は、GNU/Linux で使用されているユーザーとグループのセキュリティ モデルを最大限に活用しています。
Linux セキュリティ モデル
ユーザーが作成されるたびに、グループ ID (GID) を持つグループと同様に、ユーザー ID (UID) が作成されます。
ユーザーは 0 個以上のグループに属することができ、グループには 0 個以上のユーザーを含めることができます。
リソース (Linux ではほとんどすべてがファイルです) はユーザー (通常はリソースを作成したユーザー) に属し、所有者はいつでもアクセス許可を変更することを決定できます。
いくつかのレベルのアクセスが提供されます: 読み取り (R) / 書き込み (W) / 実行 (X) はユーザーまたはグループに割り当てられますが、残りのユーザー (グループに属していないユーザー) にも割り当てられます。 3 つのアクセス レベルは互いに独立しています。たとえば、読み取りを行わずに書き込みを行う権利、または両方の権利を持つことができます。
2 人のユーザー A と B を考えてみましょう。A はグループ G1 に属し、B はグループ G2 に属します。リソースがユーザー C に属し、彼がグループ G1 に属している場合、A はグループ G1 の権限を持ち、B は残りの権限を持ちます (他の)。したがって、これら 3 つのレベルにより、長年にわたって実証されてきた強力なセキュリティ モデルを構築することが可能になります。
Android では、この概念が見事に活用されています。アプリケーション (システムにまだ存在していないもの) をインストールすると、新しいユーザー ID が作成され、アプリケーションがそれにアタッチされます。画像、環境設定、データベースなどのすべてのアプリケーション ファイルにも同じことが当てはまりますが、プロセス、メモリ、使用される周辺機器 (GPS、Bluetooth など) へのアクセスも同様です。したがって、このユーザー (したがってこのアプリケーション) だけがその要素にアクセスできるようになります。たとえば、環境設定を含むファイルをファイル ブラウザ (アストロ タイプ) から開こうとすると、同じユーザー ID ではないため、そのファイルにはアクセスできません。 (同じ開発者、同じ署名、アプリケーションに対して同じユーザーが使用される可能性がありますが、これはデフォルトの動作ではないことに注意してください)。
ただし、このモデルでは SD カードを使用する場合に制限があります。実際、特にアクセス許可を認識しないサードパーティ製デバイスからコンテンツにアクセスする方がはるかに簡単です。このため、アプリケーションはこの場所を使用して写真や非機密文書を保存しますが、設定やデータベースなどは常に内部メモリに残ります。これは、Google が Nexus 端末で SD カード リーダーを提供しなくなった理由の 1 つでもあります。
プロセス間の通信に関しては、システムが Linux カーネル上に実装されており、ネイティブ言語で書かれたコードも保護していることがわかります (念のために言うと、Android アプリケーションは Java でコーディングされていますが、C/C++ のネイティブ コードを移植することができます)。
権限
基本的に、アプリケーションがシステム リソースにアクセスできるのは非常に限られています。これにより、例えばブラウザから要求された権限のみにアクセスできるようになるため、ブラウザへの攻撃による被害を制限することが可能になります。たとえば Android 1.5 までは、許可を求めずに SD カードに書き込むことができたため、Google はシステムを進化させました。
アプリケーションをインストールするとき、ユーザーは要求された権限を完全に受け入れる必要があります。一部のみを選択することはできません。同様に、使用された権限を後から変更することもできません。アプリケーションが許可されていない機能を使用しようとすると、システムは単純にアクセスを拒否します。
この独自のシステムにより、Android はこの分野で非常に革新的となり、望ましくない影響が制限されます。
今後の記事で、各権限の役割について説明します。
根:魅力的だが非常に(あまりにも?)危険
すべてのオペレーティング システムには、すべての権限を持つスーパーユーザーが存在します。 Unix システムでは、その名前は「root」で、権限に関係なく任意のリソースにアクセスできます。制限がなければ、使い方を知らなければリアルタイム爆弾になる可能性があります (「rm -fr / »たとえば、ファイル システム全体を削除します)。したがって、Android端末を購入したときにroot化されていない場合は、何よりもユーザーを保護する必要があります。

今日、特定の機能のロックを解除するために携帯電話をルート化する (= ルート権を取得する) ことを決定するユーザーがますます増えています。その一部を次に示します。
- システム アプリ (通常はブロートウェア) を削除します。
- 特別な権限を必要とするアプリケーションを使用する (Android 1 および 2 のスクリーンショット)
- CPU周波数を変更する
- 特定のパラメータを調整することで自律性を向上させます
- アプリケーションのバックアップと復元を行う
- Linux カーネルを変更し、カスタム ROM を使用する
- 新しいバージョンのシステムをインストールする
- …
この改善が提示されると、通常、次の 2 つの危険性が通知されます。ブリックカー電話機が壊れる(= 動作不能になる)か、メーカー/オペレーターの保証が失われる(ただし、root を解除することは可能)。
多くの人にとって無害に見えるこれらの危険の背後には、はるかに破壊的な他の危険があることを除いて。アプリケーションに root 権限を与えるということは、次のことを許可することを意味します。
- 自分の個人データにアクセスするには
データベースやさまざまなリソースへのアクセスを制限するために前述したシステム全体はもう存在しません。スーパーユーザーは目を閉じていてもアクセスできます。 SMS、電子メール、銀行口座など、すべてを見ることができます。暗号化により、このようなデータがプレーン テキストで表示されることが防止されますが、アプリケーションの性質によっては、すべての開発者が暗号化を使用するわけではありません。
- アプリケーションの権限を変更する
root になると、権限システムも侵害されます。スーパーユーザーは、アプリケーションから権限を削除するよう要求することができます。これは場合によっては非常に有益であるように見えますが、ユーザーが気付かないうちに root がアクセス許可を割り当てることもあります。したがって、これは諸刃の剣であり、アプリケーションによって実行されるコードを自分で確認しない限り、その動作範囲を正確に知ることができないため、ほとんどの場合隠されたままになります。携帯電話のルート化は主に開発者専用です。
ただし、今日実装されているシステムでは、アプリケーションにスーパーユーザー権限を割り当てる前にユーザーに質問することを明記することで、これらのコメントを考慮することにします。
Android 4.2: 最高
マルウェアの数が増加していることを見て、Google は Play ストア上のアプリケーションを検証するシステムを導入しました。新しい APK がリリースされる前に、マルウェアが検出された場合、アプリケーションは自動的に削除されます。ただし、このシステムは 100% 安全ではなく、アプリケーションが Google ストアからダウンロードされた場合にのみ有効です。
ただし、Android の強みは、サードパーティ マーケット (Amazon AppShop、YAAM など) からコンテンツをインストールできることです。これと同じマルウェア検出システムが、システムによって直接提供されるようになりました。インストール中に、Google がアプリケーションがマルウェアであると判断した場合、インストールは不可能になります。そのコンテンツが潜在的に危険であると思われる場合は、ユーザーに通知され、手順を続行する価値があるかどうかはユーザーが単独で判断します。
どう結論づけられるでしょうか?
したがって、Android が安全なシステムではないと言うのは完全にナンセンスです。それどころか、その権限システムは非常によく考えられており、アプリケーションで使用される機能について、他のモバイル オペレーティング システムよりもはるかに明確なビジョンをユーザーに提供します。
他のプラットフォームとは異なり、マルウェア チェック ツールには限界があるため、アプリケーションをインストールする前に注意し、要求された権限が適切かどうかを自問するのはユーザーの責任です。 root に関しては、問題は依然として非常に複雑であるため、上級ユーザーのみが使用する必要があります。
ただし、要求された権限の役割を開発者が説明する義務など、進歩の余地はまだ残っています (これは、たとえば、私たちが行っていることです)Android 用アプリケーション)。 Android が AppStore のような権威主義的なモデルに切り替えることは決してできませんが、より洗練されたマルウェア検出メカニズムは歓迎されるでしょう。
Android 4.2 の機能に関する噂 (ただし、最終的には統合されませんでした) の中で、私たちは次の統合の可能性について話していました。SELinuxこれにより、追加レベルのセキュリティが提供されます。開発者側では、導入するメカニズムは非常に単純ですが、それでも適用する必要があります (「Google I/O でのビデオ)!