Two concurrent OTX pulses published on 2026-08-05 reveal a broad infostealer and credential-theft wave hitting both consumer and enterprise attack surfaces simultaneously.
Pulse 1 — Fake Xeno Roblox Executor Campaign: Threat actors are distributing trojanized versions of the Xeno script executor for Roblox through gaming forums and Discord communities. The lure targets gamers (predominantly younger users), but the payload is enterprise-relevant: a multi-stage Java infection chain that masquerades as legitimate Windows and gaming components — including files staged inside Xbox Game Bar directories. The final payload, tracked as Powercat, operates as both an information stealer and a remote access trojan with webcam surveillance capability. Objectives include cryptocurrency wallet theft, credential harvesting, and persistent remote access. Any employee gaming on a corporate or hybrid-use device creates a direct bridge into the enterprise environment.
Pulse 2 — keyv / cacheable npm Supply Chain Compromise: An active, self-propagating supply chain attack compromised the widely-used keyv and cacheable npm packages — together accounting for tens of millions of weekly downloads. On August 4, 2026, at least ten malicious package versions were published containing hostile preinstall hooks that download a Bun runtime and execute obfuscated payloads. Initial access came from the compromise of maintainer account Jaredwray. Notably, the malware reads its C2 configuration from an Ethereum smart contract, making takedown-resistant infrastructure. The payload targets developer credentials, cloud credentials (AWS/GCP/Azure), CI/CD secrets, and self-propagates as a worm through the npm ecosystem.
Collective assessment: Both campaigns share a common objective — credential and secret theft at scale — but attack opposite ends of the kill chain: endpoint users via social engineering, and build pipelines via trusted package repositories. Organizations must assume both developer workstations and build runners are in scope.
Threat Actor / Malware Profile
Powercat (Java Stealer / RAT)
- Distribution: Malvertising-style social engineering — fake Xeno Roblox executor downloads pushed via Discord servers and gaming forums.
- Payload behavior: Multi-stage Java infection chain; final stage is a dual-purpose infostealer and RAT. Harvests browser credentials, session tokens, and cryptocurrency wallets; supports webcam surveillance.
- Masquerading: Drops components into Xbox Game Bar directory paths (
%LOCALAPPDATA%\Microsoft\XboxGameBar\and similar) to blend with legitimate Windows gaming artifacts. - C2 communication: Outbound to actor-controlled
.xyzdomains (e.g.,ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a.xyz). - Anti-analysis: Obfuscated Java stages, file naming that mimics gaming components, staged execution to defeat static detection.
npm Supply Chain Worm (keyv / cacheable)
- Distribution: Compromised maintainer account publishing malicious preinstall hooks in legitimate, high-download packages.
- Payload behavior: Preinstall script downloads a Bun runtime, executes obfuscated JavaScript, exfiltrates developer/cloud credentials and CI/CD tokens, then self-propagates by republishing to packages the victim's stolen npm tokens can access.
- C2 communication: C2 address is read dynamically from an Ethereum smart contract — a blockchain-based dead-drop resolver that resists traditional domain takedown.
- Persistence: Poisoned packages persist in
node_modules, lockfiles, and private registry caches until explicitly remediated. - Anti-analysis: Heavy JavaScript obfuscation; runtime-based execution (Bun) that evades Node-only sandboxes.
IOC Analysis
The pulse indicators break down into two operational classes:
- Network indicators (Pulse 1): One high-entropy
.xyzdomain used for Powercat C2/exfiltration. Action: block at DNS sinkhole, web proxy, and EDR network layers. High-entropy subdomain patterns (64-char hex-style labels) are themselves a detection heuristic. - File indicators (both pulses): 36 indicators in Pulse 1 (MD5-heavy) covering Powercat loader and payload stages; 9 indicators in Pulse 2 (SHA1/SHA256/MD5) covering malicious package tarballs and dropped Bun payloads. Action: push hashes to EDR block lists, email/web gateway scanning, and — critically for Pulse 2 — software composition analysis (SCA) tooling that scans
node_modulesand lockfiles.
Operationalization guidance:
- Load all hashes into your threat intel platform (MISP, ThreatConnect, or native SIEM TI lists) and retro-hunt at least 30 days.
- For Pulse 2, hash-matching alone is insufficient — audit
package.jsonand lockfiles forkeyvandcacheableversions published on/after 2026-08-04, and scan for unexpectedpreinstallscripts. - Tooling: YARA for endpoint file scanning, Sigma for behavioral detection,
npm audit+ SCA (Snyk, Socket, Dependabot) for the supply chain side, and DNS analytics for hex-label.xyzlookups.
Detection Engineering
---
title: Powercat Java Stealer Execution via Xbox Game Bar Masquerading
id: 9f1a2c44-7b21-4c9e-8f3a-pc2026080501
status: experimental
description: Detects Java runtime execution of payloads staged in Xbox Game Bar directories, consistent with the Powercat infostealer delivered via fake Xeno Roblox executors.
author: Security Arsenal Threat Intelligence
date: 2026/08/05
references:
- https://www.bitdefender.com/en-us/blog/labs/fake-xeno-roblox-discord-executor
logsource:
category: process_creation
product: windows
detection:
selection_java:
Image|endswith:
- '\java.exe'
- '\javaw.exe'
selection_path:
CommandLine|contains:
- 'XboxGameBar'
- 'Xbox Game Bar'
selection_param:
CommandLine|contains:
- '-jar'
- '.jar'
condition: selection_java and selection_path and selection_param
falsepositives:
- Legitimate Java-based gaming tooling (rare in Xbox Game Bar paths)
level: high
tags:
- attack.execution
- attack.t1059
- attack.t1036
---
title: Powercat C2 Communication to High-Entropy XYZ Domain
id: 9f1a2c44-7b21-4c9e-8f3a-pc2026080502
status: experimental
description: Detects DNS queries to the known Powercat C2 domain and high-entropy hex-style .xyz subdomains associated with the fake Xeno Roblox campaign.
author: Security Arsenal Threat Intelligence
date: 2026/08/05
logsource:
category: dns
detection:
selection_known:
query|contains:
- 'ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a.xyz'
selection_heuristic:
query|re: '^[a-f0-9]{48,}\.xyz$'
condition: selection_known or selection_heuristic
falsepositives:
- Rare legitimate hex-labeled .xyz services
level: critical
tags:
- attack.command_and_control
- attack.t1071
---
title: Malicious npm Preinstall Hook Spawning Bun Runtime
id: 9f1a2c44-7b21-4c9e-8f3a-npm2026080501
status: experimental
description: Detects npm install processes spawning Bun runtime or download utilities, consistent with the keyv/cacheable supply chain compromise executing preinstall payloads.
author: Security Arsenal Threat Intelligence
date: 2026/08/05
references:
- https://www.netskope.com/blog/npm-stealer-reads-its-c2-from-an-ethereum-contract
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\npm.cmd'
- '\npm.exe'
- '\node.exe'
selection_child:
Image|endswith:
- '\bun.exe'
- '\curl.exe'
- '\powershell.exe'
- '\certutil.exe'
selection_preinstall:
CommandLine|contains:
- 'preinstall'
condition: selection_parent and (selection_child or selection_preinstall)
falsepositives:
- Legitimate packages using Bun or preinstall scripts; baseline and tune against approved package lists
level: high
tags:
- attack.initial_access
- attack.t1195
- attack.t1059
// Hunt: Powercat Java execution + npm preinstall abuse + Powercat C2 beaconing
let C2Domain = "ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a.xyz";
let PowercatHashes = dynamic(["0aadd62b535e683a5a2fe31fde546d07","0d03faf1764297c908158da77c8ffcae","163c8d117ef5a4e4e9c3e92a726af0eb","26a94168fa25af0bcb46a18ede50af86","2ead73ed62f1c2beb9043ce92e774e0b","1a462c76efc4e73725b9e95c4a00fddb","4bdaf7792e908f163ebef137854c571d"]);
let NpmHashes = dynamic(["54dc7ea54a1317cca0e890a2770630cf7fa6c97813e0cb9d2caa93012b350668","9fc2570b7cef51c1b8df116d144d11ff4096357be7d2c4c6367cfc2509cf1bcc","fd3ca4007b225fdf8de7af4345a19179d5efa8c4bb9205f88cda806e5684b1eb","4140f7e17e6f97f83aa3472473e01add","7bcf8d9f6834c44450eac145a967d2f2","f92ee93a0af971a3966bfa8efa9c2625"]);
union isfuzzy=true
(DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where (FileName in~ ("java.exe","javaw.exe") and ProcessCommandLine has "XboxGameBar")
or (InitiatingProcessFileName in~ ("npm.cmd","npm.exe","node.exe")
and (FileName =~ "bun.exe" or ProcessCommandLine has "preinstall" or ProcessCommandLine has "curl"))
or (MD5 in (PowercatHashes) or MD5 in (NpmHashes) or SHA256 in (NpmHashes))
| project TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, SHA256, MD5
| extend HuntType = "Process/Hash"),
(DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where RemoteUrl contains C2Domain or RemoteUrl matches regex @"^[a-f0-9]{48,}\.xyz$"
| project TimeGenerated, DeviceName, RemoteUrl, RemoteIP, InitiatingProcessFileName, InitiatingProcessCommandLine
| extend HuntType = "Network/C2")
| sort by TimeGenerated desc
# PowerShell IOC Hunt: Powercat + npm Supply Chain Compromise
$md5Hashes = @("0aadd62b535e683a5a2fe31fde546d07","0d03faf1764297c908158da77c8ffcae","163c8d117ef5a4e4e9c3e92a726af0eb","26a94168fa25af0bcb46a18ede50af86","2ead73ed62f1c2beb9043ce92e774e0b","1a462c76efc4e73725b9e95c4a00fddb","4bdaf7792e908f163ebef137854c571d","4140f7e17e6f97f83aa3472473e01add","7bcf8d9f6834c44450eac145a967d2f2","f92ee93a0af971a3966bfa8efa9c2625")
$c2Domain = "ce953a0eb08246617b7f849486c4b26a7af37e9d2e8f0e13b3ae1bf0da8a70a.xyz"
Write-Host "[1] Scanning Xbox Game Bar dirs for suspicious .jar payloads..."
$xboxPaths = @("$env:LOCALAPPDATA\Microsoft\XboxGameBar","$env:LOCALAPPDATA\Packages\Microsoft.XboxGamingOverlay*")
foreach ($p in $xboxPaths) {
Get-ChildItem -Path $p -Recurse -Include *.jar,*.class,*.js -ErrorAction SilentlyContinue |
ForEach-Object { Write-Host " SUSPICIOUS: $($_.FullName)" }
}
Write-Host "[2] Hash-hunting user-writable directories..."
$scanDirs = @("$env:TEMP","$env:LOCALAPPDATA","$env:APPDATA")
foreach ($d in $scanDirs) {
Get-ChildItem -Path $d -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.Length -lt 50MB } |
ForEach-Object {
$h = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash
if ($h -and ($md5Hashes -contains $h.ToLower())) {
Write-Host " IOC MATCH: $($_.FullName) [$h]"
}
}
}
Write-Host "[3] Checking for compromised npm packages (keyv/cacheable, Aug 2026)..."
$nmPaths = Get-ChildItem -Path "C:\","$env:USERPROFILE" -Recurse -Directory -Filter "node_modules" -ErrorAction SilentlyContinue -Depth 4
foreach ($nm in $nmPaths) {
foreach ($pkg in @("keyv","cacheable")) {
$pkgJson = Join-Path $nm.FullName "$pkg\package.json"
if (Test-Path $pkgJson) {
$meta = Get-Content $pkgJson | ConvertFrom-Json
Write-Host " FOUND $($pkg) v$($meta.version) at $pkgJson"
if ($meta.scripts.preinstall) { Write-Host " ALERT: preinstall hook present -> $($meta.scripts.preinstall)" }
}
}
}
Write-Host "[4] Checking DNS cache for Powercat C2..."
Get-DnsClientCache | Where-Object { $_.Entry -match $c2Domain -or $_.Entry -match "^[a-f0-9]{48,}\.xyz$" } |
ForEach-Object { Write-Host " C2 HIT: $($_.Entry) -> $($_.Data)" }
Write-Host "[5] Checking for Bun runtime drops..."
Get-ChildItem -Path "$env:USERPROFILE","C:\ProgramData" -Recurse -Filter "bun.exe" -ErrorAction SilentlyContinue -Depth 4 |
ForEach-Object { Write-Host " BUN FOUND: $($_.FullName)" }
Write-Host "Hunt complete. Review hits and isolate affected hosts."
Response Priorities
Immediate (0-4 hours)
- Block the Powercat C2 domain and high-entropy
.xyzregex pattern at DNS, proxy, and EDR network layers; push all 45 file hashes to EDR/AV block lists. - Freeze npm installs from public registry in CI/CD pipelines until package versions are audited; pin or roll back
keyvandcacheableto versions published before 2026-08-04. - Run the KQL and PowerShell hunts across all endpoints, prioritizing developer workstations and build runners.
24 Hours
- Both campaigns are credential-stealing — assume compromise of any secrets on affected hosts: force rotation of cloud access keys (AWS/GCP/Azure), npm tokens, GitHub/GitLab PATs, CI/CD secrets, and browser-stored credentials.
- Review npm publish logs for unexpected package publications from developer accounts (worm self-propagation indicator).
- Verify identity events for anomalies: impossible travel, new MFA enrollments, session token reuse — Powercat steals session cookies enabling MFA bypass.
- Invalidate active sessions for any user whose device shows Java/Xbox Game Bar execution artifacts.
1 Week
- Harden the software supply chain: enforce private registry proxying (Artifactory/Nexus) with package quarantine windows, require lockfile integrity checks, and block
preinstall/postinstallscript execution in CI (npm ci --ignore-scripts). - Segment build runners from production credential stores; adopt short-lived OIDC-based cloud credentials instead of static keys in pipelines.
- Deploy application control policies blocking Java execution from user-writable and gaming-related directories on corporate endpoints.
- Establish a gaming/BYOD policy for corporate devices; Powercat's lure specifically targets non-enterprise contexts that bleed into enterprise environments.
Related Resources
Security Arsenal Incident Response Managed SOC & MDR Services AlertMonitor Threat Detection From The Dark Side Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.