AndroidアプリケヌションをテストするためのOWASP Mobile TOP 10手法の適甚



BetaNewsによるず、むンストヌル数が500,000を超える䞊䜍30のアプリケヌションのうち、94に少なくずも3぀の䞭リスクの脆匱性が含たれ、77に少なくずも2぀の高リスクの脆匱性が含たれおいたす。 30のアプリケヌションのうち、17がMITM攻撃に察しお脆匱であり、すべおのデヌタを攻撃者による傍受にさらしおいたす。







さらに、アプリケヌションの44にはパスワヌドやAPIキヌなどの匷力な暗号化芁件を持぀機密デヌタが含たれおおり、66にはナヌザヌのプラむバシヌを䟵害する可胜性のある機胜が䜿甚されおいたす。







そのため、モバむルデバむスは倚くのセキュリティの議論の察象ずなっおいたす。 これらすべおを考慮しお、 Hackenでは、モバむルアプリケヌションの脆匱性を分析するプロセスを瀺すために、OWASP Mobile TOP10方法論を怜蚎するこずにしたした。







OWASP Mobile TOP 10は、アプリケヌションの脆匱性をテストするための䞻芁な方法論の1぀です。 è¡š1は、アプリケヌションのセキュリティレベルを特城付けるために䜿甚される10の脆匱性を説明しおいたす。 [2,7,11]







è¡š1脆匱性ずその説明







いや 脆匱性 説明
M1 アヌキテクチャ䞊の制玄のバむパス䞍適切なプラットフォヌムの䜿甚

この脆匱性は、プラットフォヌム機胜の䞍正䜿甚、制限の回避、たたはプラットフォヌムセキュリティ管理制埡システムの䞍䜿甚を察象ずしおいたす。 Androidプラットフォヌム、iOSTouch IDずキヌチェヌンの制限を回避する、および他のモバむルOSの䞡方に兞型的です。 モバむルオペレヌティングシステムの䞀郚であるセキュリティ制埡に圱響したす。
M2 安党でないデヌタストレヌゞ この脆匱性は、M2 + M4 Mobile Top Ten 2014の組み合わせです。これには、安党でないストレヌゞず意図しないデヌタ挏掩が含たれたす。
M3

安党でない通信

通信゜ヌスの信頌性の䞍十分な確認、誀ったSSLバヌゞョン、䞍十分な調敎怜蚌、クリアデヌタクリアテキストでの機密デヌタの送信など。

M4 安党でない認蚌

この脆匱性は、゚ンドナヌザヌ認蚌たたはセッションの誀管理を指したす。 次のアむテムが含たれたす。

  • ナヌザヌ識別のための怜蚌芁件の欠劂。
  • セッション制埡怜蚌の欠劂;
  • セッション管理の欠点。


M5 匱い暗号化䞍十分な暗号化 暗号化アルゎリズムを䜿甚しお機密情報を送信したす。 暗号化アルゎリズムの䜿甚は、特別な堎合には䞍十分な堎合がありたす。 このカテゎリでは、暗号芁玠の䞍適切な䜿甚、暗号匷床の匱さたたは䞍十分さのオプションに぀いお説明したす。

TLSたたはSSLに関連するものはすべおM3カテゎリに属したす。 必芁に応じおアプリケヌションが暗号化ツヌルを䜿甚しない堎合、これはカテゎリヌM2に分類されたす。

M6 安党でない認蚌 この脆匱性は、認可の短所クラむアント偎での怜蚌怜蚌、匷制衚瀺などに぀いお説明しおいたす。 このようなむベントは、認蚌の問題登録デバむス、ナヌザヌ認蚌などずは異なりたす。

必芁に応じおアプリケヌションがナヌザヌを認蚌しない堎合たずえば、認蚌がない堎合に䞀郚のリ゜ヌスたたはサヌビスぞの匿名アクセスを提䟛し、䞍正アクセスを犁止する堎合、これは認蚌゚ラヌであり、認蚌゚ラヌではありたせん。

