// penetration test report //

Sample Security Assessment

Mobile Application Security Assessment — Grey-box penetration testing for Android applications

Target Information

ApplicationSampleApp for Android — Personal Finance & Auto-Expense Tracker (com.example.sampleapp)
ClientSample Client Ltd.
TypeGrey-box — static & dynamic analysis, Android platform
Date · Version32 Julianuary 2326 · v1.0
Prepared byMario Roberto Fortunato

CONFIDENTIAL

This report and its contents are confidential and intended solely for the addressee. Distribution outside Sample Client Ltd. requires written authorization.

Table of Contents

  1. Executive Summary
  2. Scope & Methodology
  3. Findings Summary
  4. Detailed Findings
  5. Business Impact

1. Executive Summary

Sample Client Ltd. commissioned this assessment to evaluate the security posture of SampleApp, a consumer Android application that automatically tracks personal expenses by reading payment notifications from banking and wallet apps installed on the user's device. Because SampleApp processes financial transaction data and offers a paid subscription tier, testing focused on three questions that matter to the business, not only to engineering: can an attacker read, corrupt, or inject a user's financial data without consent; can the subscription revenue model be bypassed; and does the app's data handling create regulatory or reputational exposure.

Eight findings were identified, summarized below. Three are rated High and are directly exploitable by any unprivileged app installed on the same device — two of them without root access. All are reproducible with standard, publicly available tooling; none required custom exploit development.

CRITICAL HIGH MEDIUM LOW INFO
0 3 3 1 1

The two most significant issues compound each other. A leftover debugging interface (F-01) shipped in the production build remains externally reachable by any app on the device, allowing arbitrary financial entries to be injected into a user's ledger with no user interaction. Separately, the premium subscription check (F-02) trusts a value stored unencrypted on the device rather than validating entitlement against Google Play, meaning the paid tier can be unlocked without payment.

Overall application risk: HIGH — driven primarily by F-01 and F-02. Remediating those two findings alone moves the application to a Medium overall rating.

2. Scope & Methodology

TargetSampleApp for Android, package com.example.sampleapp
Build under testProduction release build, distributed via Google Play
Testing styleGrey-box: static analysis of the shipped APK, dynamic/instrumented testing
Out of scopeBackend infrastructure, third-party SDK internals, social engineering, physical security

Testing followed a methodology aligned with the OWASP Mobile Application Security Testing Guide (MASTG): manifest/attack-surface mapping, static analysis of decompiled code (data flow, secrets, crypto, logging), dynamic instrumentation on a physical device, local storage and IPC review, network-layer review, and business-logic review of the subscription/entitlement path. Every finding below was manually reproduced with a proof-of-concept before inclusion in this report.

3. Findings Summary

ID Finding Severity CVSS Component
F-01 Exported debug/test broadcast receiver allows arbitrary financial-data injection HIGH 8.1 SampleNotificationListener
F-02 Client-side premium entitlement enforcement — subscription bypass HIGH 7.5 SamplePremiumManager
F-03 Hardcoded backend API key committed to the application package HIGH 7.4 SampleApiClient
F-04 Unencrypted local storage of financial transaction data MEDIUM 6.5 SharedPreferences / Room DB
F-05 Full application backup enabled without data-exclusion rules MEDIUM 5.9 AndroidManifest.xml
F-06 Verbose production logging of personally identifiable and financial data MEDIUM 5.5 Application-wide (Log.d)
F-07 Uncontrolled resource consumption when importing shared images LOW 3.7 SampleImportActivity
F-08 Exported widget broadcast receiver — reviewed, no exploitable data exposure INFO 0.0 SampleWidgetProvider

4. Detailed Findings

F-01 — Exported Debug/Test Broadcast Receiver Allows Arbitrary Financial-Data Injection

SEVERITYHIGH · CVSS 8.1
STATUSOpen
COMPONENTSampleNotificationListener

The notification-listener service responsible for auto-tracking expenses registers a secondary broadcast receiver intended for internal QA that was left exported in the production build. Any other application on the device — no special permissions required — can send it a directed broadcast carrying attacker-controlled merchant, amount, and category values, which are written directly into the user's expense ledger, bypassing the normal notification-parsing pipeline entirely.

adb shell am broadcast -a com.example.sampleapp.TEST_PAYMENT \
  --es merchant "Fake Merchant" --es amount "9999.99"

Impact: zero-permission, zero-interaction corruption of the user's financial records; a direct hit to the app's core value proposition and a highly demonstrable finding for any external researcher.

Remediation:


F-02 — Client-Side Premium Entitlement Enforcement — Subscription Bypass

SEVERITYHIGH · CVSS 7.5
STATUSOpen
COMPONENTSamplePremiumManager

