Back to Intelligence

Malicious Chrome and Edge Extensions Stealing Crypto and Browser Data: Detection and Removal Guide

SA
Security Arsenal Team
August 30, 2026
10 min read

A recent report describes multiple extensions distributed through the Google Chrome Web Store and Microsoft Edge Add-ons store that delivered a malicious in-browser framework. Once installed, the extensions loaded modules designed to steal cryptocurrency, sensitive browser data, and browsing history, and to inject ClickFix-style social-engineering lures into pages.

This is not a browser memory-corruption bug and no CVE is identified in the report. The defensive issue is abuse of trusted extension marketplaces: users install what looks like a legitimate add-on, the extension obtains broad browser permissions, and then it pulls down tasking that turns the browser into a theft and delivery platform. Any organization that allows unmanaged Chrome or Edge extensions should assume elevated risk until extension inventory, permission auditing, and ClickFix awareness controls are validated.

Technical Analysis

Affected products and platforms

  • Google Chrome extensions distributed via the Chrome Web Store.
  • Microsoft Edge add-ons distributed via the Edge Add-ons store.
  • Browser platforms are cross-platform, but ClickFix execution typically targets Windows users by convincing them to open the Run dialog or a terminal and paste attacker-supplied commands.
  • At-risk assets include browser cookies/session tokens, saved credentials, autofill data, history, clipboard contents, crypto wallet extension state, and pages visited by the user.

Vulnerability status

No CVE or CVSS score is provided in the source item. Treat this as an active malicious-extension and social-engineering campaign rather than a patchable Chrome/Edge vulnerability. Confirmed status from the report: malicious extensions were present in official stores and delivered modular payloads. Inclusion in CISA KEV is not stated because there is no CVE; defenders should still treat this as in-the-wild abuse of the extension trust model.

How the attack works — defender view

  1. Distribution through trust: A user installs a plausible extension from an official store. Marketplace presence lowers suspicion and can bypass ad hoc user scrutiny.
  2. Permission escalation at install time: The extension requests powerful capabilities such as broad site access, tabs, cookies, history, storage, scripting, clipboardRead, webRequest/declarativeNetRequest, or nativeMessaging. Excessive permissions are the key warning signal.
  3. Delayed or modular payload: The installed package may look thin; malicious logic is retrieved after install or unlocked by configuration, reducing the chance that static review catches the final behavior.
  4. Data collection: Content scripts or background/service-worker code reads page data, form inputs, cookies, history artifacts, clipboard content, and wallet-extension DOM state. Crypto theft often combines address substitution, transaction tampering, clipboard hijacking, and credential/session theft.
  5. ClickFix lure injection: The extension modifies pages or injects overlays that claim the browser, CAPTCHA, cache, DNS, or security component is broken. The lure instructs the victim to press Win+R or open PowerShell and paste a command. That converts browser compromise into host execution.
  6. Exfiltration and persistence: Stolen data is sent to attacker infrastructure. Re-installs can recur through browser sync if the malicious extension is tied to a synced profile or if enterprise policy does not block re-installation.

Exploitation requirements and constraints

  • Initial compromise requires user installation or an enterprise policy that silently permits the extension.
  • Impact scales with granted permissions and whether the victim uses password manager, crypto wallet, or SSO sessions inside the same browser profile.
  • Host execution requires successful ClickFix social engineering; strong browser theft can still occur without any host process execution.

Detection & Response

The highest-value detections are behavioral: a browser spawning command interpreters after user interaction, non-browser processes touching browser credential stores, and extensions holding permission sets inconsistent with business need. Tune allowlists for developer browsers, password-manager integrations, EDR, and approved enterprise extensions before broad deployment.

YAML
---
title: Chrome or Edge Spawning Command Interpreter After Possible ClickFix Lure
id: 8d1c9b2a-6f35-4e8b-9c41-7a2d5f0b6e11
status: experimental
description: Detects Chrome or Edge launching PowerShell, cmd, mshta, rundll32, or script hosts with download/cradle-like command lines, consistent with ClickFix paste-and-run social engineering.
references:
  - https://attack.mitre.org/techniques/T1059/
  - https://attack.mitre.org/techniques/T1204/
