Back to Intelligence

Chrome 157 for Android (157.0.8103.38): Security Fix Rollout — Mobile Browser Patch Verification and Exploit Detection Guide

SA
Security Arsenal Team
November 4, 2026
10 min read

Google has released Chrome 157 (157.0.8103.38) for Android, rolling out via Google Play over the coming days. Per the official Chrome Releases blog, Android builds carry the same security fixes as the corresponding desktop releases (Windows & Mac: 157.0.8103.38/.39, Linux: 157.0.8103.38) unless otherwise noted. Google characterizes this release as containing stability and performance improvements, with the full change list available in the Chromium Git log.

Here's the operational reality I've seen across fifteen years of incident response: browser update announcements that read as routine are the ones that quietly close renderer and V8 bugs that exploit brokers and drive-by operators have been sitting on. Google does not publish granular vulnerability details at release time — deliberately, to give the user base a patching head start. That means defenders must treat every Chrome milestone release as a security release, because it is one. And the Android channel is where enterprise patch discipline most often breaks down: BYOD devices, deferred Play Store updates, users who never relaunch the browser, and MDM policies that don't enforce minimum app versions.

If your organization has meaningful Android usage — field staff, executives, clinicians, warehouse scanners running web apps — this rollout is a work item this week, not this quarter.

Technical Analysis

Affected Product and Version

ItemDetail
ProductGoogle Chrome for Android
Fixed version157.0.8103.38
Corresponding desktop buildsWindows & Mac: 157.0.8103.38/.39 — Linux: 157.0.8103.38
Distribution channelGoogle Play (staged rollout over several days)
Vendor advisorychromereleases.googleblog.com

What We Know — and What Google Isn't Telling You Yet

Google's advisory does not enumerate individual vulnerabilities, CVEs, or severity ratings for this build — standard practice for milestone releases where fix details are restricted until the majority of users are patched. The statement that "Android releases contain the same security fixes as their corresponding Desktop releases" is the critical line for defenders: the Android build inherits the full security posture of the desktop milestone, which for any modern Chrome release means V8 JavaScript engine hardening, renderer sandbox improvements, and site isolation fixes.

From a defender's perspective, the exploitation model for mobile Chrome mirrors desktop:

  1. Delivery: Malicious or compromised web content — watering-hole sites, malvertising, spear-phishing links delivered over SMS/messaging apps (smishing remains the dominant mobile initial-access vector).
  2. Renderer compromise: A bug in the Blink rendering engine or V8 JavaScript engine gives attacker code execution inside the sandboxed renderer process.
  3. Sandbox escape / privilege escalation: A second-stage bug (GPU process, Android binder drivers, or chipset vendor components) breaks out of the renderer sandbox.
  4. Post-exploitation: On Android, this commonly manifests as the Chrome process spawning unexpected child activity, dropping payloads to app-private or shared storage, or abusing accessibility services and overlay permissions for credential theft.

Exploitation Status

No specific vulnerabilities, proof-of-concept code, or in-the-wild exploitation have been publicly attributed to the fixes in Chrome 157 at the time of this writing. This is a proactive patch cycle — but the absence of disclosed exploitation is not reassurance. Historically, Google discloses active exploitation only after a mitigation window, and threat actors reverse-engineer Android Chrome patches from the public Chromium Git log within days. The staged Play rollout creates a multi-day window where a portion of your fleet is unpatched against bugs whose diffs are already public.

Detection & Response

Browser exploitation is noisy at the behavioral layer even when the underlying bug is silent. The detections below target the post-exploitation behaviors that follow a successful Chrome renderer compromise — these hold value regardless of which specific bug a given release patches — plus version-drift hunting to identify unpatched endpoints.

SIGMA Rules

YAML
---
title: Chrome Browser Spawning Shell or Script Interpreter
id: 3f8a2b71-6c4d-4e91-b2a7-9d5f1c8e6042
status: experimental
description: Detects chrome.exe spawning command shells or script interpreters, a hallmark post-exploitation behavior following a successful renderer or browser-process compromise (drive-by download, exploit kit, or watering-hole attack).
references:
  - https://attack.mitre.org/techniques/T1203/
  - https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.execution
  - attack.t1203
  - attack.t1059
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith: '\chrome.exe'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\wmic.exe'
      - '\certutil.exe'
      - '\bitsadmin.exe'
      - '\curl.exe'
  condition: selection_parent and selection_child
