ContentProviderのアクセス制限不備

本シナリオでの学習内容

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

ContentProviderのアクセス制限不備とは

「ContentProviderのアクセス制限不備」とはどのような問題でしょうか。ここで概要について理解しておきましょう。
「コンポーネントとは」で説明した通り、開発者はコンポーネントを組み合わせて、アプリに様々な機能を実装します。
ContentProviderは他のアプリにデータを公開するために使用するので、他のコンポーネントと異なりアクセス制限を細かく行えるようになっています。
他のアプリから想定外のデータ読み込みや書き込みが行われないように、開発者は公開するデータの範囲を制限してデータを保護します。
適切にアクセス制限が行われているContentProviderは
他のアプリから不正なアクセスを受けない


しかしアクセス制限に不備がある場合は、他のアプリから想定外のデータの読み取りや、書き込みができるようになってしまいます。

アクセス制限に不備があるContentProviderは
他のアプリから不正なアクセスを受けてしまう


ContentProviderが適切に保護されていないことにより、想定外のアプリからデータの読み取りや書き込みをできるようになっていることが「ContentProviderのアクセス制限不備」によって生じる脆弱性です。

学習用アプリについて

このシナリオでは、以下の学習用アプリを使用して学習します。
  • 学習用アプリの概要
    サンプルアプリ「06ギャラリー」と、攻撃アプリ「06ギャラリースパイ」を使用します。
    サンプルアプリ「06ギャラリー」のContentProviderにアクセス制限に不備がある事により、攻撃アプリ「06ギャラリースパイ」が「06ギャラリー」アプリのデータを削除するという想定です。

  • サンプルアプリ「06ギャラリー」
    画像データの管理を行うアプリです。
    ContentProviderアクセス制限に不備があります。

  • 攻撃アプリ「06ギャラリースパイ」
    「06ギャラリー」アプリの脆弱性を悪用し、データベース内の画像データを削除するアプリです。
    音楽再生アプリを偽装しています。

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