スマートフォンアプリケーション診断
スマートフォンアプリケーション診断
iOS/Androidなどのスマートフォンアプリケーションにおけるセキュリティ上の意味を持つ事象(脆弱性)を精緻かつ網羅的に探索しリスクを評価します。
把握した個々の脆弱性は全て詳細に解析した上で国際基準 (CVSS 3) によるリスク評価を行ない、分かりやすい再現例および対策を立案した上でご報告いたします。
また、リスクが高いと考えられる脆弱性については報告書の完成を待たずに一早くお伝えいたします。
サービス特徴
対象のスマートフォンアプリケーションに対しリバースエンジニアリングによる静的解析と、診断環境における内部状態解析・通信解析・メモリ解析・ストレージ解析・IPC解析などの動的解析とを併用し、脆弱性を探索しリスク評価を行ないます。診断においては、Secure Hattersのエンジニアが世界に先駆けて公開した対難読化耐性の高いアプリ自動静的解析ツール (trueseeing) を始め、対象の性格によりツールを適宜作成します。
現実的な脅威想定による深く精緻な診断
Secure Hattersの診断では攻撃者が端末の完全なコントロールを持っている前提のもと、脆弱性を深いレベルで精緻に探索します。したがって内部状態の精緻な追跡はもちろん、Keychainなどのセキュアストレージ領域も検証します。また診断にあたりrooted端末やjailbroken端末はほぼ介在しないため、不正端末検知などの防御機構が組込まれている対象においても難なく診断可能です。
またSecure Hattersの診断は対象のバイナリパッケージのみで実行できます。特にiOSアプリケーション診断においては、Ad-hoc配信であっても開発チームへの登録は一切不要です。App Store/Testflight/Google Play/DeployGateなどの配信機構を使用している場合でもテスターとしてご登録いただくだけでほとんどの場合診断可能です。
広い対応範囲
お客様のアプリケーションがiOS/Androidネイティブアプリケーションでなくとも問題ありません。React NativeなどによるHTML5 Single Page Applicationはもちろん、Unity・Xamarin・SMC・Adobe AIR・LLVM bitcodeなどでも、徹底的にリバースエンジニアリングを行なうことで深いレベルの診断ができます。Secure Hattersのエンジニアは全て診断だけでなく開発にも精通しているため、プラットフォーム・開発言語・開発手法が問題になることはまずありません。
世界レベルの脆弱性診断基準
Secure Hattersが提供する診断サービスは経済産業省「情報セキュリティサービス基準」に準拠しています。また脆弱性診断基準はOWASP Top 10などが提供する視点を取り入れつつ継続的に見直しています。OWASPとはサイバーセキュリティ向上を目指す慈善的非営利団体で、Webなど各領域における国内外のセキュリティ研究者が最善の集合知を提供しています。このため、Secure Hattersの診断では脆弱性は世界レベルの基準に基づいてより公正に評価されます。
診断項目
スマートフォンアプリケーション診断における診断項目の一部を示します。
プラットフォームの不適切な使用 (M1 - Improper Platform Usage)
診断項目 | 診断内容 |
---|---|
デバッグ可能である問題 | 対象に対しデバッガを接続可能であることの立証 |
プライバシーの懸念 | 対象による個人情報の取得および外部送信に相当する事案の立証 |
非ユニークなアクション名によるコンポーネントの公開 (Android) |
対象が公開するコンポーネントに含まれるIntentFilterのアクション名がReversed FQDNでないことの立証 |
不適切なパーミッション宣言 (Android) |
対象が持つ機能セットに似わないパーミッションの宣言もしくは取得の立証 |
WebViewの安全性 (Android; API<17) |
対象が使用しているWebViewにおいてsetJavaScript(true)およびaddJavaScriptInterfaceの併用を立証 |
安全でないストレージ (M2 - Insecure Data Storage)
診断項目 | 診断内容 |
---|---|
フルバックアップ機能の検出 | 対象によるフルバックアップ機能相当の許可を立証 |
機密情報を含むログ出力 | 対象によるログ出力に機密情報が含まれることの立証 |
不適切なファイルパーミッション (Android) |
対象によるWorld readable/writableなファイル作成の立証 |
安全でない通信 (M3 - Insecure Communication)
診断項目 | 診断内容 |
---|---|
TLS Interception | 対象がTLS証明書の妥当性を独自に検証しないことの立証 |
TLSサーバ証明書検証不備 | 対象によるTLS証明書検証ロジックの開放的オーバライドを立証 |
平文通信の検出 | 対象における平文通信の存在を立証 |
汚染可能なWebView | 対象が持つ各WebViewにおいてTLS interception・TLSサーバ証明書検証不備・平文通信のいずれかを立証 |
App Transport Securityの欠如 (iOS) |
対象によるApp Transport Securityの明示的無効化を立証 |
不適切な認証 (M4 - Insecure Authentication)
診断項目 | 診断内容 |
---|---|
認証バイパス | 対象の不正操作あるいは環境汚染によって認証機能が回避できることの立証 |
長期認証情報の自動送信 | 対象によるパスワードなど長期認証情報における自律的再送信の存在を立証 |
固定認証情報の検出 | 対象におけるID/パスワードなど固定認証情報の存在立証 |
ログアウト機構の欠如 | 対象におけるログアウト機能の不在あるいは機能的無効性の立証 |
安全でない暗号系 (M5 - Insufficient Cryptography)
診断項目 | 診断内容 |
---|---|
データ保護の欠如 | 本来は保護されるべきデータに対し、対象がセキュアストレージへの格納・適切な暗号化のいずれも行なっていないことの立証 |
暗号の安全性: 固定キーの使用 | 対象が暗号パラメータに固定値を使用していることの立証 |
暗号の安全性: ECBモードの使用 | 対象がECBモードの暗号系を使用する各場合において、正当な理由が存在しないことの立証 |
暗号の安全性: バーナム暗号系の検出 | 対象が完全にランダムでない鍵を使用してバーナム暗号を使用していることの立証 |
不適切な認可 (M6 - Insecure Authorization)
診断項目 | 診断内容 |
---|---|
権限外の操作 | 対象の不正操作あるいは環境汚染によって本来のユーザ権限を越えるアクセスができることの立証 |
クライアントによる認可制御 | 対象がクライアントである場合、認可フローにおいて対象が主導権を持つことの立証 |
クライアントコード品質の問題 (M7 - Client Code Quality)
診断項目 | 診断内容 |
---|---|
Client-side Cross-site Scripting | 対象の不正操作あるいは環境汚染によって、対象が任意JavaScriptを実行することの立証 |
Client-side SQL Injection | 対象の不正操作あるいは環境汚染によって、対象が任意SQLを実行することの立証 |
耐タンパ性の問題 (M8 - Code Tampering)
診断項目 | 診断内容 |
---|---|
不正端末検知機構の欠如 | 対象がrooted/jailbroken環境あるいはエミュレータ/シミュレータ環境で挙動変化を起こさないことの立証 |
改竄検知機構の欠如 | 対象を些細に改竄した際に挙動変化を起こさないことの立証 |
リバースエンジニアリング耐性の問題 (M9 - Reverse Engineering)
診断項目 | 診断内容 |
---|---|
難読化の欠如 | 対象の静的解析において難読化措置が不在であることの立証 |
隠し機能の発見 (M10 - Extraneous Functionality)
診断項目 | 診断内容 |
---|---|
隠し機能の発見 | 対象が隠し機能を持つことの立証 |
テスト機能の発見 | 対象がテスト用と考えられる隠し機能を持つことの立証 |
不適切な依存関係 | 対象が機能に似わないライブラリへ依存していることの立証 |