The OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.
107 matches across 13 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | tests/android/MASVS-PLATFORM/MASTG-TEST-0028.md | 285 | com.android.internal.os.ZygoteInit.main(ZygoteInit.java) |
| CRITICAL | demos/android/MASVS-STORAGE/MASTG-DEMO-0060/output.json | 67 | "com.google.crypto.tink.integration.android.SharedPrefKeysetWriter.write(SharedPrefKeysetWriter.java:70)", |
| CRITICAL | demos/android/MASVS-STORAGE/MASTG-DEMO-0060/output.json | 68 | "com.google.crypto.tink.KeysetHandle.writeWithAssociatedData(KeysetHandle.java:869)", |
| CRITICAL | demos/android/MASVS-STORAGE/MASTG-DEMO-0060/output.json | 69 | "com.google.crypto.tink.KeysetHandle.write(KeysetHandle.java:858)", |
| CRITICAL | demos/android/MASVS-STORAGE/MASTG-DEMO-0060/output.json | 105 | "com.google.crypto.tink.integration.android.SharedPrefKeysetWriter.write(SharedPrefKeysetWriter.java:70)", |
| CRITICAL | demos/android/MASVS-STORAGE/MASTG-DEMO-0060/output.json | 106 | "com.google.crypto.tink.KeysetHandle.writeWithAssociatedData(KeysetHandle.java:869)", |
| CRITICAL | demos/android/MASVS-STORAGE/MASTG-DEMO-0060/output.json | 107 | "com.google.crypto.tink.KeysetHandle.write(KeysetHandle.java:858)", |
| CRITICAL | …mos/android/MASVS-PLATFORM/MASTG-DEMO-0082/output.json | 7 | com.android.webview.chromium.ContentSettingsAdapter.setDomStorageEnabled(Native Method) |
| CRITICAL | …mos/android/MASVS-PLATFORM/MASTG-DEMO-0082/output.json | 20 | com.android.webview.chromium.e.deleteAllData(Native Method) |
| CRITICAL | …oid/MASVS-CODE/MASTG-DEMO-0101/MastgTest_reversed.java | 56 | at jadx.core.dex.visitors.regions.SwitchOverStringVisitor.restoreSwitchOverString(SwitchOverStringVisitor.java:109) |
| CRITICAL | …oid/MASVS-CODE/MASTG-DEMO-0101/MastgTest_reversed.java | 57 | at jadx.core.dex.visitors.regions.SwitchOverStringVisitor.visitRegion(SwitchOverStringVisitor.java:66) |
| CRITICAL | …oid/MASVS-CODE/MASTG-DEMO-0101/MastgTest_reversed.java | 58 | at jadx.core.dex.visitors.regions.DepthRegionTraversal.traverseIterativeStepInternal(DepthRegionTraversal.java:77) |
| CRITICAL | …oid/MASVS-CODE/MASTG-DEMO-0101/MastgTest_reversed.java | 59 | at jadx.core.dex.visitors.regions.DepthRegionTraversal.traverseIterativeStepInternal(DepthRegionTraversal.java:82) |
| CRITICAL | …oid/MASVS-CODE/MASTG-DEMO-0101/MastgTest_reversed.java | 60 | at jadx.core.dex.visitors.regions.DepthRegionTraversal.traverseIterative(DepthRegionTraversal.java:31) |
| CRITICAL | …oid/MASVS-CODE/MASTG-DEMO-0101/MastgTest_reversed.java | 61 | at jadx.core.dex.visitors.regions.SwitchOverStringVisitor.visit(SwitchOverStringVisitor.java:60) |
| CRITICAL | demos/android/MASVS-PRIVACY/MASTG-DEMO-0081/output.json | 30 | "com.google.firebase.analytics.FirebaseAnalytics.logEvent(Native Method)", |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 27 | 03-26 11:33:23.415 2340 2407 D StrictMode: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Continua |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 35 | 03-26 11:33:23.415 2340 2407 D StrictMode: at androidx.compose.ui.input.pointer.SuspendingPointerInputModifierNodeImp |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 39 | 03-26 11:33:23.415 2340 2407 D StrictMode: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTra |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 40 | 03-26 11:33:23.415 2340 2407 D StrictMode: at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTra |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 41 | 03-26 11:33:23.415 2340 2407 D StrictMode: at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitP |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 42 | 03-26 11:33:23.415 2340 2407 D StrictMode: at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPat |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 46 | 03-26 11:33:23.415 2340 2407 D StrictMode: at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(Andr |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 55 | 03-26 11:33:23.415 2340 2407 D StrictMode: at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 56 | 03-26 11:33:23.415 2340 2407 D StrictMode: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWi |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 58 | 03-26 11:33:23.415 2340 2407 D StrictMode: at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java |
| CRITICAL | …os/android/MASVS-RESILIENCE/MASTG-DEMO-0037/output.txt | 85 | 03-26 11:33:23.415 2340 2407 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) |
| CRITICAL | demos/android/MASVS-CRYPTO/MASTG-DEMO-0072/output.txt | 14 | kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) |
| CRITICAL | demos/android/MASVS-CRYPTO/MASTG-DEMO-0072/output.txt | 29 | kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) |
| CRITICAL | demos/android/MASVS-CRYPTO/MASTG-DEMO-0072/output.txt | 45 | kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) |
| CRITICAL | demos/android/MASVS-CRYPTO/MASTG-DEMO-0072/output.txt | 61 | kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .github/workflows/check-duplicate-ids.yml | 77 | // Step 1: Try to clean up existing comments |
| LOW | .github/workflows/check-duplicate-ids.yml | 111 | // Step 2: Check if we need to post new notifications |
| LOW | .github/workflows/check-duplicate-ids.yml | 119 | // Step 3: Post notifications for each duplicate |
| LOW | …SVS-STORAGE/MASTG-DEMO-0019/decompiled-o1-review.swift | 4 | // Step 1: Retrieve the documents directory URL |
| LOW | …SVS-STORAGE/MASTG-DEMO-0019/decompiled-o1-review.swift | 6 | // Step 2: Create a file URL for "secret.txt" in the documents directory |
| LOW | …SVS-STORAGE/MASTG-DEMO-0019/decompiled-o1-review.swift | 8 | // Step 3: Define the content to write to the file |
| LOW | …SVS-STORAGE/MASTG-DEMO-0019/decompiled-o1-review.swift | 12 | // Step 4: Write the content to the file |
| LOW | …SVS-STORAGE/MASTG-DEMO-0019/decompiled-o1-review.swift | 14 | // Step 5: Set the 'isExcludedFromBackup' attribute to true |
| LOW | …SVS-STORAGE/MASTG-DEMO-0019/decompiled-o1-review.swift | 18 | // Step 6: Log a success message |
| LOW | …SVS-STORAGE/MASTG-DEMO-0019/decompiled-o1-review.swift | 21 | // Step 7: Log an error message if an exception occurs |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0014/MastgTest.swift | 7 | // Step 1: Use a hardcoded ECDSA P-256 private key (32 bytes for P-256) in bytes |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0014/MastgTest.swift | 26 | // Step 2: Sign the data with the hardcoded private key |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0014/MastgTest.swift | 32 | // Step 3: Verify the signature with the public key |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0014/decompiled-o1-review.swift | 6 | // Step 1: Load P256 Private Key from Embedded Data |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0014/decompiled-o1-review.swift | 19 | // Step 2: Extract Public Key |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0014/decompiled-o1-review.swift | 22 | // Step 3: Create Sample Data |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0014/decompiled-o1-review.swift | 29 | // Step 4: Sign the Data |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0014/decompiled-o1-review.swift | 32 | // Step 5: Verify the Signature |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0014/decompiled-o1-review.swift | 35 | // Step 6: Convert Keys and Signature to Hex Strings |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0014/decompiled-o1-review.swift | 41 | // Step 7: Construct an Output Message |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0014/decompiled-o1-review.swift | 48 | // Step 8: Update SwiftUI State Variable |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0013/MastgTest.swift | 7 | // Step 1: Use a hardcoded RSA private key (in DER format) |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0013/MastgTest.swift | 80 | // Step 2: Sign the data with the hardcoded private key |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0013/MastgTest.swift | 94 | // Step 3: Verify the signature with the public key |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0013/decompiled-o1-review.swift | 6 | // Step 1: Load RSA Private Key from Embedded Data |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0013/decompiled-o1-review.swift | 35 | // Step 2: Extract Public Key |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0013/decompiled-o1-review.swift | 42 | // Step 3: Create Sample Data |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0013/decompiled-o1-review.swift | 49 | // Step 4: Sign the Data |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0013/decompiled-o1-review.swift | 61 | // Step 5: Verify the Signature |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0013/decompiled-o1-review.swift | 68 | // Step 6: Convert Keys and Signature to Hex Strings |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0013/decompiled-o1-review.swift | 77 | // Step 7: Construct an Output Message |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0013/decompiled-o1-review.swift | 84 | // Step 8: Update SwiftUI State Variable |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0011/MastgTest.swift | 7 | // Step 1: Generate an RSA key pair with a 1024-bit key size |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0011/MastgTest.swift | 48 | // Step 2: Sign the data with the private key |
| LOW | demos/ios/MASVS-CRYPTO/MASTG-DEMO-0011/MastgTest.swift | 62 | // Step 3: Verify the signature with the public key |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0018/decompiled-o1-review.swift | 6 | // Step 1: Define the key and input text |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0018/decompiled-o1-review.swift | 10 | // Step 2: Convert key and input text to Data |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0018/decompiled-o1-review.swift | 17 | // Step 3: Set up the output buffer |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0018/decompiled-o1-review.swift | 21 | // Step 4: Perform encryption |
| LOW | …ASVS-CRYPTO/MASTG-DEMO-0018/decompiled-o1-review.swift | 43 | // Step 5: Check the result and return encrypted data |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | techniques/ios/MASTG-TECH-0133.md | 32 | $ dependency-check --enableExperimental -f SARIF --nvdApiKey <YOUR-API-KEY> -s Package.resolved |
| HIGH | techniques/ios/MASTG-TECH-0133.md | 32 | $ dependency-check --enableExperimental -f SARIF --nvdApiKey <YOUR-API-KEY> -s Package.resolved |
| HIGH | techniques/ios/MASTG-TECH-0133.md | 38 | $ dependency-check --enableExperimental -f SARIF --nvdApiKey <YOUR-API-KEY> -s Podfile.lock |
| HIGH | techniques/ios/MASTG-TECH-0133.md | 38 | $ dependency-check --enableExperimental -f SARIF --nvdApiKey <YOUR-API-KEY> -s Podfile.lock |
| HIGH | techniques/ios/MASTG-TECH-0133.md | 44 | $ dependency-check --enableExperimental -f SARIF --nvdApiKey <YOUR-API-KEY> -s Cartfile.resolved |
| HIGH | techniques/ios/MASTG-TECH-0133.md | 44 | $ dependency-check --enableExperimental -f SARIF --nvdApiKey <YOUR-API-KEY> -s Cartfile.resolved |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …b/instructions/mastg-mitmproxy-scripts.instructions.md | 64 | except Exception: |
| MEDIUM | .github/skills/mastg-assign-ids/scripts/fix_ids.py | 33 | print(f"Error: expected OLD=NEW, got: {arg}", file=sys.stderr) |
| MEDIUM | …SVS-STORAGE/MASTG-DEMO-0019/decompiled-o1-review.swift | 22 | print("Error creating file: \(error)") |
| LOW | demos/android/MASVS-PLATFORM/MASTG-DEMO-0030/server.py | 16 | except Exception as e: |
| LOW | src/scripts/tools_healthcheck.py | 15 | except Exception: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …0x04e-Testing-Authentication-and-Session-Management.md | 136 | {"sub":"1234567890","name":"John Doe","admin":true} |
| LOW | …b/instructions/mastg-mitmproxy-scripts.instructions.md | 52 | "name": "John Doe", |
| LOW | …LATFORM/MASTG-DEMO-0097/MastgTestWebView_reversed.java | 94 | editor$iv.putString(HintConstants.AUTOFILL_HINT_NAME, "John Doe").putString(NotificationCompat.CATEGORY_EMAIL, " |
| LOW | …oid/MASVS-PLATFORM/MASTG-DEMO-0097/MastgTestWebView.kt | 199 | putString("name", "John Doe") |
| LOW | …/MASVS-PRIVACY/MASTG-DEMO-0009/MastgTest_reversed.java | 38 | final Map SENSITIVE_DATA = MapsKt.mapOf(TuplesKt.to("precise_location_latitude", "37.7749"), TuplesKt.to("precis |
| LOW | …mos/android/MASVS-PRIVACY/MASTG-DEMO-0009/MastgTest.kt | 20 | "name" to "John Doe", |
| LOW | …MASVS-PRIVACY/MASTG-DEMO-0009/mitm_sensitive_logger.py | 8 | "name": "John Doe", |
| LOW | techniques/android/MASTG-TECH-0100.md | 20 | "name": "John Doe", |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | .github/workflows/check-duplicate-ids.yml | 38 | # Create a file with the list of new files in this PR |
| MEDIUM | src/scripts/tools_healthcheck.py | 30 | # Create the markdown table |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | .github/PULL_REQUEST_TEMPLATE.md | 28 | Undisclosed use of AI tools will result in the PR being closed. Large rewrites or bulk changes generated by AI require e |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .github/workflows/codeql-analysis.yml | 1 | # For most projects, this workflow file will not need changing; you simply need |
| LOW | .github/workflows/codeql-analysis.yml | 61 | |
| LOW | techniques/android/MASTG-TECH-0112.md | 41 | // ** addr: 0x5961e0, size: 0x230 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .github/scripts/check_duplicate_ids.py | 76 | # Check if key is in folder name or folder is in key |
| LOW | .github/scripts/check_duplicate_ids.py | 156 | # Check if this ID already exists |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | demos/android/MASVS-PLATFORM/MASTG-DEMO-0082/script.js | 1 | function enumerateDeleteAllDataMethod() { |
| LOW | demos/android/MASVS-PLATFORM/MASTG-DEMO-0082/script.js | 6 | function enumerateSetDomStorageEnabledMethod() { |
| LOW | src/scripts/yaml_to_excel.py | 143 | def create_security_requirements_sheet(wb): |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | src/scripts/testcase_diff.py | 3 | |
| LOW | src/scripts/yaml_to_excel.py | 143 | |
| LOW | src/scripts/combine_data_for_checklist.py | 57 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | demos/android/MASVS-CRYPTO/MASTG-DEMO-0058/MastgTest.kt | 65 | .setRandomizedEncryptionRequired(false) // For demonstration purposes, we disable randomized encryption |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | src/scripts/yaml_to_excel.py | 1 | |
| LOW | src/scripts/excel_styles_and_validation.py | 3 |