
OWASPによる実践的なAndroidセキュリティトレーニングラボ。78のMASVS/MASTGモジュールで、脆弱なアプリ、安全なアプリ、攻撃者アプリをペアにしてモバイルの弱点とその修正方法を実演します。
公式 OWASP プロジェクト — Android 開発者とペンテスター向けのハンズオン OWASP MASVS/MASTG セキュリティトレーニングラボ — ミラーアーキテクチャ: 脆弱 ↔ セキュア ↔ 攻撃者
Android セキュリティ マスタークラスは、公式 OWASP プロジェクトであり、ミラーアーキテクチャを採用して設計されています。Android 開発者とセキュリティ研究者に対して、脆弱性が実際にどのようなものか、そして最新の Android 開発手法を用いて正確にどのように修正するかを教えることを目的としています。
古い Java コードベースの中からバグを探し回る代わりに、このプロジェクトは最先端の技術スタック(Kotlin、Jetpack Compose、MVVM、Material 3)を使用し、大規模にスケール可能な「Package-by-Feature」システムを中心に構成されています。
🌐 OWASP プロジェクトポータル & ドキュメント:
- OWASP プロジェクトページ: https://owasp.org/projects/android-security-masterclass
- ドキュメントポータル: https://owasp.github.io/Android-Security-Masterclass/
- ホワイトペーパー & 78 モジュールマッピングマトリクス: ドキュメントポータルで入手可能です。
graph TD
COMMON("🧱 :common<br/>Shared Data · Theme<br/>Dashboard Metadata")
subgraph FEATURES ["📦 Package-by-Feature (78 Isolated MASWE Modules)"]
direction LR
M1(":features:maswe0001<br/>Private Storage")
M2(":features:maswe0002<br/>External Storage")
M5(":features:maswe0005<br/>Logging Leaks")
MDOT("...<br/>... ")
M78(":features:maswe0078<br/>Privacy")
end
VULN("❌ :app-vulnerable<br/>Thin Shell Orchestrator")
SEC("✅ :app-secure<br/>Thin Shell Orchestrator")
ATK("😈 :app-attacker<br/>Simulated Malware")
COMMON --> FEATURES
FEATURES -- "Insecure Implementation" --> VULN
FEATURES -- "Hardened Implementation" --> SEC
VULN -. "Active Exploit<br/>IPC / Logcat" .-> ATK
classDef common fill:#4A90D9,stroke:#2C5F8A,color:#fff,stroke-width:2px,font-weight:bold
classDef feat fill:#F39C12,stroke:#D35400,color:#fff,stroke-width:2px,font-weight:bold
classDef vuln fill:#E74C3C,stroke:#C0392B,color:#fff,stroke-width:2px,font-weight:bold
classDef secure fill:#27AE60,stroke:#1E8449,color:#fff,stroke-width:2px,font-weight:bold
classDef attacker fill:#8E44AD,stroke:#6C3483,color:#fff,stroke-width:2px,font-weight:bold
class COMMON common
class M1,M2,M5,MDOT,M78 feat
class VULN vuln
class SEC secure
class ATK attackerこのプロジェクトは、合計 80 を超えるモジュールにまたがるハイパーモジュラーアーキテクチャを採用しています:
MasterclassData 高忠実度モデル些細なデータ(「admin:password」など)を使用する他の教育プロジェクトとは異なり、当プロジェクトの漏洩シミュレーションでは規制グレードのペイロードを使用します:
💡 ヒント: 脆弱なアプリまたはセキュアなアプリのダッシュボードにある 「Data Vault」 ボタンをクリックすると、このシミュレートされたデータをすべてデバイス上でライブ表示できます。
OWASP MASVS 標準全体を、8 つのドメインにわたる 78 個の個別モジュールにマッピングしました:
以下のモジュールは、ビジネスロジック、MVI アーキテクチャ、ユニットテスト、および攻撃/防御シミュレーションが完全に実装されています:
-assumenosideeffects)および SecureLog ラッパーによって強化されています。adb backup または Google Drive クラウドバックアップを介した機密データ抽出を実演します。android:allowBackup="false"、dataExtractionRules、および fullBackupContent によって強化されています。(完全な 78 ベクターの内訳については、MkDocs サイトの docs/mapping_matrix.md を参照してください)。
app-vulnerable または app-secure の実行構成を選択し、エミュレーターにデプロイします。Build Variants ツールウィンドウを開き、debug を選択します。アプリを実行し、Logcat を確認します。脆弱なアプリで漏洩が表示されます。release に切り替えます。R8(ProGuard)の縮小が有効になります。app-secure では、すべての重要なログが完全に削除されます!:app-attacker)のセットアップこれらの脆弱性の実際の結果を確認するには、同じデバイス上に :app-vulnerable と一緒に :app-attacker モジュールをインストールします。
graph LR
subgraph VICTIM ["❌ :app-vulnerable"]
direction TB
LOG("📋 Log.d sends PII<br/>to system Logcat")
FP("📂 FileProvider<br/>exported paths")
end
subgraph MALWARE ["😈 :app-attacker"]
direction TB
LE("🔍 LogcatExploitScreen<br/>reads all logs")
ER("📥 ExploitReceiverScreen<br/>steals files via URI")
end
LOG -- "READ_LOGS permission" --> LE
FP -- "content:// URI interception" --> ER
classDef victim fill:#E74C3C,stroke:#C0392B,color:#fff,stroke-width:2px
classDef malware fill:#8E44AD,stroke:#6C3483,color:#fff,stroke-width:2px
class LOG,FP victim
class LE,ER malwareREAD_LOGS 権限の付与(MASWE-0005 用):
デフォルトでは、Android はアプリにシステムログの読み取りを許可していません。悪意のあるアプリが権限を付与された場合(または root 化された/古いデバイス上で)にログを読み取る方法を実演するには、ADB を介してこの権限を手動で付与する必要があります:
adb shell pm grant com.hasantuncay.mobsec.attacker android.permission.READ_LOGS
物理デバイスに関する注意: MIUI、ColorOS などでテストする場合、開発者オプションに移動し、**「USB デバッグ(セキュリティ設定)」**を有効にして、ADB が権限を付与できるようにする必要があります。
このプロジェクトは、厳密に教育目的で作成されています。:app-vulnerable モジュールで実演されている脆弱性は現実のものであり、危険です。:app-vulnerable モジュールのコードを本番環境で使用しないでください。ベストプラクティスについては、常に :app-secure モジュールを参照してください。
コミュニティからの貢献を歓迎します!プルリクエストを開く前に、包括的な コントリビューションガイド をお読みください。プロジェクトの哲学(Package-by-Feature ミラーアーキテクチャ)、コーディング標準、および :features:masweXXXX モジュール内でロジックを生成および実装するためのステップバイステップのプロセスについて説明しています。
プロジェクトリーダー:
コミュニティ & サポート:
| モジュール層 | 役割 | ステータス |
|---|
:common | 基盤。MasterclassData 高忠実度ペイロードジェネレーター、ダッシュボードメタデータ、コア UI テーマ、および汎用ナビゲーションコンポーネントを含みます。 | 基盤 ✅ |
:features:masweXXXX | 78 個の完全に分離された Gradle モジュール(0001 から 0078)。各モジュールには、単一の特定の弱点に対する脆弱なロジックとセキュアなロジックの両方が含まれており、モジュール間のコード漏洩を完全に防止します。 | 78 モジュール生成済み ✅ |
:app-vulnerable | 「シンシェル」オーケストレーターアプリ。78 個すべての機能モジュールから安全でない UI コンポーネントを組み合わせて、OWASP 違反の正確な結果を示します。 | 稼働中 ✅ |
:app-secure | 「シンシェル」オーケストレーターアプリ。最新の標準(Jetpack Security、Tink、SQLCipher、ProGuard)を利用したセキュアな実装を組み合わせます。 | 稼働中 ✅ |
:app-attacker | シミュレートされた悪意のあるサードパーティアプリ。デバイス上で同時に実行されるセカンダリプロセスを介して、ライブ IPC エクスプロイトを実演します。 | 稼働中 ✅ |