
보안 코딩 기법: 사용자 지정 권한 문제
モバイル向けに開発する場合、アプリケーションはしばしばシステムに何らかの許可を要求しなければなりません。例えば、ユーザーの連絡先へのアクセスや、Bluetooth接続、SMSメッセージの送信などがあります。上述の許可はすべて、Androidフレームワークによって定義されたプラットフォーム許可です。
しかし、これらでは十分ではなく、アプリケーションが独自のカスタムパーミッションを定義する必要がある場合もあります。Secure Code Warrior は、SCWプラットフォーム上でのユーザのパフォーマンスなどのプライベートデータをプロファイルの一部として保存するアプリを作成します。そして、別のセキュリティトレーニングアプリ(例えばDevTrainer)が、ユーザから許可を得た場合に、このデータを使用することを許可したいと思います。これはセンシティブなデータで、ユーザは誰にも知られたくないと思っていますが、SCWAppはそれが有用であるかもしれないので、完全に隠して保護するべきではありません。そのため、ユーザがコントロールできるようにしたいと考えています。ここでカスタムパーミッションの出番です。
SCWAppがカスタムパーミッションを作成し、DevTrainerがこのパーミッションを要求し、ユーザはこれを許可するかどうかを決めることができます。これは一般的な方法で、ホワイトリストに登録されたアプリケーションへのアクセスを制限するのに適した方法です。
残念ながら、カスタムパーミッションには直感的に理解できない動作があり、セキュリティの観点からは危険なものとなっています。具体的には、カスタムパーミッションはどのアプリでもいつでも定義することができ、「先に手を打った者勝ち」となりますが、この戦略にはいくつかの結果が伴います。
以下のシナリオでは、上記で紹介した2つのアプリのプロファイルを定義します(これらのアプリはすべて、デモンストレーションのための架空のものです)。
1. SCWApp: カスタムパーミッションを定義し、そのパーミッションを使用してコンポーネントを防御するアプリです。
2.DevTrainer: このアプリはSCWAppと同じパーミッションを定義し、このパーミッションを保持することをユーザに宣言します。
これは「Peer Apps Case」と呼ばれる一般的なシナリオです。もし、DevTrainerアプリがSCWAppの単なるプラグインであれば、カスタムパーミッションを定義する必要はありません。このケースでは、SCWAppがDevTrainerより先にインストールされ、予期せぬ動作が起こらないことが前提となっています。何らかの方法でユーザがDevTrainerを先にインストールした場合、ユーザにはパーミッションの要求について知らされません。ユーザーが後からSCWAppをインストールした場合、DevTrainerには遡って許可が与えられないため、DevTrainerアプリが保護されたコンポーネントを使用しようとしても失敗します。
ここで登場するのが「Peers App Case」です。場合によっては、一方のアプリが他方のアプリより先にインストールされることを期待できないことがあります。例えば、FacebookとTwitterがお互いのコンポーネントを使用したい場合、お互いのカスタムパーミッションを定義しなければなりません。
しかし、ここからが厄介なのです。DevTrainerアプリが最初にインストールされた場合、ユーザにはカスタム・パーミッションの要求について通知されません。この時点では、ユーザに知らされていないにもかかわらず、DevTrainerはカスタムパーミッションを保持しており、セキュリティで保護されたコンポーネントにアクセスすることができます。
さらにやっかいなことになります。DevTrainerアプリは、パーミッションの保護レベルを変更することができます。Androidは防御側の保護レベルではなく、最初に定義された保護レベルを使用します。つまり、最初にインストールされたアプリが定義できるのです。つまり、DevTrainerがパーミッションレベルを通常に変更した場合、今後このパーミッションを要求するアプリは、ユーザーによる確認を必要とせず、自動的にアクセスが許可されることになります。
このシナリオは、cwac-securityのgithubにあるこの問題の説明からヒントを得ました。
先手必勝」戦略には危険な結果をもたらすものがあり、その動作を知らないと、開発者は信頼できない入力に基づいてセキュリティ上の判断を下し、意図しないアプリに機密データや保護されたサービスへのアクセスを許してしまう可能性があります。信頼できない入力によるセキュリティ上の判断を避けるための詳細については、当社のプラットフォームをご覧ください。この動作は、Android 5.0(Lollipop)で変更されました。しかし、現在、22%以上のAndroidデバイスがまだ低バージョンのAndroidを実行しているため、アプリで元の動作のリスクを軽減することが重要です。アプリの初回実行時にすでにパーミッションが定義されているかどうかを確認し、その場合は適切な対処をしてセキュリティリスクを解決してください。
頑張ってコーディングして、また来週お会いしましょう
カスタムパーミッションを定義することで、アプリはそのリソースや機能を他のアプリと共有することができます。
https://developer.android.com/guide/topics/permissions/defining.html
アプリケーション・セキュリティ・リサーチャー、R&Dエンジニア、博士号取得者