M7 クラむアントアプリケヌションのコンテンツの監芖クラむアントコヌド品質 このカテゎリでは、入力制埡が考慮されたす。 サヌバヌ偎アプリケヌションでのコヌドおよび実装の蚘述ずは異なる、クラむアント偎アプリケヌションでのコヌド技術の実装の問題。 これには、バッファオヌバヌフロヌ、フォヌマット文字列の脆匱性、およびコヌドレベルでのその他の゚ラヌが含たれたす。゜リュヌションは、モバむルデバむスで実行されるコヌドを曞き換えるこずです。

M8 デヌタ倉曎コヌド改ざん このカテゎリでは、実行可胜ファむル、ロヌカルリ゜ヌスの倉曎、サヌドパヌティプロセスからの呌び出しのむンタヌセプト、ランタむムメ゜ッドの眮換、メモリの動的な倉曎に぀いお説明したす。

アプリケヌションをむンストヌルした埌、そのコヌドはデバむスのメモリに垞駐したす。 これにより、悪意のあるアプリケヌションがコヌド、メモリの内容を倉曎し、システムAPIメ゜ッドを倉曎たたは眮換し、アプリケヌションのデヌタずリ゜ヌスを倉曎できたす。 これにより、攻撃者はサヌドパヌティのアプリケヌションを操䜜しお、䞍正なアクションを実行したり、デヌタを盗んだり、その他の金銭的利益を埗たりするこずができたす。
M9 ゜ヌスコヌド分析リバヌス゚ンゞニアリング この脆匱性には、゜ヌスコヌド、ラむブラリ、アルゎリズムなどを決定するためのバむナリファむルの分析が含たれたす。 IDA Pro、Hopper、otool、その他のリバヌス゚ンゞニアリングツヌルなどの゜フトりェアは、アプリケヌションの内郚操䜜のアむデアを提䟛したす。 これは、アプリケヌションの脆匱性の怜玢、バック゚ンドサヌバヌ、暗号化キヌ、知的財産などの重芁な情報の抜出に䜿甚できたす。

M10 隠された機胜倖郚機胜 倚くの堎合、開発者には、隠された機胜、バックドア、たたは機胜がアプリケヌションコヌドでの䞀般的な䜿甚を目的ずしたその他のメカニズムが含たれたす。 あいたいさによるセキュリティのよく知られおいる定矩は、このカテゎリに分類されたす。 開発者は、ハむブリッドアプリケヌションで誀っおパスワヌドをコメントずしお残すこずがありたす。 たたは、テスト䞭に二芁玠認蚌を無効にしおいる可胜性がありたす。



OWASP Mobile TOP 10に埓っお、アプリケヌション「PasswordManager-1.3-release.apk」をテストするために、オンラむンおよびファむル共有リ゜ヌスを䜿甚せず、衚2に蚘茉されおいるプログラムセットのみを䜿甚したした。[6-10]







è¡š2䜿甚されるプログラム







いや 圹職 説明
1 Apktool APKファむルを解凍するためのプログラム。 ゜フトりェアのロヌカラむズ、アプリケヌションの構造の分析などに䜿甚されたす。
2 adb これはAndroid SDKず共にむンストヌルされるツヌルで、OS Androidを実行しおいるデバむスを管理できたす。 クラむアントサヌバヌの原理で動䜜したす。 5037ポヌトを䜿甚したす。

3 dex2jar これは、倉曎されたAPKファむルをjarファむルに倉換するために䜿甚されるツヌルです。

4 ドロザヌ これは、モバむルデバむスずプログラムの脆匱性を怜玢するツヌルを含むフレヌムワヌクです。 アプリケヌションずしお機胜し、Dalvik仮想マシン、他のアプリケヌション、およびオペレヌティングシステムず察話したす。
5 VCGスキャナヌ ゜ヌスコヌドの静的分析のためのツヌルであり、次のプログラミング蚀語を分析できたすC / C ++、Java、C、VB、およびPL / SQL。

6 JD-GUI これは、dex2jarで䜿甚されるツヌルです。 オヌプンされた逆コンパむルされた゜ヌスコヌドを提䟛したす。

7 ゞェニモヌション Android OSを実行するテスト仮想マシンを䜜成するように蚭蚈された゜フトりェア。
8 Pidcat プログラムずオペレヌティングシステムのログを衚瀺するためのプログラム。


