TL;DR
- ✓A third-party SDK runs inside your app's process with the same permissions, so its data collection, crypto, and network calls become your security and privacy liability.
- ✓SDK testing isolates the SDK's classes and traffic from the host app, then applies static analysis (jadx, apktool, Hopper/Ghidra), dynamic tracing (Frida, objection), and interception (Burp Suite, mitmproxy).
- ✓Key questions: what data does the SDK read and exfiltrate, does it pin or validate TLS, does it store secrets insecurely, and does it weaken the app's overall posture (exported components, broad permissions).
- ✓Frida is the core tool for SDK work because it lets you hook the SDK's specific classes and watch arguments without the host app's source.
- ✓Findings map to OWASP MASVS controls and should distinguish SDK-owned issues from host-app integration mistakes.
An embedded SDK is code you ship but did not write, running with your app's full permissions and identity. When an analytics, ads, or payments SDK quietly reads the clipboard, collects device identifiers, or talks to its servers over weak TLS, that is your breach and your privacy violation, not the vendor's.
This methodology covers how to test a single SDK in isolation: separating its behavior from the host app, analyzing it statically and dynamically, and watching its network traffic. The work overlaps a full app pentest but narrows the lens to one dependency.
Why does third-party SDK security matter?
It matters because an SDK runs in your app's process with your permissions, so its worst behavior is indistinguishable from yours to the OS and to your users. If the SDK has location access because your app does, it can read location. If it makes network calls, they carry your app's identity.
The risks are concrete: silent data collection (device IDs, contacts, clipboard), exfiltration over weak or unpinned TLS, insecure on-device storage of what it collects, added attack surface through exported components or broad manifest permissions the SDK requests, and supply-chain compromise where a legitimate SDK ships malicious code in an update. These feed directly into the OWASP Mobile Top 10 data and SDK risk categories.
SDK security testing methodology
1
Isolate
Identify the SDK namespace, diff manifest/permissions, build a minimal harness if possible.
2
Static
Decompile with jadx/Hopper, run MobSF, find secrets, weak crypto, and sensitive data sinks.
3
Dynamic
Hook the SDK's classes with Frida/objection to log real arguments and data access.
4
Network
Intercept with Burp/mitmproxy, test pinning, and record exactly what data is exfiltrated.
5
Report
Map findings to MASVS, separating SDK-owned bugs from host integration mistakes.
How do you isolate an SDK for testing?
Start by identifying the SDK's namespace and boundaries so you can attribute behavior to it rather than the host app. Decompile the APK with jadx (or unpack the IPA and load the Mach-O in Hopper/Ghidra) and locate the SDK's package, for example com.vendor.analytics.
- List the SDK's classes, entry points, and the host-app calls that initialize it.
- Diff the app manifest with and without the SDK to see which permissions, exported components, and receivers it adds.
- Where possible, build a minimal harness app that only imports the SDK, so its traffic and storage are not buried under host-app noise.
- Map the SDK's declared endpoints from strings and config so you know what its traffic should look like.
This isolation is what separates SDK testing from a normal pentest and lets you write precise, attributable findings.
How do you statically analyze an SDK?
Static analysis reads the SDK without running it to find hardcoded secrets, weak crypto, and dangerous data access. Run MobSF over the app for a first pass, then read the SDK's decompiled classes directly in jadx or Hopper.
Look for hardcoded API keys and endpoints, use of weak crypto (ECB, static IVs, MD5/SHA1), insecure storage APIs (writing to SharedPreferences or external storage), and calls to sensitive sources: getDeviceId, clipboard managers, contacts, location, and installed-app enumeration. On iOS, search for Keychain misuse and access to identifiers like the IDFA. Note every sink that sends data off-device so you can confirm it later during interception.
How do you trace SDK behavior at runtime?
Dynamic analysis runs the app on a rooted or jailbroken device and uses Frida to hook the SDK's specific classes, so you see real arguments and return values instead of guessing from decompiled code. objection wraps Frida for quick wins like Keychain dumps and method enumeration.
Write a Frida script that hooks the SDK's data-access and network methods and logs their arguments. For example, hook the class that builds its outbound request payload and print what it serializes, which immediately shows what is being exfiltrated. Use Frida to enumerate loaded classes (Java.enumerateLoadedClasses) and confirm the SDK is active. This runtime view is exactly the loop that agentic pentesting automates across many methods at once.
Strobes insight
An SDK frequently pins certificates independently of the host app and reads data the host never intended to share. Hook its classes directly with Frida; do not infer behavior from the host app alone.
How do you test the SDK's network traffic?
Intercept the SDK's traffic with Burp Suite or mitmproxy and confirm what it sends, whether it pins certificates, and whether it validates TLS. With your CA installed, exercise the SDK and read every request to its endpoints.
If traffic appears in cleartext through your proxy, the SDK does not pin (a finding if it carries sensitive data). If it blocks, attempt a bypass with objection or a Frida hook targeting the SDK's own networking stack, since an SDK often pins independently of the host app. When the SDK uses raw sockets or refuses the proxy, fall back to forced redirection as described in intercepting proxy-unaware app traffic. Record exactly which data fields leave the device; that evidence drives both the security and the privacy findings, which often tie back to data protection compliance.
Frequently asked questions
Why test a third-party SDK separately from the app?
Because the SDK runs in your app's process with your permissions and identity, its data collection and network behavior become your liability, yet it is code you did not write and cannot see the source for. Testing it in isolation lets you attribute specific data leaks, weak crypto, or insecure storage to the dependency rather than your own code.
What tools are used for mobile SDK security testing?
jadx and apktool for Android decompilation, Hopper or Ghidra for iOS binaries, MobSF for automated static triage, Frida and objection for hooking the SDK's specific classes at runtime, and Burp Suite or mitmproxy to intercept its network traffic. Frida is central because it lets you watch the SDK's real arguments without source code.
How do you find what data an SDK collects?
Statically, search the decompiled SDK for calls to sensitive sources like getDeviceId, clipboard, contacts, and location. Dynamically, hook the SDK's request-building method with Frida and log the serialized payload, then confirm what actually leaves the device by intercepting its traffic with Burp or mitmproxy.
Can an SDK have its own certificate pinning?
Yes. Many networking, analytics, and payment SDKs pin certificates independently of the host app, so a host-app pinning bypass will not necessarily intercept SDK traffic. You often need a separate Frida hook targeting the SDK's own networking stack, or forced traffic redirection if it uses raw sockets.
How do SDK findings map to OWASP MASVS?
SDK issues map to the same MASVS categories as app issues: insecure storage of collected data (Storage), weak or hardcoded crypto (Crypto), missing TLS validation or pinning (Network), and added exported components or permissions (Platform). The key is labeling each finding as SDK-owned versus a host-app integration mistake so the right party fixes it.
Sources and references
A
Akhil Reni
Co-founder and CTO, Strobes
Akhil Reni is co-founder and CTO of Strobes, building AI-driven penetration testing and exposure management for security teams.