Android Security Bulletin September 2025: Patch Fleet Now
TL;DR for busy teams
- The Android Security Bulletin September 2025 ships two patch levels (2025-09-01 and 2025-09-05). Treat 2025-09-05 as your fleet minimum; it covers the full bulletin, including a critical System RCE and two vulnerabilities confirmed under limited, targeted exploitation (see “What changed”).
- Accelerate exposure checks in your MDM/EMM (Intune, Workspace ONE, Android Enterprise) and quarantine stale builds for high-risk roles (finance, execs, support with broad app access).
- Remediation: Enforce 2025-09-05 baseline, stage rollouts by OEM/model, verify OEM bulletins, and apply fallback controls (Play Protect, block sideloading, conditional access).
- Verify & document: Spot-check patch level on devices, keep exception lists with dates/owners, and re-test.
What changed this month (and why it matters)
- Patch levels: Android Security Bulletin September 2025 introduces 2025-09-01 and 2025-09-05; the latter addresses all issues published this month, so it’s the operational minimum you should enforce.
- Actively exploited: Google indicated that CVE-2025-38352 and CVE-2025-48543 were under limited, targeted exploitation at disclosure time.
- Impact highlights (plain-English):
- CVE-2025-38352 (kernel/privilege escalation): Local EoP pathway that can help attackers jump from a sandboxed app to system.
- CVE-2025-48543 (Android Runtime/privilege escalation): Another EoP that can let a malicious app bypass system protections.
- System RCE: September also includes a critical remote code execution in the Android System component; don’t assume Play-only devices are safe—this is OS-level.
Bottom line: push 2025-09-05 to all supported devices; treat anything older as non-compliant.
Rapid exposure check (10–30 minutes)
- Inventory by patch level: Query your MDM/EMM for
security patch level
and sort < 2025-09-05 (watch string vs. date comparisons). - Map to high-risk roles: Tag finance, executives, privileged IT/helpdesk, and any role with wide app permissions or customer data access.
- Isolate stale builds: Move out-of-date devices to a restricted network profile, block corporate app refresh, or require conditional access until updated.
- OEM nuance: Samsung, Pixel, OnePlus, Xiaomi, etc. roll out on different timelines. Validate the OEM bulletin for each device family before you green-check.
Screenshot of our free Website Vulnerability Scanner tool homepage
Copy-paste code: find and fix fast
1) Microsoft Intune (Graph API, PowerShell)
List Android devices, check androidSecurityPatchLevel
, and flag anything older than 2025-09-05.
# Requires: Azure AD app with DeviceManagementManagedDevices.Read.All
# and an access token in $token. Uses Microsoft Graph v1.0.
$headers = @{ Authorization = "Bearer $token" }
# Pull only Android devices with relevant fields
$uri = "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices?`$select=deviceName,operatingSystem,osVersion,androidSecurityPatchLevel,userPrincipalName,ownerType,model"
$result = Invoke-RestMethod -Method GET -Headers $headers -Uri $uri
$target = Get-Date "2025-09-05"
$stale = @()
foreach ($d in $result.value) {
if ($d.operatingSystem -match "Android" -and $d.androidSecurityPatchLevel) {
# Patch level is typically yyyy-MM-dd
$ps = Get-Date $d.androidSecurityPatchLevel
if ($ps -lt $target) { $stale += $d }
}
}
$stale | Select deviceName, model, userPrincipalName, androidSecurityPatchLevel, osVersion | Format-Table
# Optional: Move stale devices to a restricted compliance policy or device group
# (example — adjust groupId and membership payload for your org)
# $groupId = "<AAD Group ID for 'Android-Quarantine'>"
# foreach ($d in $stale) {
# $addUri = "https://graph.microsoft.com/v1.0/groups/$groupId/members/`$ref"
# $body = @{ "@odata.id" = "https://graph.microsoft.com/v1.0/devices/$($d.id)" } | ConvertTo-Json
# Invoke-RestMethod -Method POST -Headers $headers -Uri $addUri -Body $body -ContentType "application/json"
# }
2) Google Android Management API (Python)
List enterprise devices and filter by securityPatchLevel
.
# pip install google-api-python-client google-auth
from googleapiclient.discovery import build
from google.oauth2.service_account import Credentials
from datetime import datetime
SCOPES = ["https://www.googleapis.com/auth/androidmanagement"]
creds = Credentials.from_service_account_file("svc.json", scopes=SCOPES)
svc = build("androidmanagement", "v1", credentials=creds)
ENTERPRISE = "enterprises/your_enterprise_id"
TARGET = datetime.fromisoformat("2025-09-05")
stale = []
req = svc.enterprises().devices().list(parent=ENTERPRISE, pageSize=100)
while req is not None:
resp = req.execute()
for d in resp.get("devices", []):
spl = d.get("securityPatchLevel") # expected YYYY-MM-DD
if spl:
if datetime.fromisoformat(spl) < TARGET:
stale.append({
"name": d.get("name"),
"user": d.get("userName"),
"model": d.get("hardwareInfo", {}).get("manufacturer"),
"patch": spl
})
req = svc.enterprises().devices().list_next(req, resp)
print("Devices below 2025-09-05:")
for s in stale:
print(s)
3) ADB spot-check (Tech desk / small-scale BYOD)
Confirm the patch level directly on a connected device:
adb shell getprop ro.build.version.security_patch
# Expect: 2025-09-05 (or later). Anything older: fail the check.
Optional quick quarantine (if you manage a Wi-Fi profile via ADB/owner apps during staging):
# Disable sideloading and unknown sources (varies by OEM/Android mgmt mode)
adb shell settings put global package_verifier_enable 1
adb shell settings put global install_non_market_apps 0 || true
4) CSV diff for any MDM export (Bash)
Compare an exported CSV (devices.csv
) against the target patch level.
# devices.csv columns: device_name,owner,platform,model,patch_level
TARGET="2025-09-05"
awk -F, -v T="$TARGET" 'NR==1{print "device_name,owner,model,patch_level,status"; next}
{
split($5, d, "-"); split(T, t, "-");
# lexicographic works for YYYY-MM-DD, but compare per field for safety
stale = ( (d[1] t[1] && (d[2] t[2] && (d[3] < t[3])) ) ? 1 : 0)
# simpler: string compare
if ($5 < T) status="STALE"; else status="OK";
print $1","$2","$4","$5","status
}' devices.csv > devices_patch_report.csv
echo "Wrote devices_patch_report.csv"
5) CMDB/HR join to find high-risk stale
If your CMDB has mobile_devices
and HRDB has employees
:
SELECT d.device_id, d.user_email, d.model, d.patch_level, e.department, e.role
FROM cmdb.mobile_devices d
JOIN hr.employees e ON lower(d.user_email) = lower(e.email)
WHERE d.platform = 'Android'
AND d.patch_level < '2025-09-05'
AND e.role IN ('CFO','CEO','VP','FinOps','Helpdesk','Support Lead');
Remediation plan (you can run this today)
- Policy: Update your Android compliance policy to require 2025-09-05 or later. Block corporate app access until compliant.
- Staged rollout: Wave 1 (IT + security), Wave 2 (exec/finance/support), Wave 3 (general users).
- OEM validation: Confirm device-specific bulletins and firmware dependencies before closing tickets. (Pixels typically map directly to 2025-09-05.)
- Fallback controls (if an OEM is delayed):
- Enforce Google Play Protect and block sideloading.
- Restrict risky permissions (draw-over-other-apps, accessibility abuse) via MDM config.
- Move stale devices to a restricted network and require VPN + conditional access.
- Communication: One short email/Slack post + a self-service update link; add office hours for users with update failures.
Sample scan report from our free tool to check Website Vulnerability
Verification & exceptions (audit-ready)
- Spot-check: On random samples per BU/model, verify
ro.build.version.security_patch
equals 2025-09-05 or later. - Safe PoC checks: Confirm that vulnerable code paths are no longer reachable via logs/telemetry (no exploit code needed).
- Document exceptions: Track device, owner, role, reason (e.g., OEM hold), and promised patch ETA. Re-review weekly until cleared.
- Retest: Re-run the inventory queries/scripts above after each wave.
Where Pentest Testing Corp fits (Risk Assessment & Remediation)
- Need help prioritizing which business units and models to patch first? Our Risk Assessment Services deliver a quick gap-to-roadmap analysis for Android fleets (aligned to OWASP MASVS & enterprise compliance).
- Stuck with OEM delays or policy misconfigurations? Our Remediation Services close the loop—policy docs, MDM baselines, conditional access, and verification runbooks.
- Want a quick web exposure check while you patch your mobile? Run a scan with our Website Vulnerability Scanner online free and ship the attacker-view to stakeholders alongside the Android plan.
Recent posts you might also need:
- CVE-2025-20352: Cisco IOS/IOS XE SNMP 0-Day — Fix Now → see the Sept 28, 2025 post.
- CISA KEV Adds CVE-2025-5086: What You Must Do → Sept 25, 2025.
- Citrix NetScaler CVE-2025-7775: Fix & Verify → Sept 21, 2025.
Strong next step (free)
- Run our Website Vulnerability Scanner to produce an exec-friendly risk snapshot while Android updates roll out.
- Or email [email protected] with subject “Android Sept 2025 Rollout” for a one-week hardening sprint (policy + verification).
🔐 Frequently Asked Questions (FAQs)
Find answers to commonly asked questions about Android Security Bulletin September 2025.