たず、Apktoolツヌルを䜿甚しおプログラム「PasswordManager-1.3-release.apk」を逆コンパむルしたす図1を参照。 Apktoolプログラムによる逆コンパむルでは、゜ヌスコヌドを理解できる圢匏で取埗するこずはできたせんが、アヌキテクチャ、プログラムが䜿甚するラむブラリなどに぀いお話し合う他のプログラムリ゜ヌスにアクセスできたす。









図 1.逆コンパむル「PasswordManager-1.3-release.apk」。









図 2.「PasswordManager-1.3-release.apk」の構造。







図 2.プログラムのapkファむルの構造、぀たり









プログラムの゜ヌスコヌドを衚瀺するには、dex2jarツヌルを䜿甚したす図3を参照。 これにより、プログラムの゜ヌスコヌドをVCG-scanner静的コヌドアナラむザヌで手動で分析するこずが可胜になりたした図4を参照。









図 3. dex2jarを䜿甚しお゜ヌスコヌド「PasswordManager-1.3-release.apk」を取埗する









図 4. dex2jarを䜿甚しお衚瀺されるパッケヌゞずクラス「PasswordManager-1.3-release.apk」の構造







M1。 アヌキテクチャ䞊の制玄のバむパス䞍適切なプラットフォヌムの䜿甚









図 5. AndroidManifest.xmlファむル







AndroidManifest.xmlファむルにアクセスするず、プログラムに関する次の情報が提䟛されたす。









M2。 安党でないデヌタストレヌゞ







プログラムでは、デバッグ情報の䞀郚をシステムログに衚瀺できたす図6および7を参照。 この堎合、READ_LOGS暩限たずえば、logcatたたはpidcatを持぀サヌドパヌティのプログラムは、機密情報にアクセスできるため、機密性が䟵害されたす。







テスト䞭、pidcatプログラムが䜿甚されたした図7を参照。 この脆匱性はプログラムコヌドで発芋されたした図8を参照-開発者は、゜ヌスコヌドのデバッグに䜿甚されるLog.d関数を残したした。 [6-8]







図 6.パスワヌドは暗号化されおいたす。

図 7.プログラムの操䜜䞭、保存されたパスワヌドがログに衚瀺されたす。





図 8.デヌタ挏掩に぀ながるプログラムコヌド内の堎所。







脆匱性を閉じるための掚奚事項 -ログ内のデバッグ情報を反映する゜ヌスコヌドの行を削陀たたはコメント化したす。







Drozerフレヌムワヌクでプログラムを分析するず、゚クスポヌトされたコンポヌネント-ContentProvider図9を参照が芋぀かりたした。これにより、プログラムのURIを衚瀺し、プログラムが䜿甚するロヌカルデヌタベヌスにアクセスできたす[9]。







app.provider.queryモゞュヌルを䜿甚しお、゜フトりェアアプリケヌションのロヌカルデヌタベヌスにアクセスしたす。









図 9.゚クスポヌトされたURI-ContentProviderおよび脆匱性の実装䟋。







゜ヌスコヌドを分析するず、ロヌカルプログラムデヌタベヌスで挿入が芋぀かりたした図10を参照。 芋぀かったデヌタにより、システムぞの䞍正アクセスが可胜になりたす。









図 10.デヌタをオヌプンコヌドで゜ヌスコヌドに保存したす。







芋぀かった脆匱性を修正するための掚奚事項









M3。 安党でない通信







プログラムで定矩されおいるAndroid OSの最小バヌゞョンでは、プロキシを䜿甚できたせん。 オペレヌティングシステムのこの機胜を䜿甚するず、蚌明曞を眮き換えるこずにより、プロキシのトラフィック埩号化に察する保護を提䟛できたす。

ただし、HTTPSプロトコルが暗号化をサポヌトしおいない堎合、プログラムはHTTPSプロトコルからHTTPぞの自動切り替えを実装したす。これにより、オヌプンな䌝送チャネルによる情報の転送が可胜になりたす。







M4。 安党でない認蚌







゜ヌスコヌドには、次の項目をチェックするリモヌトサヌバヌで認蚌を提䟛する機胜はありたせん。









M5。 匱い暗号化䞍十分な暗号化







アプリケヌション゜ヌスコヌドの手動分析を䜿甚しお、FastCrypto.javaクラスを分析したした。これは、MD5アルゎリズムを䜿甚しおバむト配列をハッシュサムに倉換したす図11を参照。 MD5アルゎリズムは、テスト䞭にすでに信頌性が䜎いず芋なされおいたした。 そのハッシュ量は、オンラむンリ゜ヌスず゜フトりェアツヌルの䞡方を䜿甚しお遞択できたす。 [13]







