Skip to content

Commit 2bfe3a7

Browse files
authored
Merge pull request #3410 from OWASP/add-demo-0060
Add MASTG-DEMO-0060 for securely storing sensitive data using EncryptedSharedPreferences
2 parents 322b874 + c3605da commit 2bfe3a7

File tree

8 files changed

+381
-2
lines changed

8 files changed

+381
-2
lines changed

.github/workflows/build-android-demos.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,14 @@ jobs:
173173
cp -f "$demo/data_extraction_rules.xml" MASTestApp-Android/app/src/main/res/xml/data_extraction_rules.xml 2>/dev/null \
174174
&& echo "Copied data_extraction_rules.xml for $demo" \
175175
|| echo "No data_extraction_rules.xml found for $demo"
176+
177+
if [ -f "$demo/build.gradle.kts.libs" ]; then
178+
libs_content=$(cat "$demo/build.gradle.kts.libs")
179+
sed -i "s|// ADD_LIBS_HERE|$libs_content|g" MASTestApp-Android/app/build.gradle.kts
180+
echo "Replaced dependencies in build.gradle.kts for $demo"
181+
else
182+
echo "No build.gradle.kts.libs found for $demo, skipping dependencies replacement"
183+
fi
176184
177185
echo "Building APK for $demo"
178186
cd MASTestApp-Android

demos/android/MASVS-STORAGE/MASTG-DEMO-0060/MASTG-DEMO-0060.md

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,46 @@ id: MASTG-DEMO-0060
55
code: [kotlin]
66
test: MASTG-TEST-0287
77
kind: pass
8-
status: placeholder
9-
note: This demo shows how to store sensitive data securely in the app sandbox using the EncryptedSharedPreferences class.
108
---
119