セキュアコードウォリアーは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を組織に根付かせるために存在します。AppSec管理者、開発者、CISO、あるいはセキュリティに関わるあらゆる立場の方々に対し、組織が安全でないコードに関連するリスクを軽減できるよう支援します。
デモ予約アプリケーション・セキュリティ・リサーチャー、R&Dエンジニア、博士号取得者


モバイル向けに開発する場合、アプリケーションはしばしばシステムに何らかの許可を要求しなければなりません。例えば、ユーザーの連絡先へのアクセスや、Bluetooth接続、SMSメッセージの送信などがあります。上述の許可はすべて、Androidフレームワークによって定義されたプラットフォーム許可です。
しかし、これらでは十分ではなく、アプリケーションが独自のカスタムパーミッションを定義する必要がある場合もあります。Secure Code Warrior は、SCWプラットフォーム上でのユーザのパフォーマンスなどのプライベートデータをプロファイルの一部として保存するアプリを作成します。そして、別のセキュリティトレーニングアプリ(例えばDevTrainer)が、ユーザから許可を得た場合に、このデータを使用することを許可したいと思います。これはセンシティブなデータで、ユーザは誰にも知られたくないと思っていますが、SCWAppはそれが有用であるかもしれないので、完全に隠して保護するべきではありません。そのため、ユーザがコントロールできるようにしたいと考えています。ここでカスタムパーミッションの出番です。
SCWAppがカスタムパーミッションを作成し、DevTrainerがこのパーミッションを要求し、ユーザはこれを許可するかどうかを決めることができます。これは一般的な方法で、ホワイトリストに登録されたアプリケーションへのアクセスを制限するのに適した方法です。
残念ながら、カスタムパーミッションには直感的に理解できない動作があり、セキュリティの観点からは危険なものとなっています。具体的には、カスタムパーミッションはどのアプリでもいつでも定義することができ、「先に手を打った者勝ち」となりますが、この戦略にはいくつかの結果が伴います。
以下のシナリオでは、上記で紹介した2つのアプリのプロファイルを定義します(これらのアプリはすべて、デモンストレーションのための架空のものです)。
1. SCWApp: カスタムパーミッションを定義し、そのパーミッションを使用してコンポーネントを防御するアプリです。
2.DevTrainer: このアプリはSCWAppと同じパーミッションを定義し、このパーミッションを保持することをユーザに宣言します。
これは「Peer Apps Case」と呼ばれる一般的なシナリオです。もし、DevTrainerアプリがSCWAppの単なるプラグインであれば、カスタムパーミッションを定義する必要はありません。このケースでは、SCWAppがDevTrainerより先にインストールされ、予期せぬ動作が起こらないことが前提となっています。何らかの方法でユーザがDevTrainerを先にインストールした場合、ユーザにはパーミッションの要求について知らされません。ユーザーが後からSCWAppをインストールした場合、DevTrainerには遡って許可が与えられないため、DevTrainerアプリが保護されたコンポーネントを使用しようとしても失敗します。
ここで登場するのが「Peers App Case」です。場合によっては、一方のアプリが他方のアプリより先にインストールされることを期待できないことがあります。例えば、FacebookとTwitterがお互いのコンポーネントを使用したい場合、お互いのカスタムパーミッションを定義しなければなりません。
しかし、ここからが厄介なのです。DevTrainerアプリが最初にインストールされた場合、ユーザにはカスタム・パーミッションの要求について通知されません。この時点では、ユーザに知らされていないにもかかわらず、DevTrainerはカスタムパーミッションを保持しており、セキュリティで保護されたコンポーネントにアクセスすることができます。
さらにやっかいなことになります。DevTrainerアプリは、パーミッションの保護レベルを変更することができます。Androidは防御側の保護レベルではなく、最初に定義された保護レベルを使用します。つまり、最初にインストールされたアプリが定義できるのです。つまり、DevTrainerがパーミッションレベルを通常に変更した場合、今後このパーミッションを要求するアプリは、ユーザーによる確認を必要とせず、自動的にアクセスが許可されることになります。
このシナリオは、cwac-securityのgithubにあるこの問題の説明からヒントを得ました。
先手必勝」戦略には危険な結果をもたらすものがあり、その動作を知らないと、開発者は信頼できない入力に基づいてセキュリティ上の判断を下し、意図しないアプリに機密データや保護されたサービスへのアクセスを許してしまう可能性があります。信頼できない入力によるセキュリティ上の判断を避けるための詳細については、当社のプラットフォームをご覧ください。この動作は、Android 5.0(Lollipop)で変更されました。しかし、現在、22%以上のAndroidデバイスがまだ低バージョンのAndroidを実行しているため、アプリで元の動作のリスクを軽減することが重要です。アプリの初回実行時にすでにパーミッションが定義されているかどうかを確認し、その場合は適切な対処をしてセキュリティリスクを解決してください。
頑張ってコーディングして、また来週お会いしましょう
カスタムパーミッションを定義することで、アプリはそのリソースや機能を他のアプリと共有することができます。
https://developer.android.com/guide/topics/permissions/defining.html

