web-dev-qa-db-ja.com

AndroidデバイスでのセッションCookieの暗号化

クライアントの1つが、モバイルアプリケーションの1つに対する政府のセキュリティ監査に問題を抱えています。

発見によると、アプリケーションはデバイスにセッションCookieをクリアテキスト形式で保存するため、ルート化されたデバイスでは、攻撃者がセッションがアクティブな間にセッションCookieを盗み、被害者に代わってトランザクションを実行することが理論的に可能です(ただし、アプリケーション自体のルート検出メカニズムをバイパスすることもできます)。

私の質問は:

1)これは有効な調査結果ですか?

2)アプリケーションがデバイスストレージのCookieを暗号化/復号化する場合、アプリケーションはキーをアプリケーション内に保存する必要があるため、これによりセキュリティが強化されますか?

3)アプリケーションがCookieを暗号化する場合、これは、プログラムコードで難読化されたすべてのデバイスで同じキーになるか、キーと最初の実行で生成されたランダムデータとの組み合わせで、すべてのデバイスに一意のキーがあり、同時に、データ自体と一緒に格納されているスタンドアロンキーはありません。

2
Patriot

1)これは有効な調査結果ですか?

脅威モデルによって異なります。そもそも、ルート化されたデバイスでアプリケーションを使用することは許可されていますか?リモートの攻撃者が独自のマルウェアをデバイスのルートとして実行できるように、ルート化されたデバイスが安全でないと想定する必要がありますか?

2)アプリケーションがデバイスストレージのCookieを暗号化/復号化する場合、アプリケーションはキーをアプリケーション内に保存する必要があるため、これによりセキュリティが強化されますか?

それは難しくなりますが、問題を完全には解決しません。攻撃者はまた、アプリケーションを変更またはハイジャックして、復号化されたCookieにアクセスする可能性があります。

3)アプリケーションがCookieを暗号化する場合、これは、プログラムコードで難読化されたすべてのデバイスで同じキーになるか、キーと最初の実行で生成されたランダムデータとの組み合わせで、すべてのデバイスに一意のキーがあり、同時に、データ自体と一緒に格納されているスタンドアロンキーはありません。

デバイス固有のシークレットでは、別の攻撃ベクトルを追加する場所にも格納する必要があります(一部のデバイスには、ここで役立つ安全なコンパートメントがあります)。共通の秘密があれば、それを難読化するためにより多くの努力をすることができますが、アプリケーションを分析するためにより多くの時間をターゲットデバイスから費やすことができます。

一般に、ユーザー(または攻撃者)がデバイスを制御できるほど、デバイス上で実行されているものを信頼できなくなります。したがって、デバイスが十分に信頼できることを確認する(ルートを検出する、現在のパッチレベルを確認する、一般的でないアプリケーションを確認する、会社が管理するデバイスのみを信頼するなど)か、またはその影響を制限する必要があります。盗まれたクッキーで何ができるか.

2
Steffen Ullrich