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

本シナリオでの学習内容

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

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

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

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

非公開に設定されたActivityは
他のアプリからアクセスできない

しかし非公開コンポーネントを誤って公開してしまった場合、そのコンポーネントが持っている機能は他のアプリから利用できてしまいます。

公開に設定されたActivityは
他のアプリからアクセスできる


非公開コンポーネントが公開されており、想定外のアプリからアプリの機能を利用できるようになっていることが「非公開コンポーネントのアクセス制限不備」によって生じる脆弱性です。

学習用アプリについて

このシナリオでは、以下の学習用アプリを使用して学習します。
  • 学習用アプリの概要
    サンプルアプリ「04画像投稿」と、攻撃アプリ「04画像投稿スパイ」を使用します。
    サンプルアプリ「04画像投稿」のActivityにアクセス制限の不備があるため、攻撃アプリ「04画像投稿スパイ」により、画像をアップロードされるという想定です。

  • サンプルアプリ「04画像投稿」
    端末内の画像ファイルを外部のサイトへアップロードし、他のアプリ利用者と画像の共有を行うアプリです。
    非公開とすべきActivityのアクセス制限に不備があります。

  • 攻撃アプリ「04画像投稿スパイ」
    「04画像投稿」アプリの画像アップロード機能を悪用して端末内の画像を不正にアップロードするアプリです。

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