falsepositives:
  - Rare; some enterprise extensions or developer tooling may invoke shells from Chrome — validate by extension inventory
level: high
---
title: Chrome Writing Executable Content to User-Writable Directories
id: 8b1c4d92-2e7f-4a35-9c81-4f6d3a7b5019
status: experimental
description: Detects chrome.exe writing executable or script payloads to user-writable paths such as Downloads, Temp, or AppData — consistent with payload staging after a browser exploit or malicious download.
references:
  - https://attack.mitre.org/techniques/T1204.002/
  - https://attack.mitre.org/techniques/T1105/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.command_and_control
  - attack.t1105
logsource:
  category: file_event
  product: windows
detection:
  selection:
    Image|endswith: '\chrome.exe'
    TargetFilename|contains:
      - '\Downloads\'
      - '\AppData\Local\Temp\'
      - '\AppData\Roaming\'
    TargetFilename|endswith:
      - '.exe'
      - '.dll'
      - '.msi'
      - '.js'
      - '.jse'
      - '.vbs'
      - '.ps1'
      - '.bat'
      - '.hta'
      - '.apk'
  filter_known_installers:
    TargetFilename|contains:
      - '\Downloads\ChromeSetup'
      - 'unconfirmed'
      - '.crdownload'
  condition: selection and not filter_known_installers
falsepositives:
  - Users legitimately downloading installers via Chrome — tune with an allowlist of expected software distribution filenames
level: medium

KQL — Microsoft Sentinel / Defender

The first query hunts behavioral post-exploitation signals on Windows endpoints (where Defender telemetry is richest). The second is the version-drift hunt — arguably the more important one this week: it surfaces any endpoint reporting a Chrome build below 157.0.8103.38, so you can drive remediation against actual inventory rather than assumptions.

KQL — Microsoft Sentinel / Defender
// Hunt 1: Chrome spawning suspicious child processes (post-exploitation behavior)
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFileName =~ "chrome.exe"
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe", "wmic.exe", "certutil.exe", "bitsadmin.exe", "curl.exe")
| project TimeGenerated, DeviceName, AccountName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, SHA256
| order by TimeGenerated desc;

// Hunt 2: Chrome version drift — endpoints running builds older than 157.0.8103.38
DeviceFileEvents
| where TimeGenerated > ago(3d)
| where FileName =~ "chrome.exe"
| where FolderPath has "\\Google\\Chrome\\Application\\"
| extend VersionFolder = tostring(split(FolderPath, "\\")[4])
| where VersionFolder matches regex @"^\d+\.\d+\.\d+\.\d+$"
| extend Major = toint(split(VersionFolder, ".")[0]),
         Build = toint(split(VersionFolder, ".")[2]),
         Patch = toint(split(VersionFolder, ".")[3])
| where Major < 157 or (Major == 157 and Build < 8103) or (Major == 157 and Build == 8103 and Patch < 38)
| summarize arg_max(TimeGenerated, *) by DeviceName, VersionFolder
| project DeviceName, VersionFolder, LastSeen = TimeGenerated
| order by VersionFolder asc;

// Hunt 3: Android devices with stale Chrome via Intune/MDM-discovered app inventory (if ingested)
// Adjust table/field names to your MDM connector schema
CommonSecurityLog
| where TimeGenerated > ago(7d)
| where Message has "com.android.chrome"
| extend ChromeVersion = extract(@"com\.android\.chrome[^0-9]*([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)", 1, Message)
| where isnotempty(ChromeVersion) and not(ChromeVersion startswith "157.0.8103")
| summarize DeviceCount = dcount(DeviceName) by ChromeVersion
| order by DeviceCount desc;

Velociraptor VQL

Use this artifact across your Windows estate to enumerate installed Chrome versions and flag drift — the fastest way to build a patch-compliance hit list without waiting for your MDM report to refresh.

VQL — Velociraptor
-- Enumerate installed Chrome versions and flag builds below 157.0.8103.38
LET installs = SELECT FullPath, parse_string_with_regex(
        string=FullPath,
        regex='(?P<Version>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\\chrome\.exe$'
    ).Version AS ChromeVersion