モバイル向けに開発する場合、アプリケーションはしばしばシステムに何らかの許可を要求しなければなりません。例えば、ユーザーの連絡先へのアクセスや、Bluetooth接続、SMSメッセージの送信などがあります。上述の許可はすべて、Androidフレームワークによって定義されたプラットフォーム許可です。
しかし、これらでは十分ではなく、アプリケーションが独自のカスタムパーミッションを定義する必要がある場合もあります。Secure Code Warrior は、SCWプラットフォーム上でのユーザのパフォーマンスなどのプライベートデータをプロファイルの一部として保存するアプリを作成します。そして、別のセキュリティトレーニングアプリ(例えばDevTrainer)が、ユーザから許可を得た場合に、このデータを使用することを許可したいと思います。これはセンシティブなデータで、ユーザは誰にも知られたくないと思っていますが、SCWAppはそれが有用であるかもしれないので、完全に隠して保護するべきではありません。そのため、ユーザがコントロールできるようにしたいと考えています。ここでカスタムパーミッションの出番です。
SCWAppがカスタムパーミッションを作成し、DevTrainerがこのパーミッションを要求し、ユーザはこれを許可するかどうかを決めることができます。これは一般的な方法で、ホワイトリストに登録されたアプリケーションへのアクセスを制限するのに適した方法です。
残念ながら、カスタムパーミッションには直感的に理解できない動作があり、セキュリティの観点からは危険なものとなっています。具体的には、カスタムパーミッションはどのアプリでもいつでも定義することができ、「先に手を打った者勝ち」となりますが、この戦略にはいくつかの結果が伴います。
以下のシナリオでは、上記で紹介した2つのアプリのプロファイルを定義します(これらのアプリはすべて、デモンストレーションのための架空のものです)。
1. SCWApp: カスタムパーミッションを定義し、そのパーミッションを使用してコンポーネントを防御するアプリです。
2.DevTrainer: このアプリはSCWAppと同じパーミッションを定義し、このパーミッションを保持することをユーザに宣言します。
これは「Peer Apps Case」と呼ばれる一般的なシナリオです。もし、DevTrainerアプリがSCWAppの単なるプラグインであれば、カスタムパーミッションを定義する必要はありません。このケースでは、SCWAppがDevTrainerより先にインストールされ、予期せぬ動作が起こらないことが前提となっています。何らかの方法でユーザがDevTrainerを先にインストールした場合、ユーザにはパーミッションの要求について知らされません。ユーザーが後からSCWAppをインストールした場合、DevTrainerには遡って許可が与えられないため、DevTrainerアプリが保護されたコンポーネントを使用しようとしても失敗します。
ここで登場するのが「Peers App Case」です。場合によっては、一方のアプリが他方のアプリより先にインストールされることを期待できないことがあります。例えば、FacebookとTwitterがお互いのコンポーネントを使用したい場合、お互いのカスタムパーミッションを定義しなければなりません。
しかし、ここからが厄介なのです。DevTrainerアプリが最初にインストールされた場合、ユーザにはカスタム・パーミッションの要求について通知されません。この時点では、ユーザに知らされていないにもかかわらず、DevTrainerはカスタムパーミッションを保持しており、セキュリティで保護されたコンポーネントにアクセスすることができます。
さらにやっかいなことになります。DevTrainerアプリは、パーミッションの保護レベルを変更することができます。Androidは防御側の保護レベルではなく、最初に定義された保護レベルを使用します。つまり、最初にインストールされたアプリが定義できるのです。つまり、DevTrainerがパーミッションレベルを通常に変更した場合、今後このパーミッションを要求するアプリは、ユーザーによる確認を必要とせず、自動的にアクセスが許可されることになります。
このシナリオは、cwac-securityのgithubにあるこの問題の説明からヒントを得ました。
先手必勝」戦略には危険な結果をもたらすものがあり、その動作を知らないと、開発者は信頼できない入力に基づいてセキュリティ上の判断を下し、意図しないアプリに機密データや保護されたサービスへのアクセスを許してしまう可能性があります。信頼できない入力によるセキュリティ上の判断を避けるための詳細については、当社のプラットフォームをご覧ください。この動作は、Android 5.0(Lollipop)で変更されました。しかし、現在、22%以上のAndroidデバイスがまだ低バージョンのAndroidを実行しているため、アプリで元の動作のリスクを軽減することが重要です。アプリの初回実行時にすでにパーミッションが定義されているかどうかを確認し、その場合は適切な対処をしてセキュリティリスクを解決してください。
頑張ってコーディングして、また来週お会いしましょう
カスタムパーミッションを定義することで、アプリはそのリソースや機能を他のアプリと共有することができます。
https://developer.android.com/guide/topics/permissions/defining.html
モバイル向けに開発する場合、アプリケーションはしばしばシステムに何らかの許可を要求しなければなりません。例えば、ユーザーの連絡先へのアクセスや、Bluetooth接続、SMSメッセージの送信などがあります。上述の許可はすべて、Androidフレームワークによって定義されたプラットフォーム許可です。
しかし、これらでは十分ではなく、アプリケーションが独自のカスタムパーミッションを定義する必要がある場合もあります。Secure Code Warrior は、SCWプラットフォーム上でのユーザのパフォーマンスなどのプライベートデータをプロファイルの一部として保存するアプリを作成します。そして、別のセキュリティトレーニングアプリ(例えばDevTrainer)が、ユーザから許可を得た場合に、このデータを使用することを許可したいと思います。これはセンシティブなデータで、ユーザは誰にも知られたくないと思っていますが、SCWAppはそれが有用であるかもしれないので、完全に隠して保護するべきではありません。そのため、ユーザがコントロールできるようにしたいと考えています。ここでカスタムパーミッションの出番です。
SCWAppがカスタムパーミッションを作成し、DevTrainerがこのパーミッションを要求し、ユーザはこれを許可するかどうかを決めることができます。これは一般的な方法で、ホワイトリストに登録されたアプリケーションへのアクセスを制限するのに適した方法です。
残念ながら、カスタムパーミッションには直感的に理解できない動作があり、セキュリティの観点からは危険なものとなっています。具体的には、カスタムパーミッションはどのアプリでもいつでも定義することができ、「先に手を打った者勝ち」となりますが、この戦略にはいくつかの結果が伴います。
以下のシナリオでは、上記で紹介した2つのアプリのプロファイルを定義します(これらのアプリはすべて、デモンストレーションのための架空のものです)。
1. SCWApp: カスタムパーミッションを定義し、そのパーミッションを使用してコンポーネントを防御するアプリです。
2.DevTrainer: このアプリはSCWAppと同じパーミッションを定義し、このパーミッションを保持することをユーザに宣言します。
これは「Peer Apps Case」と呼ばれる一般的なシナリオです。もし、DevTrainerアプリがSCWAppの単なるプラグインであれば、カスタムパーミッションを定義する必要はありません。このケースでは、SCWAppがDevTrainerより先にインストールされ、予期せぬ動作が起こらないことが前提となっています。何らかの方法でユーザがDevTrainerを先にインストールした場合、ユーザにはパーミッションの要求について知らされません。ユーザーが後からSCWAppをインストールした場合、DevTrainerには遡って許可が与えられないため、DevTrainerアプリが保護されたコンポーネントを使用しようとしても失敗します。
ここで登場するのが「Peers App Case」です。場合によっては、一方のアプリが他方のアプリより先にインストールされることを期待できないことがあります。例えば、FacebookとTwitterがお互いのコンポーネントを使用したい場合、お互いのカスタムパーミッションを定義しなければなりません。
しかし、ここからが厄介なのです。DevTrainerアプリが最初にインストールされた場合、ユーザにはカスタム・パーミッションの要求について通知されません。この時点では、ユーザに知らされていないにもかかわらず、DevTrainerはカスタムパーミッションを保持しており、セキュリティで保護されたコンポーネントにアクセスすることができます。
さらにやっかいなことになります。DevTrainerアプリは、パーミッションの保護レベルを変更することができます。Androidは防御側の保護レベルではなく、最初に定義された保護レベルを使用します。つまり、最初にインストールされたアプリが定義できるのです。つまり、DevTrainerがパーミッションレベルを通常に変更した場合、今後このパーミッションを要求するアプリは、ユーザーによる確認を必要とせず、自動的にアクセスが許可されることになります。
このシナリオは、cwac-securityのgithubにあるこの問題の説明からヒントを得ました。
先手必勝」戦略には危険な結果をもたらすものがあり、その動作を知らないと、開発者は信頼できない入力に基づいてセキュリティ上の判断を下し、意図しないアプリに機密データや保護されたサービスへのアクセスを許してしまう可能性があります。信頼できない入力によるセキュリティ上の判断を避けるための詳細については、当社のプラットフォームをご覧ください。この動作は、Android 5.0(Lollipop)で変更されました。しかし、現在、22%以上のAndroidデバイスがまだ低バージョンのAndroidを実行しているため、アプリで元の動作のリスクを軽減することが重要です。アプリの初回実行時にすでにパーミッションが定義されているかどうかを確認し、その場合は適切な対処をしてセキュリティリスクを解決してください。
頑張ってコーディングして、また来週お会いしましょう
カスタムパーミッションを定義することで、アプリはそのリソースや機能を他のアプリと共有することができます。
https://developer.android.com/guide/topics/permissions/defining.html
始めるのに役立つリソース
Trust Agent:AI - Secure and scale AI-Drive development
AI is writing code. Who’s governing it? With up to 50% of AI-generated code containing security weaknesses, managing AI risk is critical. Discover how SCW's Trust Agent: AI provides the real-time visibility, proactive governance, and targeted upskilling needed to scale AI-driven development securely.
OpenText アプリケーションセキュリティのパワー + Secure Code Warrior
OpenText Application Security and Secure Code Warrior combine vulnerability detection with AI Software Governance and developer capability. Together, they help organizations reduce risk, strengthen secure coding practices, and confidently adopt AI-driven development.
Secure Code Warrior corporate overview
Secure Code Warrior is an AI Software Governance platform designed to enable organizations to safely adopt AI-driven development by bridging the gap between development velocity and enterprise security. The platform addresses the "Visibility Gap," where security teams often lack insights into shadow AI coding tools and the origins of production code.




.png)