Security researcher Chaotic Eclipse — also referenced as INFINITE NIGHTMARE, MSNightmare, and Nightmare-Eclipse — released a proof-of-concept issue named PrettyPrague targeting Gen Digital Avast Antivirus. The reported impact class is local elevation of privilege: a process running with standard user rights abuses a trusted antivirus component, service, update/repair flow, IPC endpoint, or filesystem operation to execute code or change state in a higher-integrity context. The source item does not provide a CVE identifier, affected build numbers, a CVSS score, or confirmation of mass exploitation. Do not invent one. Treat this as an unpatched, publicly discussed EoP PoC against a widely deployed Windows security agent until Gen Digital publishes a fixed version or advisory.
The defensive urgency is not that every workstation is suddenly compromised remotely. The risk is the common post-intrusion path: phishing or commodity malware lands as a user, then the operator needs reliable local privilege escalation and security-tool tampering to persist, disable telemetry, deploy ransomware, or access credential material. Antivirus and EDR processes are high-value targets because they run as SYSTEM, own powerful drivers, and are often excluded from the very controls defenders apply elsewhere. A PoC against Avast therefore matters most in environments with local users, contractors, kiosks, VDI, developer workstations, and incident-response cases where an attacker already has a foothold.
Technical analysis
Affected products/platforms: the news item names Gen Digital Avast Antivirus. In practice, assume Windows endpoints running Avast/AVG-branded consumer or business agents from Gen Digital are in scope until the vendor clarifies affected SKUs and versions. Because no vulnerable version range is public, prioritize exposure by role rather than by guesswork: shared workstations, endpoints where users are not local admins but can execute code, servers with interactive logons, and any host where Avast is the primary control plane.
Vulnerability class and likely attack chain: the disclosed category is elevation of privilege. For endpoint security products, the repeatable defender-relevant patterns are: insecure service or driver communication, privileged file/registry operations performed on behalf of a low-privileged caller, permissive ACLs on install or data directories, unsafe DLL search/order or repair/update logic, named-pipe/RPC/ALPC endpoints that trust caller identity too loosely, and child-process or service-control paths that let a user influence SYSTEM-owned components. The PoC name is useful for intelligence tracking, but the durable detections are the behaviors: Avast processes spawning unusual children, non-Avast binaries writing into trusted Avast locations, service control attempts against Avast, and integrity/ownership changes around Avast binaries and drivers.
Exploitation requirements: local code execution is the practical precondition. The attacker typically already controls a user-context process and wants SYSTEM or a trusted security-context token. That makes this a post-compromise force multiplier rather than an initial-access vector by itself. Environments with strong application control, constrained scripting, no local admin rights, and hardened service ACLs reduce blast radius even before a vendor patch exists.
Exploitation status: public PoC/release is claimed by the researcher. The provided item does not state inclusion in CISA KEV, confirmed ransomware use, or a vendor patch. Operationally, handle as credible unpatched local EoP with public PoC availability: raise detection priority, verify inventory, and prepare emergency change windows for agent upgrade once Gen Digital publishes fixed builds.
Detection and response
The highest-fidelity signals are not hashes of a PoC; they are control-plane violations around the AV agent. Baseline legitimate Avast updater and repair activity, then alert on deviations.
---
title: Avast Trusted Process Spawning Unexpected Command or Script Child
id: 8d3b7a10-1c4f-4a7d-9b6a-2e0c5f71aa11
status: experimental
description: Detects common Avast service or UI processes spawning command interpreters, script hosts, or proxy-execution binaries consistent with local privilege escalation or AV tamper behavior.
references:
- https://securityaffairs.com/198243/hacking/chaotic-eclipse-releases-gendigital-avast-antivirus-zeroday-prettyprague.html
- https://attack.mitre.org/techniques/T1068/
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/05/22
tags:
- attack.privilege_escalation
- attack.t1068
- attack.defense_evasion
- attack.t1562.001
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\AvastSvc.exe'
- '\aswEngSrv.exe'
- '\aswidsagenta.exe'
- '\AvastUI.exe'
- '\AvEmUpdate.exe'
- '\aswVmm.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\regsvr32.exe'
- '\wmic.exe'
- '\sc.exe'
- '\net.exe'
- '\net1.exe'
- '\whoami.exe'
- '\nltest.exe'
- '\certutil.exe'
- '\bitsadmin.exe'
- '\msiexec.exe'
- '\schtasks.exe'
- '\reg.exe'
filter_known_updater:
CommandLine|contains:
- 'Avast\setup'
- 'Avast Software\setup'
- 'instup.exe'
- 'AvEmUpdate'
condition: selection_parent and selection_child and not filter_known_updater
falsepositives:
- Rare vendor support diagnostics, AV repair, or managed software deployment that legitimately launches shells from Avast components
level: high
---
title: Service Control or Registry Tampering Targeting Avast Services
id: 3f0d8c42-7b6e-4d21-a5c9-9d2e4b8c0f77
status: experimental
description: Detects attempts to stop, delete, reconfigure, or change security on Avast services by common Windows service-control utilities.
references:
- https://securityaffairs.com/198243/hacking/chaotic-eclipse-releases-gendigital-avast-antivirus-zeroday-prettyprague.html
- https://attack.mitre.org/techniques/T1562/001/
author: Security Arsenal
date: 2026/05/22
tags:
- attack.defense_evasion
- attack.t1562.001
- attack.privilege_escalation
logsource:
category: process_creation
product: windows
detection:
selection_tool:
Image|endswith:
- '\sc.exe'
- '\net.exe'
- '\net1.exe'
- '\reg.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wmic.exe'
selection_terms:
CommandLine|contains:
- 'stop avast'
- 'stop asw'
- 'config avast'
- 'delete avast'
- 'sdset avast'
- 'failure avast'
- 'AvastSvc'
- 'aswVmm'
- 'aswbidsagent'
- 'aswidsagenta'
- 'SYSTEM\CurrentControlSet\Services\Avast'
- 'SYSTEM\CurrentControlSet\Services\asw'
filter_mgmt:
CommandLine|contains:
- ' start avast'
- ' query avast'
- ' qc avast'
condition: selection_tool and selection_terms and not filter_mgmt
falsepositives:
- Authorized service desk repair, uninstall, upgrade, or vendor support procedures
level: high
---
title: Untrusted Write to Avast Install or Data Directories
id: b61a9c55-04c7-4f84-a01e-6ca3d70c9b22
status: experimental
description: Detects file creation by non-allowlisted processes in Avast program or program-data paths where privileged components load binaries, configuration, or update artifacts.
references:
- https://securityaffairs.com/198243/hacking/chaotic-eclipse-releases-gendigital-avast-antivirus-zeroday-prettyprague.html
- https://attack.mitre.org/techniques/T1574/
- https://attack.mitre.org/techniques/T1068/
author: Security Arsenal
date: 2026/05/22
tags:
- attack.persistence
- attack.privilege_escalation
- attack.t1574
- attack.t1068
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains:
- '\Program Files\Avast Software\'
- '\Program Files (x86)\Avast Software\'
- '\ProgramData\Avast Software\'
- '\ProgramData\AVAST Software\'
- '\Windows\System32\drivers\asw'
selection_ext:
TargetFilename|endswith:
- '.exe'
- '.dll'
- '.sys'
- '.bat'
- '.cmd'
- '.ps1'
- '.vbs'
- '.js'
- '.msi'
filter_allow:
Image|endswith:
- '\AvastSvc.exe'
- '\AvEmUpdate.exe'
- '\instup.exe'
- '\aswEngSrv.exe'
- '\TiWorker.exe'
- '\TrustedInstaller.exe'
- '\msiexec.exe'
condition: selection_path and selection_ext and not filter_allow
falsepositives:
- Legitimate product updates, enterprise software distribution, or vendor support tooling staging signed Avast components
level: medium
// Hunt for Avast control-plane violations and suspicious children over the last 14 days.
let lookback = 14d;
let AvastParents = dynamic(["AvastSvc.exe","aswEngSrv.exe","aswidsagenta.exe","AvastUI.exe","AvEmUpdate.exe","aswVmm.exe","instup.exe"]);
let ProxyChildren = dynamic(["cmd.exe","powershell.exe","pwsh.exe","wscript.exe","cscript.exe","mshta.exe","rundll32.exe","regsvr32.exe","wmic.exe","sc.exe","net.exe","net1.exe","reg.exe","whoami.exe","certutil.exe","bitsadmin.exe","msiexec.exe","schtasks.exe"]);
DeviceProcessEvents
| where TimeGenerated >= ago(lookback)
| extend ParentName = tostring(split(InitiatingProcessFileName, "\")[-1]), ChildName = tostring(split(FileName, "\")[-1])
| where ParentName in~ (AvastParents)
| where ChildName in~ (ProxyChildren)
or ProcessCommandLine has_any ("AvastSvc","aswVmm","aswbidsagent","aswidsagenta","sc stop","sc delete","sc config","sdset","SYSTEM\\CurrentControlSet\\Services\\Avast","SYSTEM\\CurrentControlSet\\Services\\asw")
| where not(ProcessCommandLine has_any ("AvEmUpdate","instup","Avast Software\\setup","Avast\\setup"))
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated), Count=count(), Commands=make_set(ProcessCommandLine, 20), Accounts=make_set(AccountName, 20)
by DeviceName, InitiatingProcessFileName, FileName, SHA256, ReportId
| order by LastSeen desc;
-- Collect Avast process context and staged executables in trusted Avast paths for triage.
LET procs = SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime FROM pslist()
WHERE Exe =~ '(?i)Avast|asw'
OR CommandLine =~ '(?i)AvastSvc|aswVmm|aswidsagenta|sc (stop|delete|config).*avast|CurrentControlSet\\\\Services\\\\(Avast|asw)'
LET files = SELECT FullPath, Size, Mtime, Ctime FROM glob(globs=['C:/Program Files/Avast Software/**/*.exe','C:/Program Files/Avast Software/**/*.dll','C:/Program Files (x86)/Avast Software/**/*.exe','C:/ProgramData/Avast Software/**/*.exe','C:/ProgramData/Avast Software/**/*.dll','C:/Windows/System32/drivers/asw*.sys'])
WHERE Mtime > now() - 1209600
SELECT * FROM procs
UNION ALL
SELECT NULL AS Pid, NULL AS Ppid, 'FILE' AS Name, FullPath AS Exe, '' AS CommandLine, '' AS Username, Mtime AS CreateTime FROM files
# Verify Avast presence, capture service/security context, enable command-line auditing, and add audit SACLs without breaking product ACLs.
$ErrorActionPreference = 'Continue'
$report = Join-Path $env:ProgramData ('Avast_EoP_Exposure_' + (Get-Date -Format 'yyyyMMdd_HHmmss') + '.json')
$paths = @("$env:ProgramFiles\Avast Software", "${env:ProgramFiles(x86)}\Avast Software", "$env:ProgramData\Avast Software") | Where-Object { $_ -and (Test-Path $_) }
$svc = Get-CimInstance Win32_Service | Where-Object { $_.Name -match '^(Avast|asw)' -or $_.DisplayName -match 'Avast|AVG' } | Select-Object Name, DisplayName, State, StartMode, PathName, StartName
$bins = $paths | ForEach-Object { Get-ChildItem $_ -Recurse -Include AvastSvc.exe,aswEngSrv.exe,aswidsagenta.exe,aswVmm.sys,aswSP.sys -ErrorAction SilentlyContinue | Select-Object FullName, @{n='Version';e={$_.VersionInfo.ProductVersion}}, @{n='Signed';e={(Get-AuthenticodeSignature $_.FullName).Status}} }
$aclFindings = foreach ($p in $paths) { $a = Get-Acl $p; [pscustomobject]@{Path=$p; Owner=$a.Owner; InheritanceDisabled=$a.AreAccessRulesProtected; RiskyEntries=($a.Access | Where-Object { $_.IdentityReference -match 'Everyone|BUILTIN\Users|Authenticated Users' -and $_.AccessControlType -eq 'Allow' -and $_.FileSystemRights -match 'FullControl|Modify|Write' } | Select-Object IdentityReference,FileSystemRights,AccessControlType)} }
auditpol /set /subcategory:"Process Creation" /success:enable /failure:enable | Out-Null
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" /v ProcessCreationIncludeCmdLine_Enabled /t REG_DWORD /d 1 /f | Out-Null
foreach ($p in $paths) {
$acl = Get-Acl $p
$audit = New-Object System.Security.AccessControl.FileSystemAuditRule('Everyone','Modify,Write,CreateFiles,CreateDirectories,DeleteSubdirectoriesAndFiles','ContainerInherit,ObjectInherit','None','Success,Failure')
$acl.AddAuditRule($audit)
Set-Acl -Path $p -AclObject $acl
}
[pscustomobject]@{Computer=$env:COMPUTERNAME; Timestamp=(Get-Date); Services=$svc; Binaries=$bins; ACLFindings=$aclFindings; Paths=$paths} | ConvertTo-Json -Depth 8 | Set-Content -Encoding UTF8 $report
Write-Output "Report written: $report. Review risky ACL entries, confirm agent is updated via vendor console, and hunt for writes/service control before applying any deny ACLs."
Remediation and risk reduction
-
Inventory and version-pin now. Use your software inventory, EDR, or the script above to enumerate Avast/AVG services, driver files, product versions, and installation paths. Flag endpoints with interactive users, legacy agents, disabled self-protection, unsupported OS builds, and missing tamper protection.
-
Patch only from verified vendor channels. At the time of writing, the source item does not name a fixed build or CVE. Update through the official Avast/Gen Digital console, built-in updater, or vendor support guidance after validating authenticity and test-ring behavior. Start with vendor security/support portals such as
https://www.avast.com/security,https://support.avast.com, andhttps://www.gendigital.com; require release notes or advisory text that explicitly references the privilege-escalation fix before broad rollout. -
Apply compensating controls until patched. Remove local admin rights, enforce WDAC/AppLocker or equivalent application control, constrain PowerShell with Constrained Language Mode and script block logging, block untrusted child processes from AV/EDR parents where your platform supports it, and separate update servers or management consoles from user networks. Avoid broad deny ACLs on Avast directories unless tested; prefer audit-first hardening plus application control.
-
Protect the control plane. Enable command-line process auditing, forward process creation, file creation, service, registry, and driver-load telemetry to the SIEM, and alert on service stop/delete/reconfig for Avast services. Confirm self-protection/tamper features are enabled in the Avast policy, and investigate any host where the AV service unexpectedly stops, restarts, changes binary path, or spawns shells.
-
Threat-model the realistic path. Pair this EoP scenario with initial-access controls: email detonation, browser isolation for high-risk users, MFA-resistant remote access, rapid credential hygiene, and segmentation that prevents a single escalated workstation from reaching backup, hypervisor, SCCM/Intune, or identity infrastructure.
-
IR triggers. If you observe the Sigma behaviors above on a host with suspected intrusion, isolate the endpoint, preserve process command lines and parent/child telemetry, capture Avast install and ProgramData directory listings with ACLs, export service configuration and relevant event logs, acquire memory if the AV process is suspect, and check whether the escalation preceded credential dumping, ransomware staging, or security-tool disabling.
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.