author: Security Arsenal
date: 2026/01/08
tags:
  - attack.execution
  - attack.t1059.001
  - attack.t1059.003
  - attack.t1204.002
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
  selection_child:
    Image|endswith:
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\cmd.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\wscript.exe'
      - '\cscript.exe'
  selection_cli:
    CommandLine|contains:
      - ' -enc'
      - 'FromBase64String'
      - 'Invoke-Expression'
      - 'IEX'
      - 'Invoke-WebRequest'
      - 'Invoke-RestMethod'
      - 'DownloadString'
      - 'Start-BitsTransfer'
      - 'curl '
      - 'mshta http'
      - 'http://'
      - 'https://'
  condition: selection_parent and selection_child and selection_cli
falsepositives:
  - Rare enterprise browser integrations or admin troubleshooting launched from a browser tab
level: high
---
title: Non-Browser Process Accessing Chrome or Edge Credential and History Stores
id: 4f6a21d7-9b0e-4c5f-a2d3-91e7c0b8a442
status: experimental
description: Detects processes other than the browser touching Chrome or Edge Login Data, Cookies, History, or Web Data stores, a common pattern in browser-data theft.
references:
  - https://attack.mitre.org/techniques/T1539/
  - https://attack.mitre.org/techniques/T1005/
author: Security Arsenal
date: 2026/01/08
tags:
  - attack.collection
  - attack.credential_access
  - attack.t1539
  - attack.t1555.003
logsource:
  category: process_access
  product: windows
detection:
  selection_target:
    TargetImage|contains:
      - 'Login Data'
      - 'Cookies'
      - 'History'
      - 'Web Data'
  selection_profile:
    TargetImage|contains:
      - 'Google'
      - 'Chrome'
      - 'Microsoft'
      - 'Edge'
      - 'User Data'
  filter_browser:
    Image|endswith:
      - '\chrome.exe'
      - '\msedge.exe'
  condition: selection_target and selection_profile and not filter_browser
falsepositives:
  - EDR, DLP, backup, forensic, and password-management tools legitimately inspecting browser stores
level: medium
---
title: User-Launched Run Dialog Followed by Script or Download Cradle
id: 1b7e2c94-55aa-4d6f-8bd0-3f9c2a7d10ef
status: experimental
description: Detects explorer.exe launching common ClickFix execution chains shortly after user interaction, such as Run dialog paste-ins that start PowerShell, mshta, or curl-like download execution.
references:
  - https://attack.mitre.org/techniques/T1059/
  - https://attack.mitre.org/techniques/T1204/
author: Security Arsenal
date: 2026/01/08
tags:
  - attack.execution
  - attack.t1059
  - attack.t1204
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith: '\explorer.exe'
  selection_child:
    Image|endswith:
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\mshta.exe'
      - '\cmd.exe'
      - '\rundll32.exe'
  selection_cli:
    CommandLine|contains:
      - ' -enc'
      - 'FromBase64String'
      - 'IEX'
      - 'Invoke-Expression'
      - 'Invoke-WebRequest'
      - 'Invoke-RestMethod'
      - 'DownloadString'
      - 'mshta http'
      - 'http://'
      - 'https://'
  condition: selection_parent and selection_child and selection_cli
falsepositives:
  - Administrators using Run dialog for legitimate scripts; restrict by user role and expected software deployment paths
