お問い合わせ

脆弱性?脆弱性診断?セキュリティの専門家が徹底解説セキュリティ対策の疑問
すべて解決!

セキュリティの基本から脆弱性診断の深掘りまで、このシリーズがあなたのセキュリティ対策の疑問を専門家がわかりやすく徹底的に解説し解消します。
mv-image
セキュリティの基本から脆弱性診断の深掘りまで、このシリーズがあなたのセキュリティ対策の疑問を専門家がわかりやすく徹底的に解説し解消します。
problem015

023

スマートフォンアプリで作られがちな脆弱性とその対策

parson

K.H.

2024年12月9日

スマートフォンアプリはオフライン、オンライン双方での動作や他アプリとの連携が可能なため、Webアプリケーションとは異なる固有の脆弱性が存在します。本記事ではスマートフォンアプリで作り込まれがちな脆弱性の具体例を挙げ、そのような脆弱性を未然に防ぐためのポイントを解説します。

 

スマートフォンアプリ特有のセキュリティリスク

スマートフォンアプリは多様なセキュリティリスクを抱えています。例えばスマートフォンは持ち運び前提のデバイスであるため、物理的な紛失や盗難が発生するリスクがあります。アプリ内に重要なデータが保存されている場合、紛失時に悪意のある第三者によってデータが窃取されるリスクがあり、さらに、保存されたデータが暗号化されていなかった場合、容易に重要情報が漏洩してしまいます。

他にも、アプリは権限設定により位置情報やカメラ、連絡先などスマートフォンの多くの便利な機能を使うことができますが、過剰な権限設定がされている場合にセキュリティリスクが存在します。例えば、アプリに位置情報を使用する機能がないにもかかわらず権限が設定されていると、意図せずユーザーの位置情報が漏洩する可能性があります。また、ユーザーは過剰な権限設定に不信感を抱くかもしれません。

このようなセキュリティリスクが顕在化するとユーザーの信頼や、金銭的な損失にも繋がる可能性があります。セキュリティリスクはアプリの脆弱性に起因するため、アプリに脆弱性を作り込まないことが重要です。

 

作り込まれやすい脆弱性とその対策

ここではスマートフォンアプリで作り込まれやすい脆弱性とその対策を大きく5つに分けて解説します。

データの保存方法に関する脆弱性

アプリで使用するデータはスマートフォン内のアプリ専用の領域に保存することができます。このデータが適切に暗号化されていないと、第三者によってデータが漏洩されるリスクがあります。例えば、ユーザーのログイン情報をアプリ専用の領域に平文※1で保存している場合、ログイン情報が漏洩した際にアカウントを乗っ取られる可能性があります。

>   対策
アプリ専用の領域に保存するデータは適切に暗号化することが重要です。また、暗号化には「CRYPTREC暗号リスト※2」に記載のアルゴリズムのように、強度が保証されたアルゴリズムを使用してください。もしくは、スマートフォン内部にデータを保存せず、サーバ側でデータ保存することも対策になります。

※1  平文:暗号化されていないデータや文字列のこと。
※2  CRYPTREC暗号リスト:電子政府における調達のために参照すべき暗号のリスト。詳細はこちらからご覧になれます。

 

ログの出力内容に関する脆弱性

アプリが出力するログはツールを使用することでリアルタイムに取得できるため、出力内容を適切に管理していないと情報が漏洩するリスクがあります。ユーザーの入力情報やセッション情報、アカウント情報など機微な情報や、デバッグ情報、エラー情報がログに出力されていると、悪意のあるアプリや第三者によって、情報が漏洩されるリスクがあります。アプリの開発中であればデバッグ情報やエラー情報を詳細に出力することは問題ありませんが、完成したアプリをリリースする際にはアプリが出力するログの内容を見直す必要があります。

>   対策
リリース版のアプリのログには機微な情報や、デバッグ情報、エラー情報は出力しないようにすることを推奨します。そういった情報を出力していない場合でも、不要な情報が出力されていないか、確認することが重要です。

 

リバースエンジニアリングに関する脆弱性

アプリをリバースエンジニアリングすることで、ソースコードや設定ファイルのようなリソースから情報を読み取ることが可能です。例えばソースコードに暗号鍵や開発環境の情報がハードコードされていると、暗号化されたデータが解析されたり、開発環境へ攻撃されたりするリスクが高まります。また、SNSでこのような管理不備に関する情報が拡散されると、企業が社会的信用を失うリスクも考えられます。

>   対策
アプリのリソースには重要情報や開発情報を含まないようにします。基本的に、読み取られると困る情報はリソースで保持せず、サーバ側で管理することを推奨します。また、副次的な対策としてソースコードを難読化するソフトウェアを使用して難読化することで、リバースエンジニアリングによる解析を困難にすることができます。

脆弱なフレームワークの使用

アプリを開発する上でフレームワークを使用する機会が多くあります。アプリで使用されるフレームワークはリバースエンジニアリングによって調べることができるため、フレームワークに既知の脆弱性が存在していると、脆弱性を悪用されるリスクがあります。特に、古いフレームワークは脆弱性が修正されないまま放置されていることもあるので、最新のフレームワークを使用することが重要です。

>   対策
アプリで使用しているフレームワークを把握し、適切に管理することが必要です。また、現在使用しているフレームワークに脆弱性が存在しない場合でも、将来的に脆弱性が発見される可能性があるため、定期的にアップデートすることが重要です。

過剰な権限の要求

アプリで使用するスマートフォンの機能が過剰な場合、ユーザーに不信感を与える可能性があります。例えば、アプリが位置情報の権限を要求しているにも関わらず、アプリに位置情報を使用する機能が見られない場合、ユーザーはアプリが見えないところで外部に位置情報を送信していると疑うかもしれません。

>   対策
アプリが要求する権限は必要最小限に設定することが望ましいです。不要な権限は設定しないようにすることを推奨します。

 

スマートフォンアプリの開発において、セキュリティリスクへの対策は利便性やデザインと同等に重要です。ユーザーからの信頼を守るために一つ一つのリスクと向き合い、対策を講じる必要があります。アプリに脆弱性がないか定期的に確認することはセキュリティリスクをなくすために有効であり、すべてのアプリ開発において実施すべき重要なプロセスです。

 

お問い合わせ