公開コンポーネントのアクセス制限不備

本シナリオでの学習内容

ここでは、公開コンポーネントのアクセス制限不備によって生じる脆弱性について学習します。
実際にサンプルアプリを実行して脆弱性によってどのような被害が発生するのかを体験し、その後、脆弱性の原因と対策についてソースコードを参照しながら学習します。
このシナリオではServiceをサンプルとして説明します。

公開コンポーネントのアクセス制限不備とは

「公開コンポーネントのアクセス制限不備」とはどのような問題でしょうか。ここで概要について理解しておきましょう。
「コンポーネントとは」で説明した通り、開発者はコンポーネントを組み合わせて、アプリに様々な機能を実装します。 アプリが実装する機能には、他のアプリに提供することを想定したものがあります。 このような機能を提供するコンポーネントは他のアプリが利用できるように公開設定します。このとき連携対象のアプリだけが機能を利用できるようにアクセス制限を行います。

コンポーネントのアクセス制限の挙動について、Serviceを例に図示します。

適切に保護された公開コンポーネントは
想定外のアプリからアクセスできない


しかし公開コンポーネントが保護されていない場合、そのコンポーネントが持っている機能は他の全てのアプリから利用できてしまいます。
保護されていない公開コンポーネントは
全てのアプリからアクセス可能
公開にしたコンポーネントの保護が適切でなく、想定外のアプリからアプリの機能を利用できるようになっていることが「公開コンポーネントのアクセス制限不備」によって生じる脆弱性です。

学習用アプリについて

このシナリオでは、以下の学習用アプリを使用して学習します。
  • 学習用アプリの概要
    サンプルアプリ「05データバックアップ」と「05データバックアップクライアント」、攻撃アプリ「05データバックアップスパイ」を使用します。
    サンプルアプリ「05データバックアップ」のServiceにアクセス制限の不備があるため、攻撃アプリ「05データバックアップスパイ」からServiceを悪用され、攻撃者が用意したサーバにデータをバックアップしてしまうという想定です。

  • サンプルアプリ1「05データバックアップ」
    サーバへAndroid端末内のデータをバックアップするアプリです。
    バックアップクライアントからの指示に従ってバックアップを行います。
    公開Serviceのアクセス制限に不備があります。

  • サンプルアプリ2「05データバックアップクライアント」
    バックアップツールが公開しているServiceに対して起動、停止、バックアップの各指示を行うアプリです。
    クライアント側には脆弱性は存在しません。

  • 攻撃アプリ「05データバックアップスパイ」
    「05データバックアップ」アプリが公開しているServiceを悪用して、不正にバックアップを実行させるアプリです。

どのような実装がこの脆弱性につながるのか次のページで学習していきましょう。