level: medium
KQL — Microsoft Sentinel / Defender
// Hunt browser-launched command execution consistent with ClickFix paste-and-run activity
let lookback = 14d;
let suspiciousCli = dynamic(["-enc", "FromBase64String", "Invoke-Expression", "IEX", "Invoke-WebRequest", "Invoke-RestMethod", "DownloadString", "Start-BitsTransfer", "mshta http", "http://", "https://"]);
DeviceProcessEvents
| where Timestamp >= ago(lookback)
| where InitiatingProcessFileName in~ ("chrome.exe", "msedge.exe")
| where FileName in~ ("powershell.exe", "pwsh.exe", "cmd.exe", "mshta.exe", "rundll32.exe", "regsvr32.exe", "wscript.exe", "cscript.exe")
| where ProcessCommandLine has_any (suspiciousCli)
| project Timestamp, DeviceName, AccountName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, ProcessId, InitiatingProcessId
| join kind=leftouter (
    DeviceNetworkEvents
    | where Timestamp >= ago(lookback)
    | project DeviceName, InitiatingProcessId, RemoteUrl, RemoteIP, RemotePort, Timestamp
) on DeviceName, InitiatingProcessId
| sort by Timestamp desc;
VQL — Velociraptor
-- Find command interpreters spawned under Chrome or Edge with network or encoded-command indicators
LET browsers = SELECT Pid, Name, Exe, Username FROM pslist() WHERE Name =~ '^(chrome|msedge)\\.exe$'
SELECT Pid, Ppid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Name =~ '^(powershell|pwsh|cmd|mshta|rundll32|regsvr32|wscript|cscript)\\.exe$'
  AND CommandLine =~ '(?i)(-enc|frombase64string|invoke-expression|iex|invoke-webrequest|invoke-restmethod|downloadstring|start-bitstransfer|https?://)'
PowerShell
# Audit Chrome and Edge extensions, score risky permissions, and optionally enforce allowlist/blocklist policy.
# Run as Administrator for policy hardening. Default is audit-only and does not remove extensions.
param(
  [switch]$ApplyHardening,
  [string[]]$ApprovedExtensionIds = @("REPLACE_WITH_APPROVED_CHROME_OR_EDGE_EXTENSION_ID"),
  [string]$ReportPath = "$env:ProgramData\SecurityArsenal\BrowserExtensionAudit.csv"
)

$riskyPermissions = @("history","cookies","tabs","activeTab","storage","scripting","clipboardRead","clipboardWrite","webRequest","webRequestBlocking","declarativeNetRequest","declarativeNetRequestWithHostAccess","nativeMessaging","management","downloads","privacy","proxy","contentSettings","<all_urls>","*://*/*")
$browserRoots = @(
  @{Browser="Chrome"; Base="$env:LOCALAPPDATA\Google\Chrome\User Data"},
  @{Browser="Edge"; Base="$env:LOCALAPPDATA\Microsoft\Edge\User Data"}
)

$results = New-Object System.Collections.Generic.List[object]
foreach ($root in $browserRoots) {
  if (-not (Test-Path $root.Base)) { continue }
  $profiles = Get-ChildItem -Path $root.Base -Directory -ErrorAction SilentlyContinue | Where-Object { $_.Name -eq "Default" -or $_.Name -like "Profile*" }
  foreach ($profile in $profiles) {
    $extDir = Join-Path $profile.FullName "Extensions"
    if (-not (Test-Path $extDir)) { continue }
    foreach ($ext in Get-ChildItem $extDir -Directory -ErrorAction SilentlyContinue) {
      foreach ($ver in Get-ChildItem $ext.FullName -Directory -ErrorAction SilentlyContinue) {
        $manifest = Join-Path $ver.FullName "manifest.json"
        if (-not (Test-Path $manifest)) { continue }
        try { $m = Get-Content $manifest -Raw | ConvertFrom-Json } catch { continue }
        $perms = @()
        if ($m.permissions) { $perms += $m.permissions }
        if ($m.optional_permissions) { $perms += $m.optional_permissions }
        $hostPerms = @()
        if ($m.host_permissions) { $hostPerms += $m.host_permissions }
        $matches = @($perms + $hostPerms | Where-Object { $riskyPermissions -contains $_ -or $_ -like "*://*/*" -or $_ -eq "<all_urls>" })
        $score = 0
        if ($matches.Count -ge 1) { $score += 2 }
        if ($matches.Count -ge 4) { $score += 3 }
        if (($perms + $hostPerms) -match "nativeMessaging|management|webRequest|declarativeNetRequest|cookies|history") { $score += 3 }
        $results.Add([pscustomobject]@{
          Browser=$root.Browser; Profile=$profile.Name; ExtensionId=$ext.Name; Version=$ver.Name
          Name=$m.name; RiskScore=$score; RiskyPermissions=($matches -join ";"); AllPermissions=(($perms + $hostPerms) -join ";")
          ManifestPath=$manifest
        })
      }
    }
  }
}