FROM glob(globs='C:/Program Files*/Google/Chrome/Application/*/chrome.exe')

SELECT FullPath,
       ChromeVersion,
       if(condition=ChromeVersion < '157.0.8103.38',
          then='NON-COMPLIANT - update required',
          else='Compliant') AS PatchStatus,
       timestamp(epoch=now()) AS ScanTime
FROM installs

For Android fleet verification, query your MDM (Intune, Workspace ONE, or Google endpoint verification) for the com.android.chrome package version — Velociraptor does not cover Android, and your MDM is the authoritative source there.

Remediation Script

This PowerShell script audits Chrome version compliance on Windows endpoints and flags anything below the fixed build. Run it via your RMM, GPO startup script, or Defender live response across the fleet.

PowerShell
# Chrome 157 patch-compliance audit — flags builds below 157.0.8103.38
$MinimumVersion = [version]'157.0.8103.38'

$chromePaths = @(
    "$env:ProgramFiles\Google\Chrome\Application\chrome.exe",
    "${env:ProgramFiles(x86)}\Google\Chrome\Application\chrome.exe",
    "$env:LOCALAPPDATA\Google\Chrome\Application\chrome.exe"
) | Where-Object { Test-Path $_ }

if (-not $chromePaths) {
    Write-Output "[$env:COMPUTERNAME] Chrome not installed"
    exit 0
}

foreach ($path in $chromePaths) {
    $installed = [version](Get-Item $path).VersionInfo.ProductVersion
    if ($installed -lt $MinimumVersion) {
        Write-Output "[$env:COMPUTERNAME] NON-COMPLIANT: Chrome $installed at $path (minimum $MinimumVersion)"
        # Force Google Update to run immediately
        $updateTask = Get-ScheduledTask -TaskName 'GoogleUpdateTaskMachineCore*' -ErrorAction SilentlyContinue
        if ($updateTask) { $updateTask | Start-ScheduledTask }
    } else {
        Write-Output "[$env:COMPUTERNAME] Compliant: Chrome $installed"
    }
}

# Android fleet check is performed via MDM — example: Intune Graph query for
# devices where com.android.chrome version is below 157.0.8103.38.
# Enforce via app configuration policy: require minimum app version + auto-update.

Remediation

  1. Enforce the update through your MDM, not user goodwill. Push a minimum-version policy for the Chrome app (com.android.chrome) across managed Android devices. On fully managed / work-profile devices, force the Play Store update. Target build: 157.0.8103.38.
  2. Account for the staged rollout. Google explicitly notes the build "will become available on Google Play over the next few days." Devices in later rollout waves remain unpatched by design — for high-risk users (executives, finance, admins), sideload via managed Play or verify wave assignment rather than waiting passively.
  3. Patch the desktop estate in lockstep. The advisory confirms the Android build carries the same fixes as desktop 157.0.8103.38/.39. Deploy through your standard ring (pilot → broad) but compress the timeline: browser milestones with public Git diffs are reverse-engineered quickly.
  4. Verify auto-update is actually functioning. Audit that Google Play auto-update and desktop Google Update scheduled tasks are enabled. In every IR engagement involving browser-delivered payloads I've worked, the exploited endpoint had a broken or disabled update mechanism — the patch existed; the pipeline didn't.
  5. Enforce relaunch discipline. Chrome does not apply updates until the browser restarts. On Android, users routinely keep Chrome running for weeks. Configure MDM to force-close and relaunch, or set a compliance policy that flags devices where Chrome has been running since before the patch date.
  6. Restrict the mobile attack surface in the interim. Until fleet compliance is verified: enforce safe-browsing (Enhanced Protection) via Chrome enterprise policy, block sideloaded browsers on managed devices, and tighten SMS/phishing filtering — smishing is how the malicious link reaches the unpatched Android browser in the first place.
  7. Monitor for the behavioral indicators above. Deploy the Sigma and KQL detections now; they are technique-based, not version-based, so they retain value against whatever the next milestone patches too.

The Chrome Releases blog entry is short, but the operational mandate isn't: treat the staged Android rollout as a multi-day exposure window, measure compliance against build 157.0.8103.38 explicitly, and don't let "no CVEs listed" lull your team into deferring a browser milestone. The bugs are public in the Git log whether Google names them or not.

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.