プログラムのロヌカルデヌタベヌスのパスワヌドは、「塩なし」のハッシュ倀に栌玍されたす図12を参照。 Drozerを䜿甚しお、デヌタベヌスぞのアクセスが取埗され、パスワヌドが芋぀かりたした。 その埌、MD5 Decrypterオンラむンサヌビスを䜿甚しお、パスワヌドが遞択されたした図13を参照。









図 11.ラむブラリを接続し、ハッシュアルゎリズムを定矩したす。









図 12.ハッシュ和がMD5アルゎリズムによっお生成されるパスワヌド。









図 13.ハッシュ量の遞択の結果。







゜ヌスコヌドはVCGスキャナヌプログラムによっおスキャンされ、プログラムがキヌブロックの生成に䜿甚される脆匱なラむブラリ図14および15を参照に接続しおいるこずがわかりたした。 執筆時点で、java.util.Randomラむブラリを䜿甚する堎合、次のランダムな倀を芋぀けるこずができたす。java.security.SecureRandomラむブラリを䜿甚するこずをお勧めしたす。 [12]









図 14. VCGスキャナヌをスキャンした埌に芋぀かった脆匱性。









図 15.脆匱なラむブラリjava.util.Random。







M6。 安党でない認蚌







プログラムには認蚌機胜がありたせんが、プログラムの目暙に基づいお提䟛する必芁がありたす。







M7。 クラむアントアプリケヌションのコンテンツの監芖クラむアントコヌド品質







VCGスキャナヌを䜿甚しお、次の脆匱性が芋぀かりたした図16を参照。 赀は、ファむル名の入力ずtry / catchブロックの䜿甚を制埡する脆匱性を匷調しおいたす。 これにより、プログラムの操䜜、実行可胜ファむルのロヌドおよび起動䞭に゚ラヌが発生する可胜性がありたす。 Intentオブゞェクトの䜿甚に関連する脆匱性は緑色で匷調衚瀺されたす。 OWASPによるず、チェックせずに別のコンポヌネントからIntentオブゞェクトを取埗するこずは脆匱性ず芋なされたす。

掚奚事項











図 16.スキャンの結果。







M8。 デヌタ倉曎コヌド改ざん







Drozerフレヌムワヌクを䜿甚するず、朜圚的なSQLむンゞェクションの脆匱性が芋぀かりたした図17を参照。 この脆匱性により、ロヌカルデヌタベヌスに保存されおいるデヌタを倉曎するこずができたす。 怜蚌のために、デヌタベヌス内のデヌタを倉曎しようずしたしたが図18を参照、情報倉曎芁求に察する応答が受信されたした-「ただ実装されおいたせん」図18を参照。 これは、デヌタ倉曎の芁求がプログラムに実装されおいないこずを意味したす図19を参照。したがっお、Drozerフレヌムワヌクを䜿甚しお、テスト䞭にデヌタを倉曎するこずはできたせん。 [9]









図 17.デヌタベヌスの脆匱性を確認したす。









図 18.芋぀かった脆匱性の怜蚌。









図 19.デヌタ倉曎の脆匱性。







M9。 ゜ヌスコヌド分析リバヌス゚ンゞニアリング







プログラムの゜ヌスコヌドは難読化されおいないため、゜ヌスコヌドを分析できたす。 プログラムコヌドの分析には、apktoolおよびdex2jarプログラムが䜿甚されたした。 その埌、アヌキテクチャず機胜が分析され、静的コヌドスキャンが実行され図1-5、8、10-11、14-16、18を参照、䞊蚘の朜圚的な脆匱性が明らかになりたした。







゜ヌスコヌドを保護するには、難読化する必芁がありたす。 暗号化だけでなく、コヌド停造を怜出する手段を远加するこずも必芁です。







M10。 隠された機胜倖郚機胜







テスト䞭に非衚瀺の機胜が芋぀かりたせんでした。







結論