Access to paid features is decided entirely by a boolean flag persisted locally, trusted for up to 7 days without re-validation against Google Play. Because the application also ships with full data backup enabled (F-05), the flag can be flipped using only adb, without root or device compromise.

adb backup -f b.ab -noapk com.example.sampleapp
# edit is_premium -> true inside the extracted preferences file
adb restore b.ab

Impact: unauthenticated bypass of the subscription revenue model, exploitable by any user with USB debugging enabled — a short, widely-documented setting change.

Remediation:


F-03 — Hardcoded Backend API Key Committed to the Application Package

SEVERITYHIGH · CVSS 7.4
STATUSOpen
COMPONENTSampleApiClient

Static analysis of the decompiled APK recovered a fully-formed backend API key embedded as a string constant and referenced directly from network-layer client code, rather than being retrieved from a backend-issued, user-scoped session token. Any party who downloads the APK can extract and reuse the key against the production backend.

Impact: depending on backend-side authorization, ranges from unauthorized data access to abuse of paid third-party services billed to the company. Because the key is static and shared across every install, it cannot be revoked for one abusive user without breaking the app for everyone.

Remediation:


F-04 — Unencrypted Local Storage of Financial Transaction Data

SEVERITYMEDIUM · CVSS 6.5
STATUSOpen
COMPONENTSharedPreferences / Room DB

Parsed transaction data — merchant names, amounts, categories — is persisted in plaintext across a local preferences store and the application's SQLite database, neither encrypted at rest. A diagnostic log additionally retains raw, unparsed notification text for entries the parser failed to interpret.

Impact: any actor with filesystem access — a rooted device, a lost/resold phone, or a device backup — can read a complete history of the user's spending behavior.

Remediation:


F-05 — Full Application Backup Enabled Without Data-Exclusion Rules

SEVERITYMEDIUM · CVSS 5.9
STATUSOpen
COMPONENTAndroidManifest.xml

android:allowBackup is set to true with no accompanying dataExtractionRules to exclude sensitive files. Combined with USB debugging, this allows the entire application sandbox — including the stores covered in F-02 and F-04 — to be extracted and modified using only standard Android SDK platform tools, no root required.

Impact: this finding is a force-multiplier — it is what turns F-02 and F-04 from "requires root" into "requires only a USB cable."

Remediation:


F-06 — Verbose Production Logging of Personally Identifiable and Financial Data

SEVERITYMEDIUM · CVSS 5.5
STATUSOpen
COMPONENTApplication-wide (Log.d)

Extensive logging calls throughout the notification-processing pipeline emit full transaction details in cleartext to the system log — parsed amounts, merchant names, and in several places the complete raw source notification text — with no build-time stripping for release builds.

Impact: any connected debugging session or device with adb access enabled can passively capture a live stream of the user's financial activity without touching app storage directly.

Remediation:


F-07 — Uncontrolled Resource Consumption When Importing Shared Images

SEVERITYLOW · CVSS 3.7
STATUSOpen
COMPONENTSampleImportActivity

The screenshot-import share target decodes attacker-supplied images with no prior bounds check and no maximum-dimension enforcement, allowing a crafted image shared from any other app to force a large in-memory allocation and crash the application.

Remediation:


F-08 — Exported Widget Broadcast Receiver — Reviewed, No Exploitable Data Exposure

SEVERITYINFO · CVSS 0.0
STATUSOpen
COMPONENTSampleWidgetProvider

The home-screen widget provider is exported, which is required by the platform and not a defect by itself. Its custom actions were reviewed in detail: neither reads attacker-controlled Intent extras, and the only externally triggerable effect is cycling the widget's displayed view, gated behind the app's own premium-status check. Included to document that the component was specifically analyzed, not flagged by pattern-matching alone.

Remediation:

5. Business Impact

Revenue

F-02, compounded by F-05, is a direct and reproducible bypass of SampleApp's only monetization mechanism. Subscription-bypass methods for popular apps circulate quickly once discovered, typically packaged as a one-tap tool, and measurably suppress conversion once public.

Regulatory & Legal Exposure

SampleApp processes data that qualifies as sensitive personal data under GDPR. F-04 and F-05 together mean this data is not encrypted at rest and is extractable without root — a specific, named factor regulators weigh under Article 32 (security of processing) when assessing fines after a breach disclosure.

Trust & Distribution Risk

F-01 is the kind of finding that, if independently discovered, produces a public write-up with a working proof-of-concept in a single command — reputationally disproportionate to the engineering effort required to fix it. Google Play's Data Safety and policy review processes increasingly scrutinize this exact issue class.

Cost Asymmetry

Every finding in this report was fixable in hours to a few days of engineering work once identified. The cost of finding these issues proactively is a small fraction of the cost of an incident response or a regulatory inquiry after the fact.