New-Item -ItemType Directory -Force -Path (Split-Path $ReportPath) | Out-Null
$results | Sort-Object RiskScore -Descending | Export-Csv -NoTypeInformation -Path $ReportPath
Write-Host "Audit complete: $ReportPath"

if ($ApplyHardening) {
  # Enforce default-deny for extensions. Only allow explicitly approved IDs. Test in a pilot OU first.
  $chromePolicy = "HKLM:\SOFTWARE\Policies\Google\Chrome\ExtensionInstallBlocklist"
  $edgePolicy = "HKLM:\SOFTWARE\Policies\Microsoft\Edge\ExtensionInstallBlocklist"
  $chromeAllow = "HKLM:\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlist"
  $edgeAllow = "HKLM:\SOFTWARE\Policies\Microsoft\Edge\ExtensionInstallAllowlist"
  foreach ($p in @($chromePolicy,$edgePolicy,$chromeAllow,$edgeAllow)) { New-Item -Force -Path $p | Out-Null }
  Set-ItemProperty -Path $chromePolicy -Name "1" -Value "*"
  Set-ItemProperty -Path $edgePolicy -Name "1" -Value "*"
  $i = 1
  foreach ($id in $ApprovedExtensionIds) {
    Set-ItemProperty -Path $chromeAllow -Name "$i" -Value $id
    Set-ItemProperty -Path $edgeAllow -Name "$i" -Value $id
    $i++
  }
  Write-Host "Hardening applied. Replace ApprovedExtensionIds with your sanctioned list before broad rollout."
}

Remediation

Immediate user and endpoint actions

  • Remove suspicious or unneeded extensions from chrome://extensions and edge://extensions. Prioritize anything with access to all sites, history, cookies, clipboard, downloads, scripting, native messaging, or request modification.
  • Disable browser sync temporarily, remove the malicious extension on every synced device, then re-enable sync only after the profile is clean. Otherwise the extension can return.
  • Clear cookies and site data for affected profiles and force sign-out of sensitive SaaS sessions. Rotate passwords from a known-clean device, starting with email, SSO, banking, password manager, and crypto accounts.
  • Treat exposed wallet seed phrases or private keys as compromised. Move assets to a newly generated wallet whose seed was created offline; do not merely change a password on the same wallet.
  • If any ClickFix command was pasted or executed, isolate the host and collect triage evidence before cleanup: process tree, PowerShell history, RunMRU, Prefetch, browser profile, extension manifests, and network connections.

Enterprise controls

  • Move to default-deny extension governance: block all extensions by policy and allow only approved IDs. Pilot first to avoid breaking line-of-business extensions.
  • Disable developer mode and sideloading for standard users; restrict nativeMessaging and high-risk permission combinations where possible through browser management policy.
  • Enable Chrome Enhanced Safe Browsing and Microsoft SmartScreen, and ensure Safe Browsing/SmartScreen telemetry reaches your SIEM where licensing permits.
  • Add user guidance for ClickFix: no legitimate site, CAPTCHA, browser update, or "fix" requires Win+R, PowerShell, Terminal, or pasting commands. Report and close the page.
  • Use AppLocker or WDAC to constrain user-launched mshta.exe, unsigned PowerShell, and script hosts where operationally feasible. Protect with exclusions rather than broad disablement.
  • Monitor egress for newly observed domains contacted by browser processes and by shells spawned shortly after browser activity; alert on browser-spawned script interpreters as a high-fidelity behavior.

Forensic preservation

Preserve the full browser profile before deletion where compromise is suspected: Extensions, Preferences, Secure Preferences, History, Web Data, Login Data, Cookies, Local Extension Settings, IndexedDB, cache, and sync state. Record extension ID, version, install source, update URLs, manifest permissions, first seen timestamps, and whether the extension was present in an enterprise allowlist.

Reporting and takedown

Report malicious items to Google through the Chrome Web Store abuse/report flow and to Microsoft through the Edge Add-ons report mechanism, including extension ID, version, observed behavior, and host indicators. Because there is no CVE and no browser patch in this report, remediation depends on takedown plus local removal, session invalidation, and policy controls rather than a fixed browser version.

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.