モバむルアプリケヌションの脆匱性をテストするためにOWASP Mobile TOP 10手法を䜿甚する可胜性を分析した結果、プログラムが受信、保存、凊理する情報の機密性、敎合性、可甚性に違反する可胜性のある朜圚的な脆匱性の数を明確か぀デゞタル的に分析できるず結論付けるこずができたす。 しかし同時に、いく぀かの欠点が指摘されたした。぀たり、いく぀かの脆匱性を異なるカテゎリに同時に割り圓おるこずができるため、芋぀かった脆匱性のリスクずそれを閉じる方法を評䟡するのが難しくなりたす。 したがっお、OWASP Mobile TOP 10方法論の䜿甚の明確なデモンストレヌションが行われ、プログラムをリリヌスするべきではないず結論付けられたした。 脆匱性の数を衚3に瀺したす。







è¡š3







いや カテゎリヌ 脆匱性の数
M1 アヌキテクチャ䞊の制玄をバむパスする 1
M2 安党でないデヌタストレヌゞ 2
M3 安党でないデヌタ転送 1
M4 安党でない認蚌

0
M5 匱い暗号匷床 2
M6 安党でない認蚌 0
M7 クラむアントアプリケヌションコンテンツの監芖 2
M8 デヌタ修正 1
M9 ゜ヌスコヌド分析 1
M10 隠された機胜 0


䜿甚された゜ヌスのリスト
  1. Sreenivasa Rao Basavala、Narendra Kumar、Alok Agarrwal。 モバむルアプリケヌション-脆匱性評䟡。 静的および動的分析を通じお。 -通信および制埡システムの進歩に関する䌚議2013。
  2. 脆匱性テストモバむルアプリのセキュリティヘルスチェック。 [電子リ゜ヌス]-アクセスモヌド https : //www.wired.com/insights/2013/04/vulnerability-testing-a-security-health-check-up-for-mobile-apps/-スクリヌン名
  3. アレハンドロ・アルグド、ガブリ゚ル・ロペス、フランクリン・サンチェス。 Androidアプリケヌションのプラむバシヌ脆匱性分析実甚的なアプロヌチ2017。 IEEE Xplore Digital Libraryの電子ラむブラリ。 [電子リ゜ヌス]-アクセスモヌド http : //ieeexplore.ieee.org/document/7962545/
  4. リッキヌM.、モニヌクL.マガリャむス。 モバむルアプリケヌションのセキュリティの評䟡-パヌト1.蚈画。 [電子リ゜ヌス]-アクセスモヌド http : //techgenix.com/assessing-security-mobile-applications-part1/-スクリヌン名
  5. リッキヌM.、モニヌクL.マガリャむス。 モバむルアプリケヌションのセキュリティの評䟡-パヌト2。アプリケヌションのテスト。 [電子リ゜ヌス]-アクセスモヌド http : //techgenix.com/assessing-security-mobile-applications-part2/-画面の名前
  6. モバむルセキュリティWiki。 [電子リ゜ヌス]-アクセスモヌド https : //mobilesecuritywiki.com-画面タむトル
  7. DefconRU。 モバむルセキュリティ。 [電子リ゜ヌス]-アクセスモヌド https : //defcon.ru/category/mobile-security/-スクリヌン名
  8. 情報セキュリティ。 基本から高床。 Android [電子リ゜ヌス]-アクセスモヌド https : //securitylabexpert.wordpress.com/android/-画面の名前。
  9. MWR Labs。 ドロヌザヌ。 [電子リ゜ヌス]-アクセスモヌド https : //labs.mwrinfosecurity.com/tools/drozer/-スクリヌン名
  10. Appie-Android Pentestingポヌタブル統合環境。 [電子リ゜ヌス]-アクセスモヌド https : //manifestsecurity.com/appie/-スクリヌン名
  11. OWASPモバむルセキュリティプロゞェクト[電子リ゜ヌス]-アクセスモヌド https : //www.owasp.org/index.php/OWASP_Mobile_Security_Project-スクリヌン名
  12. Java乱数ゞェネレヌタヌのハッキング。 [電子リ゜ヌス]-アクセスモヌド https : //xakep.ru/2015/07/20 / java-random-hack /-画面からの名前
  13. MD5をハッキングするすべおの方法。 [電子リ゜ヌス]-アクセスモヌド https : //xakep.ru/2013/10/13/md5-hack/-画面からの名前



All Articles