10+
### Sample
11+
12+
The code snippet below shows sample code which stores sensitive data using `String` and `StringSet` from `EncryptedSharedPreferences`.
13+
14+
!!! Warning
15+
16+
The **Jetpack security crypto library**, including the `EncryptedFile` and `EncryptedSharedPreferences` classes, has been [deprecated](https://developer.android.com/privacy-and-security/cryptography#jetpack_security_crypto_library). However, since an official replacement has not yet been released, we recommend using these classes until one is available.
17+
18+
{{ MastgTest.kt # build.gradle.kts.libs }}
19+
20+
### Steps
21+
22+
1. Install the app on a device (@MASTG-TECH-0005)
23+
2. Make sure you have @MASTG-TOOL-0001 installed on your machine and the frida-server running on the device
24+
3. Run `run.sh` to spawn the app with Frida
25+
4. Click the **Start** button
26+
5. Stop the script by pressing `Ctrl+C` and/or `q` to quit the Frida CLI
27+
28+
{{ hooks.js # run.sh }}
29+
30+
### Observation
31+
32+
The output shows all instances of strings written using `EncryptedSharedPreferences` via `SharedPreferences` that were found at runtime. A backtrace is also provided to help identify the location in the code.
33+
34+
{{ output.json }}
35+
36+
### Evaluation
37+
38+
This test **passes** because sensitive data is stored using `EncryptedSharedPreferences`, which encrypts both keys and values at rest. Even if an attacker gains access to the app's sandbox, the data remains encrypted.
39+
40+
For example, to confirm this, run the following command:
41+
42+
```sh
43+
adb shell cat /data/data/org.owasp.mastestapp/shared_prefs/MasSharedPref_Sensitive_Data.xml
44+
```
45+
46+
Which returns:
47+
48+
{{ MasSharedPref_Sensitive_Data.xml }}
49+
50+
The actual values are not visible in plain text, confirming that encryption is applied.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
2+
<map>
3+
<string name="AU+z103BuqUQYnpJY8AyhGP4jbkz01jtCY5EQGG4pVwOPhVv">AQoAYPs27SgygktthcLjII2K6yyUMBoY8F59mzWbE1ps2WT5P87ChxB0QF8R4UuBc6WRy+9R0qwpD3WOKw==</string>
4+
<string name="__androidx_security_crypto_encrypted_prefs_key_keyset__">12a901f5a4c43d49ce7ca6c207fb4d3f7711aba5131cbbd7951bd838c6c154e3528704bf527d554ad3facc098ad4645b1d2ed0a707c1c28f12ebf24e5a9ea08c57088e7c1b43ee84272605fe1ecbf9426509054974640b23e273b73d21a1d48029e4ef3787b6b1fc9c31d590b7e37663ea81e3135b3f0d3eb067148fcbb0e37b7d5909ad7a2cfc55bc11b4f8c00e79cebbf5cbeee2aca68f7558a65b86e888aa343caeea9551d82895a0956c1a4408cdaecffd04123c0a30747970652e676f6f676c65617069732e636f6d2f676f6f676c652e63727970746f2e74696e6b2e4165735369764b6579100118cdaecffd042001</string>
5+
<string name="__androidx_security_crypto_encrypted_prefs_value_keyset__">1286013ebf2688905cdc7062581d934cf22d866c35f5b0c3a4617ef00a4b44c2a33bb9f8c49e2a82535763dadee05ed2587811270339d066bc335db019ab60a68108652cd14a90a77b324a90c5d9ce8fae1a2da0f317b10d71e92c49ae9c0a17ec321e6f3a0c4edcb41580f16e93adfea98518127706dfbee4bef3af57f7419fd7216e89efea8b3f3d1a4208fbc18150123b0a30747970652e676f6f676c65617069732e636f6d2f676f6f676c652e63727970746f2e74696e6b2e41657347636d4b6579100118fbc181502001</string>
6+
<string name="AU+z101V35Id7aRshk1QOi8IHsdlvcPXjNA885hbFak=">AQoAYPt6nO+4SoPqUjsZNEYzlPIZn7LtawLzrii1G0XDtQyVJOaSNNwo4OHjYx6CrYcOaSzjr8Fii72fhCSA2KTE5j0BphTnYoc0gz5j3CO/</string>
7+
<string name="AU+z101iVWAe4pyZC7djOC9ugpEv9bxXAahqi4DNvuxcyA==">AQoAYPv4h47i7VnSEOZH5BBhnMHHb7hX8wPucI9srOw3GkBZBATxlaE5DGWP+AFn6uITZMiHZdhGXPuX6YxRr4dipYLV3hD98AlV613qYAY+seweUVfeQ6VJpVeSYmqHMyeQQEDPwqT9QJ5vKE6tWbOW95wGmGgR4D7I+NCEnV9rHoJfO1vjYdJDHzBv2akR5nY/EAWI0yXDt1wdSr1p31t/myCi7UDoknmD5Iq7MSEdzCOzP+J7LGP9Hb4EW1sjgZs5yuY42hzdfZ0QgeK8afeEIu84omuzqn0+icWc6Gkx3/rtBRJbnAGL3rOoV6MISqE5PshiVWzBflt4qPmxcn9S64ru6R9mcixn1MiKG5anG/Q=</string>
8+
</map>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.owasp.mastestapp
2+
3+
import android.content.Context
4+
import androidx.core.content.edit
5+
import androidx.security.crypto.EncryptedSharedPreferences
6+
import androidx.security.crypto.MasterKey
7+
8+
class MastgTest(private val context: Context) {
9+
// WARNING: In a real application, these keys should NOT be hardcoded. They should be stored securely, for instance, in the Android Keystore.
10+
private val awsKey = "AKIAABCDEFGHIJKLMNOP"
11+
private val githubToken = "ghp_1234567890abcdefghijklmnopqrstuvABCD"
12+
private val preSharedKeys = hashSetOf(
13+
"-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALfX7kbfFv3pc3JjOHQ=\n-----END PRIVATE KEY-----",
14+
"-----BEGIN PRIVATE KEY-----\ngJXS9EwpuzK8U1TOgfplwfKEVngCE2D5FNBQWvNmuHHbigmTCabsA=\n-----END PRIVATE KEY-----"
15+
)
16+
private val sharedPrefsName = "MasSharedPref_Sensitive_Data"
17+
18+
fun mastgTest(): String {
19+
return try {
20+
val masterKey = MasterKey.Builder(context)
21+
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
22+
.build()
23+
24+
val encryptedPrefs = EncryptedSharedPreferences.create(
25+
context,
26+
sharedPrefsName,
27+
masterKey,
28+
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
29+
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
30+
)
31+
32+
encryptedPrefs.edit {
33+
putString("EncryptedAWSKey", awsKey)
34+
putString("GitHubToken", githubToken)
35+
putStringSet("preSharedKeys", preSharedKeys)
36+
}
37+
38+
"Sensitive data has been written and deleted in the sandbox."
39+
} catch (e: Exception) {
40+
"Error during MastgTest: ${e.message ?: "Unknown error"}"
41+
}
42+
}
43+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
implementation("androidx.security:security-crypto:1.1.0")
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
var target = {
2+
category: "STORAGE",
3+
demo: "0060",
4+
hooks: [
5+
{
6+
class: "androidx.security.crypto.EncryptedSharedPreferences$Editor",
7+
methods: [
8+
"putString",
9+
"putStringSet"
10+
]
11+
},
12+
{
13+
class: "android.app.SharedPreferencesImpl$EditorImpl",
14+
methods: [
15+
"putString",
16+
"putStringSet"
17+
]
18+
}
19+
]
20+
}
Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
{
2+
"id": "219ea51c-506a-45f0-a295-34febdad2ca5",
3+
"category": "STORAGE",
4+
"time": "2025-09-22T20:53:10.158Z",
5+
"class": "android.app.SharedPreferencesImpl$EditorImpl",
6+
"method": "putString",
7+
"stackTrace": [
8+
"android.app.SharedPreferencesImpl$EditorImpl.putString(Native Method)",
9+
"com.google.crypto.tink.integration.android.SharedPrefKeysetWriter.write(SharedPrefKeysetWriter.java:70)",
10+
"com.google.crypto.tink.KeysetHandle.write(KeysetHandle.java:158)",
11+
"com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readOrGenerateNewKeyset(AndroidKeysetManager.java:299)",
12+
"com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build(AndroidKeysetManager.java:238)",
13+
"androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:155)",
14+
"androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:120)",
15+
"org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:23)"
16+
],
17+
"inputParameters": [
18+
{
19+
"type": "java.lang.String",
20+
"value": "__androidx_security_crypto_encrypted_prefs_key_keyset__"
21+
},
22+
{
23+
"type": "java.lang.String",
24+
"value": "12a901f5a4c43d49ce7ca6c207fb4d3f7711aba5131cbbd7951bd838c6c154e3528704bf527d554ad3facc098ad4645b1d2ed0a707c1c28f12ebf24e5a9ea08c57088e7c1b43ee84272605fe1ecbf9426509054974640b23e273b73d21a1d48029e4ef3787b6b1fc9c31d590b7e37663ea81e3135b3f0d3eb067148fcbb0e37b7d5909ad7a2cfc55bc11b4f8c00e79cebbf5cbeee2aca68f7558a65b86e888aa343caeea9551d82895a0956c1a4408cdaecffd04123c0a30747970652e676f6f676c65617069732e636f6d2f676f6f676c652e63727970746f2e74696e6b2e4165735369764b6579100118cdaecffd042001"
25+
}
26+
],
27+
"returnValue": [
28+
{
29+
"type": "android.content.SharedPreferences$Editor",
30+
"value": "<instance: android.content.SharedPreferences$Editor, $className: android.app.SharedPreferencesImpl$EditorImpl>"
31+
}
32+
]
33+
}
34+
{
35+
"id": "2726948e-87f4-4088-a4fd-b5a3facfe460",
36+
"category": "STORAGE",
37+
"time": "2025-09-22T20:53:10.203Z",
38+
"class": "android.app.SharedPreferencesImpl$EditorImpl",
39+
"method": "putString",
40+
"stackTrace": [
41+
"android.app.SharedPreferencesImpl$EditorImpl.putString(Native Method)",
42+
"com.google.crypto.tink.integration.android.SharedPrefKeysetWriter.write(SharedPrefKeysetWriter.java:70)",
43+
"com.google.crypto.tink.KeysetHandle.write(KeysetHandle.java:158)",
44+
"com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.readOrGenerateNewKeyset(AndroidKeysetManager.java:299)",
45+
"com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder.build(AndroidKeysetManager.java:238)",
46+
"androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:160)",
47+
"androidx.security.crypto.EncryptedSharedPreferences.create(EncryptedSharedPreferences.java:120)",
48+
"org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:23)"
49+
],
50+
"inputParameters": [
51+
{
52+
"type": "java.lang.String",
53+
"value": "__androidx_security_crypto_encrypted_prefs_value_keyset__"
54+
},
55+
{
56+
"type": "java.lang.String",
57+
"value": "1286013ebf2688905cdc7062581d934cf22d866c35f5b0c3a4617ef00a4b44c2a33bb9f8c49e2a82535763dadee05ed2587811270339d066bc335db019ab60a68108652cd14a90a77b324a90c5d9ce8fae1a2da0f317b10d71e92c49ae9c0a17ec321e6f3a0c4edcb41580f16e93adfea98518127706dfbee4bef3af57f7419fd7216e89efea8b3f3d1a4208fbc18150123b0a30747970652e676f6f676c65617069732e636f6d2f676f6f676c652e63727970746f2e74696e6b2e41657347636d4b6579100118fbc181502001"
58+
}
59+
],
60+
"returnValue": [
61+
{
62+
"type": "android.content.SharedPreferences$Editor",
63+
"value": "<instance: android.content.SharedPreferences$Editor, $className: android.app.SharedPreferencesImpl$EditorImpl>"
64+
}
65+
]
66+
}
67+
{
68+
"id": "9c495048-f0db-405b-807b-01e0cfbab573",
69+
"category": "STORAGE",
70+
"time": "2025-09-22T20:53:10.220Z",
71+
"class": "android.app.SharedPreferencesImpl$EditorImpl",
72+
"method": "putString",
73+
"stackTrace": [
74+
"android.app.SharedPreferencesImpl$EditorImpl.putString(Native Method)",
75+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putEncryptedObject(EncryptedSharedPreferences.java:378)",
76+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putString(EncryptedSharedPreferences.java:244)",
77+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putString(Native Method)",
78+
"org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:32)",
79+
"org.owasp.mastestapp.MainActivityKt.MainScreen$lambda$6$lambda$5(MainActivity.kt:55)",
80+
"org.owasp.mastestapp.MainActivityKt.$r8$lambda$PtKdgqcXvbS9cMNZVWq3K3GGQKQ(Unknown Source:0)",
81+
"org.owasp.mastestapp.MainActivityKt$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0)"
82+
],
83+
"inputParameters": [
84+
{
85+
"type": "java.lang.String",
86+
"value": "AU+z103BuqUQYnpJY8AyhGP4jbkz01jtCY5EQGG4pVwOPhVv"
87+
},
88+
{
89+
"type": "java.lang.String",
90+
"value": "AQoAYPs27SgygktthcLjII2K6yyUMBoY8F59mzWbE1ps2WT5P87ChxB0QF8R4UuBc6WRy+9R0qwpD3WOKw=="
91+
}
92+
],
93+
"returnValue": [
94+
{
95+
"type": "android.content.SharedPreferences$Editor",
96+
"value": "<instance: android.content.SharedPreferences$Editor, $className: android.app.SharedPreferencesImpl$EditorImpl>"
97+
}
98+
]
99+
}
100+
{
101+
"id": "60d32d3c-210a-4a44-926f-874e02ed02b0",
102+
"category": "STORAGE",
103+
"time": "2025-09-22T20:53:10.214Z",
104+
"class": "androidx.security.crypto.EncryptedSharedPreferences$Editor",
105+
"method": "putString",
106+
"stackTrace": [
107+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putString(Native Method)",
108+
"org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:32)",
109+
"org.owasp.mastestapp.MainActivityKt.MainScreen$lambda$6$lambda$5(MainActivity.kt:55)",
110+
"org.owasp.mastestapp.MainActivityKt.$r8$lambda$PtKdgqcXvbS9cMNZVWq3K3GGQKQ(Unknown Source:0)",
111+
"org.owasp.mastestapp.MainActivityKt$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0)",
112+
"java.lang.Thread.run(Thread.java:1012)"
113+
],
114+
"inputParameters": [
115+
{
116+
"type": "java.lang.String",
117+
"value": "EncryptedAWSKey"
118+
},
119+
{
120+
"type": "java.lang.String",
121+
"value": "AKIAABCDEFGHIJKLMNOP"
122+
}
123+
],
124+
"returnValue": [
125+
{
126+
"type": "android.content.SharedPreferences$Editor",
127+
"value": "<instance: android.content.SharedPreferences$Editor, $className: androidx.security.crypto.EncryptedSharedPreferences$Editor>"
128+
}
129+
]
130+
}
131+
{
132+
"id": "13976db9-4f60-4483-b2e3-46b0399f0222",
133+
"category": "STORAGE",
134+
"time": "2025-09-22T20:53:10.228Z",
135+
"class": "android.app.SharedPreferencesImpl$EditorImpl",
136+
"method": "putString",
137+
"stackTrace": [
138+
"android.app.SharedPreferencesImpl$EditorImpl.putString(Native Method)",
139+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putEncryptedObject(EncryptedSharedPreferences.java:378)",
140+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putString(EncryptedSharedPreferences.java:244)",
141+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putString(Native Method)",
142+
"org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:33)",
143+
"org.owasp.mastestapp.MainActivityKt.MainScreen$lambda$6$lambda$5(MainActivity.kt:55)",
144+
"org.owasp.mastestapp.MainActivityKt.$r8$lambda$PtKdgqcXvbS9cMNZVWq3K3GGQKQ(Unknown Source:0)",
145+
"org.owasp.mastestapp.MainActivityKt$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0)"
146+
],
147+
"inputParameters": [
148+
{
149+
"type": "java.lang.String",
150+
"value": "AU+z101V35Id7aRshk1QOi8IHsdlvcPXjNA885hbFak="
151+
},
152+
{
153+
"type": "java.lang.String",
154+
"value": "AQoAYPt6nO+4SoPqUjsZNEYzlPIZn7LtawLzrii1G0XDtQyVJOaSNNwo4OHjYx6CrYcOaSzjr8Fii72fhCSA2KTE5j0BphTnYoc0gz5j3CO/"
155+
}
156+
],
157+
"returnValue": [
158+
{
159+
"type": "android.content.SharedPreferences$Editor",
160+
"value": "<instance: android.content.SharedPreferences$Editor, $className: android.app.SharedPreferencesImpl$EditorImpl>"
161+
}
162+
]
163+
}
164+
{
165+
"id": "29fc3b94-48ce-4d93-86ba-2a16d88ba1c5",
166+
"category": "STORAGE",
167+
"time": "2025-09-22T20:53:10.222Z",
168+
"class": "androidx.security.crypto.EncryptedSharedPreferences$Editor",
169+
"method": "putString",
170+
"stackTrace": [
171+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putString(Native Method)",
172+
"org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:33)",
173+
"org.owasp.mastestapp.MainActivityKt.MainScreen$lambda$6$lambda$5(MainActivity.kt:55)",
174+
"org.owasp.mastestapp.MainActivityKt.$r8$lambda$PtKdgqcXvbS9cMNZVWq3K3GGQKQ(Unknown Source:0)",
175+
"org.owasp.mastestapp.MainActivityKt$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0)",
176+
"java.lang.Thread.run(Thread.java:1012)"
177+
],
178+
"inputParameters": [
179+
{
180+
"type": "java.lang.String",
181+
"value": "GitHubToken"
182+
},
183+
{
184+
"type": "java.lang.String",
185+
"value": "ghp_1234567890abcdefghijklmnopqrstuvABCD"
186+
}
187+
],
188+
"returnValue": [
189+
{
190+
"type": "android.content.SharedPreferences$Editor",
191+
"value": "<instance: android.content.SharedPreferences$Editor, $className: androidx.security.crypto.EncryptedSharedPreferences$Editor>"
192+
}
193+
]
194+
}
195+
{
196+
"id": "e5aa1f47-435e-458a-93ea-37b8c4d2ef1b",
197+
"category": "STORAGE",
198+
"time": "2025-09-22T20:53:10.236Z",
199+
"class": "android.app.SharedPreferencesImpl$EditorImpl",
200+
"method": "putString",
201+
"stackTrace": [
202+
"android.app.SharedPreferencesImpl$EditorImpl.putString(Native Method)",
203+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putEncryptedObject(EncryptedSharedPreferences.java:378)",
204+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putStringSet(EncryptedSharedPreferences.java:270)",
205+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putStringSet(Native Method)",
206+
"org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:34)",
207+
"org.owasp.mastestapp.MainActivityKt.MainScreen$lambda$6$lambda$5(MainActivity.kt:55)",
208+
"org.owasp.mastestapp.MainActivityKt.$r8$lambda$PtKdgqcXvbS9cMNZVWq3K3GGQKQ(Unknown Source:0)",
209+
"org.owasp.mastestapp.MainActivityKt$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0)"
210+
],
211+
"inputParameters": [
212+
{
213+
"type": "java.lang.String",
214+
"value": "AU+z101iVWAe4pyZC7djOC9ugpEv9bxXAahqi4DNvuxcyA=="
215+
},
216+
{
217+
"type": "java.lang.String",
218+
"value": "AQoAYPv4h47i7VnSEOZH5BBhnMHHb7hX8wPucI9srOw3GkBZBATxlaE5DGWP+AFn6uITZMiHZdhGXPuX6YxRr4dipYLV3hD98AlV613qYAY+seweUVfeQ6VJpVeSYmqHMyeQQEDPwqT9QJ5vKE6tWbOW95wGmGgR4D7I+NCEnV9rHoJfO1vjYdJDHzBv2akR5nY/EAWI0yXDt1wdSr1p31t/myCi7UDoknmD5Iq7MSEdzCOzP+J7LGP9Hb4EW1sjgZs5yuY42hzdfZ0QgeK8afeEIu84omuzqn0+icWc6Gkx3/rtBRJbnAGL3rOoV6MISqE5PshiVWzBflt4qPmxcn9S64ru6R9mcixn1MiKG5anG/Q="
219+
}
220+
],
221+
"returnValue": [
222+
{
223+
"type": "android.content.SharedPreferences$Editor",
224+
"value": "<instance: android.content.SharedPreferences$Editor, $className: android.app.SharedPreferencesImpl$EditorImpl>"
225+
}
226+
]
227+
}
228+
{
229+
"id": "53480382-6252-49e5-8b1a-bbe7cc0540f2",
230+
"category": "STORAGE",
231+
"time": "2025-09-22T20:53:10.230Z",
232+
"class": "androidx.security.crypto.EncryptedSharedPreferences$Editor",
233+
"method": "putStringSet",
234+
"stackTrace": [
235+
"androidx.security.crypto.EncryptedSharedPreferences$Editor.putStringSet(Native Method)",
236+
"org.owasp.mastestapp.MastgTest.mastgTest(MastgTest.kt:34)",
237+
"org.owasp.mastestapp.MainActivityKt.MainScreen$lambda$6$lambda$5(MainActivity.kt:55)",
238+
"org.owasp.mastestapp.MainActivityKt.$r8$lambda$PtKdgqcXvbS9cMNZVWq3K3GGQKQ(Unknown Source:0)",
239+
"org.owasp.mastestapp.MainActivityKt$$ExternalSyntheticLambda3.run(D8$$SyntheticClass:0)",
240+
"java.lang.Thread.run(Thread.java:1012)"
241+
],
242+
"inputParameters": [
243+
{
244+
"type": "java.lang.String",
245+
"value": "preSharedKeys"
246+
},
247+
{
248+
"type": "java.util.Set",
249+
"value": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALfX7kbfFv3pc3JjOHQ=\n-----END PRIVATE KEY-----,-----BEGIN PRIVATE KEY-----\ngJXS9EwpuzK8U1TOgfplwfKEVngCE2D5FNBQWvNmuHHbigmTCabsA=\n-----END PRIVATE KEY-----"
250+
}
251+
],
252+
"returnValue": [
253+
{
254+
"type": "android.content.SharedPreferences$Editor",
255+
"value": "<instance: android.content.SharedPreferences$Editor, $className: androidx.security.crypto.EncryptedSharedPreferences$Editor>"
256+
}
257+
]
258+
}

0 commit comments

Comments
 (0)