SDK が強化されていない場合、どのようなセキュリティ リスクが発生しますか?
1. 競合他社や悪意のある当事者が内部実装の詳細や内部呼び出しプロセスを覗くのは簡単で、個人データが漏洩する可能性もあります
Androidプラットフォーム SDK は非常に大きく、一部は Java 言語で書かれており、簡単に逆コンパイルできます。単純な難読化では内部実装の詳細が公開される可能性がありますが、SDK 内のプライベート データが漏洩する可能性が高くなります。これらの内容が基幹技術の実装方法を明らかにするものであれば、基幹技術の漏洩に等しい。
2. 悪意のある広告や悪意のあるコードは、悪意のある当事者によってバイトコード インジェクションなどの手段を通じて埋め込まれ、再パッケージ化されてリリースされます。
SDK の特殊性により、SDK とは異なります。アプリ このような署名検証ロジックがあるため、悪意のある人が SDK に悪意のあるコードや悪意のある広告を埋め込んで再リリースすると、検出が困難になり、開発者のブランド イメージや評判に重大な影響を及ぼします。
3. クラックされた者がキーロジックを回避し、経済的損失を引き起こす
SDK に決済機能がある場合、悪意のある者が決済ロジックを解析し発見することで、サーバー側の検証が適切に行われていない場合、悪意のある攻撃者が AOP を通じてこれらの支払いロジックを削除すると、有料サービスが無料で利用できることになります。
4. SDK 自体に脆弱性がある可能性があり、悪意のある当事者によって簡単に悪用される可能性があります。
SDK 開発者は、開発中に機能の実装に重点を置くことがよくあります。セキュリティは一般に、あまり真剣に受け止められていないため、開発する SDK に脆弱性がないことを確認するのは困難です。したがって、SDK にセキュリティ上の脆弱性があり、それらの脆弱性が悪意のある攻撃者によって知られ、悪用されると、いつ爆発するかわからない地雷を敷設したようなものになります。 SDK 開発者の評判は、データとプライバシーのセキュリティに対する脅威によって影響を受けるだけでなく、問題が発生した場合には金銭的補償の責任を負う可能性もあります。
解決方法
上記のセキュリティ リスク分析から、問題の核心は、悪意のあるユーザーが SDK の実装ロジックを簡単に入手できることであることがわかります。 。したがって、開発者は次の保護措置を講じることをお勧めします:
1. 主要データの変更はサーバー側の検証に合格する必要があります: たとえば、上記の支払い関連ロジックでは、残高や残高に関係するデータの変更は、支払い金額を最初に渡す必要があります サーバーは検証し、結果をクライアントに同期します;
2. キー ロジックはネイティブ層に実装されます: Java 層のいくつかのキー ロジックは JNI 層に転送され、 ;
3. 文字列の暗号化: コード内の文字列、特に機密情報を含む文字列は、実行時に暗号化および復号化する必要があります。
しかし、上記の点を達成するだけでは十分ではなく、一般の開発者の妨げになるだけです。私たちが一生懸命開発した SDK がプロのクラッカーの手に渡って大砲の餌となり、経済的損失を招く可能性があります。
したがって、Yidun の SDK 強化サービスなどのサードパーティのセキュリティ サービスにアクセスすることをお勧めします。
Yidun SDK 強化の概要
Yidun SDK 強化を紹介する前に、まず、現在市場のほとんどの開発者が使用している難読化手法である Proguard を紹介しましょう。 Proguard は Android プラットフォームで最も広く使用されている難読化であり、抽象構文ツリーを通じて構文レベルから処理されるため、処理されたコードが読みにくく、理解しにくくなっています。以下に示すように:
ただし、クラス名とメソッド名を「a,b,c」などの意味のないランダムな文字列に変更すると、改善される可能性があります。クラッカーが読んで理解するにはコストがかかりますが、明らかにその効果は非常に限られています。クラッカーにとって、コードの意図を理解できるようになるのは時間の問題です。
それでは、Yidun の SDK 強化ソリューションとは何でしょうか?次にご紹介するのは、
1. Yidun SDK 強化 VMP ソリューション
保護対象クラスのメソッドを抽出し、抽出した命令を暗号化するランタイムです。カスタム仮想マシンを通じて実行されるため、クラッカーが元のコード ロジックを取得することは不可能になります。
効果は次のとおりです:
##2.Yidun SDK 強化 Java2c ソリューション
このソリューション保護対象クラスのメソッドをネイティブ化すると同時に、元の関数実装ロジックをネイティブ層に対応するC/Cコードに変換し、実行時に対応するネイティブ関数を直接実行します。効果は次のとおりです。#強化前の例
# #強化後の例
静的解析の観点から見ると、Proguard 難読化と比較すると、強化されたメソッドがネイティブ化されており、Java 層では実装ロジックが完全に見えないことがわかります。 Java層本来の機能ロジックをJNI層のC/Cコード実装に変換すると同時に、生成されるネイティブ層SOを暗号化することで、あらゆる面でクラッキング難易度を向上させています。
(注: 上の図でより明確に見るために、強化されたメソッドは対応するネイティブ層実装に変換されており、生成されたネイティブ層 SO は暗号化されていません。実際には、Yidun SDK の強化された Java2c ソリューションは、暗号化用のネイティブ層 SO)
以上がSDK が強化されていない場合、セキュリティ リスクは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。