問題タブ [android-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android セキュリティ - ピンを使用して機密情報を保存する暗号化
私のアプリでは、保存する前に暗号化する必要があり、取得するときに復号化する必要がある共有設定にいくつかのデータを保存しています。
AES-256 暗号化を使用しています。そのために、パスフレーズ/ピンを使用して秘密鍵を生成しています。以下は私のコードスニペットです。
私のアプリに従って、ユーザーに一意のピンを提供するように依頼できます。しかし、アプリは 4.0 からサポートする必要があるため、ピンをキーストアに保存できません。どうすればピンを保存できますか?
android - Android アプリで秘密鍵を保存するのに最適な場所は?
API キー、データベース暗号化キーなどをアプリ コードに格納して、誰もコードを逆コンパイルして取得できないようにするのに最適な場所はどこですか? コードを難読化するためにプロガードを使用しましたが、文字列では機能しませんでした。
android - Google Play Worklight 6.2.0 での OpenSSL の警告
Google Play でアプリを公開していますが、アプリの Cordova バージョンと OpenSSL バージョンに問題があるというメールを受け取りました。WorkLight 6.0.2 の修正プログラムをダウンロードしてアプリに適用し、再構築して Google ストアに再デプロイしました。Cordova の警告は停止しましたが、OpenSSL はまだ残っています。
.apk ファイルに対して grep を実行したところ、次の結果が得られました。
unzip -p myApp.apk | strings | grep "OpenSSL"
と
いくつかの記事を読んで、問題は OpenSSL 1.0.xxx にあると推測し、grep の結果を見ると、2 つの OpenSSL バージョン 1.0.1 と 1.1.0 があります。私のアプリに古い OpenSSL バージョンを使用しているサードパーティ ライブラリがあるかどうかはわかりません。このプロジェクトでは Xtify を使用しています。多分ここに問題がありますか?
スタック オーバーフローには、この OpenSSL の問題に関する別の投稿があったことは知っていますが、worklight + xtify に関するこの問題については誰も投稿していません。
ありがとう!
ssl - Google プレイストアからの警告「X509TrustManager Apache HTTP クライアントの安全でない実装」
次のコードを適用して、サーバーから SSL 証明書を検証し、HTTPS セキュア接続を使用してアプリケーションを実行しました。サーバーには、承認された CA によって発行された証明書が既にあります。
以下は、実装された私のコードのスニペットです..
PlayStore で受け取った警告
「あなたのアプリは、Apache HTTP クライアントで X509TrustManager インターフェースの安全でない実装を使用しているため、セキュリティの脆弱性が生じています。脆弱性の修正期限など、詳細については、この Google ヘルプセンターの記事を参照してください。」
以前、TRUST MANAGER x509 も使用してみましたが、同じ警告が表示されました.プレイストアからこの警告から抜け出すのを手伝ってくれる人はいますか?
android - Safetynet API ヘルパー エラー
私が見つけた最も簡単な方法の 1 つは、実装を非常にシンプルにするセーフティ ネット ヘルパー クラスです。すべてのクラスを safetynetlib からコピーして、コードに追加しました。植え込みの方法に従いましたが、エラーコードが表示されます
final SafetyNetHelper safetyNetHelper = new SafetyNetHelper(BuildConfig.API1);
04-20 22:32:50.950 28741-28741/com.aashish.smart D/SafetyNetHelper: apkDigest:IQUb5ULuwdbqOwpQn3jZev2EGXcjtk/yGYUvk1c64F8= 04-20 22:32:51.028 28741-28741/Google VashtyNetHelper.com.接続されたサービス 04-20 22:32:51.028 28741-28741/com.aashish.smart V/SafetyNetHelper: SafetyNet.API テストの実行 04-20 22:32:54.499 28741-28741/com.aashish.smart D/SafetyNetResponse: decodedJWTPayload json:{"nonce":"tnd1YpjORIX4teJEd7LuigDWNhWkF6s4T7Ay811BxsM=","timestampMs":1461171774655,"apkPackageName":"com.aashish.smart","apkDigestSha256":"IQUb5ULuwdbqOwpQn3jZev2EGXcjtk/yGYUvk1c64F8=","ctsProfileMatch":true,"extension" :"CQ6MIM+qMkMv","apkCertificateDigestSha256":["PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w="]} 04-20 22:32:54.500 28741-28741/com.aashish.smart E/SafetyNetHelper: 無効な apkCertificateDigest、ローカル/予想 =[MIIDizCCAnOgAwIBAgIEPIOxdDANBgkqhkiG9w0BAQsFADB2MQswCQYDVQQGEwJJTjETMBEGA1UECBMKVGFtaWwgTmFkdTEQMA4GA1UEBxMHQ2hlbm5haTEOMAwGA1UEChMFU21hcnQxEzARBgNVBAsTClRlY2hpbmljYWwxGzAZBgNVBAMTEkFhc2hpc2ggVml2ZWthbmFuZDAeFw0xNjA0MTkxMzM2MzdaFw00MTA0MTMxMzM2MzdaMHYxCzAJBgNVBAYTAklOMRMwEQYDVQQIEwpUYW1pbCBOYWR1MRAwDgYDVQQHEwdDaGVubmFpMQ4wDAYDVQQKEwVTbWFydDETMBEGA1UECxMKVGVjaGluaWNhbDEbMBkGA1UEAxMSQWFzaGlzaCBWaXZla2FuYW5kMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnbvJLdKZi8Nf96wNSVdJR/bh7Y0s6jv7AFQGcrR73rMTB/7EJyH9hbl4L5+U1mrfVodM+J3s/A7LD1gXnMwhsV46tV9ZijkVwT9guxXnUaWPSv2khh5tvpJ9Sj9kyUcOyelDz5iIhK5vP2ipx6ktETIeXv97iKKmHp3vJ7/gFAVsVtkIRQ+6hLo25AN+OPZE9qH8TsnCqIK+OSd+bF56/dMlhhE63Sy4ixEKZIC5b3RkUjJbuC67GS7hgq0EwoVwJ1lX99WgoLAYJq7hQm1FB3Ns+x1rkZ5+XYxt9ZCdUJbJQAFa15t9SumHDp3/yB2uaMtvju6xFTpkoaQo6cbaZwIDAQABoyEwHzAdBgNVHQ4EFgQUZnYr1WkTZPKm5/g783K/vDwrr8EwDQYJKoZIhvcNAQELBQADggEBAAx5ToAMW6nlkXwQ5S3oIeQ66TCzBJtLjHQ>IG6eWNkmNZYXuEj14nqWrSM+AniDcW3U/NwROXOERZfvtBiiwuy0Oc8GG31VmYAd6jgdkfsXfd+96wZxqH8PRtq3m1tjXYGb9Kg1CM1oDdN5H6xtqjU24nSpQEWWs6THuWHA1LEsAnnO0JM3lm0ltBOuIGJtWBd5S6tHMgi4U+m1z/oJAW0HAyWwbuwy7/YP1uEKlEEM669bUYG6iQ4dE3cIB5guZF2qMjwPKscW9bRjoviTgJUGmmVRdpd1Dk/OOZFUEK4A+ii5c7SLW2e//QoN3WV30zNHJArCvFfTGRbeZpwOl4Z4=] 04-20 22:32:54.500 28741-28741/com.aashish.smart E/SafetyNetHelper: invalid apkCertificateDigest, response = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w=] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier: JWS メッセージの検証の問題:IG6eWNkmNZYXuEj14nqWrSM+AniDcW3U/NwROXOERZfvtBiiwuy0Oc8GG31VmYAd6jgdkfsXfd+96wZxqH8PRtq3m1tjXYGb9Kg1CM1oDdN5H6xtqjU24nSpQEWWs6THuWHA1LEsAnnO0JM3lm0ltBOuIGJtWBd5S6tHMgi4U+m1z/oJAW0HAyWwbuwy7/YP1uEKlEEM669bUYG6iQ4dE3cIB5guZF2qMjwPKscW9bRjoviTgJUGmmVRdpd1Dk/OOZFUEK4A+ii5c7SLW2e//QoN3WV30zNHJArCvFfTGRbeZpwOl4Z4=] 04-20 22:32:54.500 28741-28741/com.aashish.smart E/SafetyNetHelper: invalid apkCertificateDigest, response = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w =] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier: JWS メッセージの検証の問題:IG6eWNkmNZYXuEj14nqWrSM+AniDcW3U/NwROXOERZfvtBiiwuy0Oc8GG31VmYAd6jgdkfsXfd+96wZxqH8PRtq3m1tjXYGb9Kg1CM1oDdN5H6xtqjU24nSpQEWWs6THuWHA1LEsAnnO0JM3lm0ltBOuIGJtWBd5S6tHMgi4U+m1z/oJAW0HAyWwbuwy7/YP1uEKlEEM669bUYG6iQ4dE3cIB5guZF2qMjwPKscW9bRjoviTgJUGmmVRdpd1Dk/OOZFUEK4A+ii5c7SLW2e//QoN3WV30zNHJArCvFfTGRbeZpwOl4Z4=] 04-20 22:32:54.500 28741-28741/com.aashish.smart E/SafetyNetHelper: invalid apkCertificateDigest, response = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w =] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier: JWS メッセージの検証の問題:応答 = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w=] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier: JWS メッセージの検証の問題:応答 = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w=] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier: JWS メッセージの検証の問題:https://www.googleapis.com/androidcheck/v1/attestations/verify?key=A...................................... .......0 java.io.FileNotFoundException: https://www.googleapis.com/androidcheck/v1/attestations/verify?key=A ....... ......................0 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238) で com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) で com.android.okhttp.internal .huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java) com.aashish.smart.AndroidDeviceVerifier$AndroidDeviceVerifierTask.doInBackground(AndroidDeviceVerifier.java:113) com.aashish.smart.AndroidDeviceVerifier$AndroidDeviceVerifierTask.doInBackground(AndroidDeviceVerifier.java:82) で android.os.AsyncTask$2.call(AsyncTask.java:295) で java.util.concurrent.FutureTask.run(FutureTask.java:237) で android.os. AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) java.lang.Thread.run(Thread.java:818) で
完全なログ: pastebin(dot)com/YXkS7NgW
誰かが私が見つけられないエラーを見つけるのを手伝ってくれますか? または、セーフティネットAPIに取り組むための他のチュートリアルはありますか
android - Android: コンテンツ プロバイダーのセキュリティ
Androidの基本的な知識を学んでいます。今、私は扱っていContentProvider
ます。多くの投稿では、アプリケーション間のデータ共有にはコンテンツ プロバイダーを使用する必要があると述べています。
数日間調査した結果ContentProvider
、Android での使用が非常に便利であることに完全に同意しました。ただし、セキュリティ上の問題があります。
コンテンツ プロバイダーの uri が常にcontent://
先頭にあることは誰もが知っています。そうすることで、いくつかのツール (Total Commander など) を使用して、特定のファイル内の単語を見つけ出しcontent://
、データにアクセスするために必要なすべてを把握することができます。
次に、それを使用して別のアプリケーションのデータにアクセスするアプリケーションを作成できますuri
。
ContentProvider
このセキュリティ上の問題の発生を防ぐために使用されているものを見逃しましたか?
追加 1:
.apk
ファイルからソースに変換できることがわかっています。uri
そのようにして、ハッカーはデータへのアクセスに使用されるものを把握できます。
数時間調査した結果、パーミッション (readPermission
およびwritePermission
) を設定できることがわかりましたが、ハッカーはそれがどこにあるかを正確に知ることができ、アプリにパーミッションを追加してアプリのデータにアクセスし続けることができます。
を使用して、特定のアプリがデータにアクセスするのを非表示にしたり、許可したりする方法はありますContentProvider
か?
どんな助けでも大歓迎です。前もって感謝します!