The Zero Day Initiative has published ZDI-26-866, disclosing a server-side template injection (SSTI) vulnerability in Quest Foglight for Databases tracked as CVE-2026-92196. The flaw resides in the product's renderTemplateString functionality and allows a remote attacker to execute arbitrary code on the underlying Foglight Management Server. ZDI assigns the issue a CVSS score of 7.2 (High).
This is not a theoretical concern for most enterprises. Foglight for Databases sits at the center of database monitoring estates, typically holding privileged credentials for SQL Server, Oracle, MySQL, PostgreSQL, and DB2 instances across production environments. A compromise of the Foglight Management Server is effectively a compromise of a credential vault and a lateral-movement springboard into your most sensitive data tier. Even with an authenticated exploitation requirement — as noted in ZDI's summary — a CVSS 7.2 code execution flaw on a management plane system demands immediate triage, patching, and retrospective hunting.
Technical Analysis
Affected Product and Component
- Product: Quest Foglight for Databases (Foglight Management Server with the database monitoring cartridge)
- Vulnerable component:
renderTemplateStringtemplate rendering functionality - Vulnerability class: Server-Side Template Injection (CWE-1336 / CWE-94 — Improper Neutralization of Special Elements Used in a Template Engine, leading to code injection)
- CVE: CVE-2026-92196
- CVSS: 7.2 (High) per ZDI
- Advisory: ZDI-26-866 — http://www.zerodayinitiative.com/advisories/ZDI-26-866/
How the Vulnerability Works
Foglight uses a server-side template engine to render dynamic content — alert messages, notification templates, dashboard elements, and report fragments. The renderTemplateString function takes a template string and evaluates it against the engine's expression language. The flaw: user-supplied input reaches renderTemplateString without adequate sandboxing or input validation, meaning an attacker can inject template expressions that escape the intended data-binding context and invoke arbitrary Java methods.
Foglight's backend is Java-based, and template engines in Java ecosystems (FreeMarker, Velocity, OGNL-style EL) are notorious for permitting class loading, Runtime.exec(), or ProcessBuilder invocation when the sandbox is misconfigured or absent. A typical exploitation chain looks like this:
- The attacker authenticates to the Foglight web console (per the ZDI summary, authentication is required — though the CVSS vector and any low-privilege/guest-access nuances should be verified against the final advisory text).
- A crafted request containing malicious template syntax is submitted to an endpoint that passes input into
renderTemplateString. - The template engine evaluates the injected expression, resulting in arbitrary code execution in the context of the Foglight Management Server service account — frequently
LOCAL SYSTEMon Windows or a dedicated service account on Linux. - Post-exploitation: the attacker harvests stored database credentials from Foglight's configuration/repository, deploys a webshell or persistence mechanism, and pivots to monitored database hosts.
Why This Is Worse Than the Score Suggests
A 7.2 with an authentication requirement can tempt teams to deprioritize. Resist that instinct:
- Foglight consoles often have weak local credential hygiene — default accounts, shared admin passwords, or SSO service accounts with broad reach.
- The service account context is highly privileged. Code execution as the Foglight service typically means full host control plus access to every credential Foglight uses to monitor databases.
- Management servers are blind spots. EDR coverage on monitoring infrastructure is historically inconsistent, and Foglight servers are frequently excluded from aggressive scanning policies because they're 'production critical.'
Exploitation Status
As of publication, ZDI-26-866 is a coordinated disclosure — there is no confirmed in-the-wild exploitation and the flaw is not yet listed in CISA's Known Exploited Vulnerabilities catalog. However, ZDI advisories routinely attract rapid PoC development, and SSTI payloads against Java template engines are well-documented and trivially adaptable. Treat the pre-PoC window as your remediation runway, not as breathing room.
Detection & Response
The highest-fidelity detection strategy for this class of flaw is behavioral: the Foglight Java process should never spawn shells, scripting interpreters, or download utilities. Any such child process is a strong compromise indicator regardless of the specific template payload used.
Sigma Rules
---
title: Foglight Management Server Spawning Shell or Script Interpreter
id: 8f3a2b41-7c1d-4e9a-b5f2-6d8e1a4c9b07
status: experimental
description: Detects the Foglight for Databases Java process spawning command shells, script interpreters, or download utilities — a strong indicator of successful server-side template injection exploitation (CVE-2026-92196, ZDI-26-866).
references:
- http://www.zerodayinitiative.com/advisories/ZDI-26-866/
- https://attack.mitre.org/techniques/T1190/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.initial_access
- attack.t1190
- attack.execution
- attack.t1059
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\foglight.exe'
- '\fms.exe'
- '\java.exe'
- '\javaw.exe'
ParentCommandLine|contains:
- 'foglight'
- 'quest'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\certutil.exe'
- '\bitsadmin.exe'
- '\curl.exe'
- '\wget.exe'
condition: selection_parent and selection_child
falsepositives:
- Foglight custom scripts or agent deployment actions legitimately invoking cmd or PowerShell — baseline your environment before alerting at high severity
level: high
---
title: Webshell or Suspicious File Dropped in Foglight Web Root
id: 2c7d9e15-4a8b-4f36-91d0-3b5e7a2c8f46
status: experimental
description: Detects creation of script files (JSP, ASPX, WAR contents) in Foglight web/application directories, consistent with post-exploitation webshell deployment following template injection code execution.
references:
- http://www.zerodayinitiative.com/advisories/ZDI-26-866/
- https://attack.mitre.org/techniques/T1505.003/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.persistence
- attack.t1505.003
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains:
- '\Quest\Foglight\'
- '\foglight\server\'
- '\foglight\jboss\'
- '\foglight\tomcat\'
selection_ext:
TargetFilename|endswith:
- '.jsp'
- '.jspx'
- '.war'
- '.aspx'
- '.php'
- '.class'
condition: selection_path and selection_ext
falsepositives:
- Legitimate Foglight cartridge deployment and upgrades — correlate with patch windows and change tickets
level: medium
---
title: Foglight Server Process Making Unusual Outbound Network Connections
id: 5b1e8c73-9d2f-4a68-b7e4-1c3f6d9a2e85
status: experimental
description: Detects the Foglight Management Server process initiating outbound connections to uncommon external destinations, which may indicate payload retrieval or C2 following CVE-2026-92196 exploitation.
references:
- http://www.zerodayinitiative.com/advisories/ZDI-26-866/
- https://attack.mitre.org/techniques/T1071/
author: Security Arsenal
date: 2026/04/06
tags:
- attack.command_and_control
- attack.t1071
- attack.t1105
logsource:
category: network_connection
product: windows
detection:
selection_image:
Image|endswith:
- '\foglight.exe'
- '\fms.exe'
- '\java.exe'
- '\javaw.exe'
selection_cmdline:
CommandLine|contains: 'foglight'
filter_internal:
DestinationIp|startswith:
- '10.'
- '172.16.'
- '192.168.'
- '127.'
condition: selection_image and selection_cmdline and not filter_internal
falsepositives:
- Quest update/licensing servers and cloud-monitored database endpoints — whitelist known Quest infrastructure after baseline
level: medium
Note for Linux-hosted Foglight servers: translate the parent-process rule to your Linux auditd/Sysmon-for-Linux telemetry — key on
javaparent processes spawning/bin/sh,/bin/bash,curl,wget, orpython. Foglight runs its embedded application server via Java on both platforms.
KQL (Microsoft Sentinel / Defender)
This hunt surfaces Foglight server processes spawning shells or download tooling — the canonical post-SSTI behavior. It works whether your Foglight Management Server runs on Windows (via MDE) or Linux (via Syslog ingestion).
// Hunt: Foglight process spawning shells or LOLBins (CVE-2026-92196 / ZDI-26-866)
let foglightParents = dynamic(["foglight.exe", "fms.exe", "java.exe", "javaw.exe", "java"]);
let suspiciousChildren = dynamic(["cmd.exe", "powershell.exe", "pwsh.exe", "mshta.exe", "wscript.exe", "cscript.exe", "rundll32.exe", "certutil.exe", "bitsadmin.exe", "curl.exe", "wget.exe", "sh", "bash", "python", "python3", "perl", "nc", "ncat"]);
union isfuzzy=true
(DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where InitiatingProcessFileName has_any (foglightParents)
or InitiatingProcessCommandLine has_any ("foglight", "quest")
| where FileName has_any (suspiciousChildren)
| project TimeGenerated, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, AccountName, ReportId),
(Syslog
| where TimeGenerated > ago(14d)
| where Facility == "user" or Facility == "auth" or Facility == "audit"
| where SyslogMessage has_any ("foglight", "java")
and SyslogMessage has_any ("/bin/sh", "/bin/bash", "curl", "wget", "python")
| project TimeGenerated, HostName, ProcessName, SyslogMessage, SeverityLevel)
| order by TimeGenerated desc
Velociraptor VQL
Use this artifact for rapid triage of suspected Foglight servers — it enumerates Java/Foglight processes with their command lines and parentage, letting you spot anomalous child processes and injected arguments.
-- Foglight Management Server compromise triage (ZDI-26-866 / CVE-2026-92196)
-- Enumerate Foglight/Java processes, children, and recent script-file drops in Foglight dirs
SELECT Pid, Ppid, Name, CommandLine, Exe, Username, CreateTime,
getprocess(pid=Ppid).Name AS ParentName,
getprocess(pid=Ppid).CommandLine AS ParentCommandLine
FROM pslist()
WHERE Name =~ '(?i)foglight|fms|java'
OR ParentName =~ '(?i)foglight|fms|java'
OR (ParentName =~ '(?i)java' AND Name =~ '(?i)cmd|powershell|sh|bash|curl|wget|python')
-- Recent executable/script artifacts written under Foglight installation paths (last 14 days)
SELECT FullPath, Size, Mtime, Ctime
FROM glob(globs=['C:/Quest/Foglight/**/*.jsp', 'C:/Quest/Foglight/**/*.war',
'C:/Quest/Foglight/**/*.class', 'C:/Quest/Foglight/**/*.exe',
'C:/Quest/Foglight/**/*.ps1', 'C:/Quest/Foglight/**/*.bat',
'/opt/quest/foglight/**/*.jsp', '/opt/quest/foglight/**/*.sh',
'/home/foglight/**/*.jsp', '/home/foglight/**/*.sh'])
WHERE Mtime > now() - 1209600
ORDER BY Mtime DESC
Verification & Hardening Script
Run this on Windows-hosted Foglight Management Servers to inventory the installed version, enumerate unexpected child processes of Foglight services, and flag recently dropped script files — useful both for pre-patch triage and post-patch verification.
# Foglight CVE-2026-92196 triage and verification script
# Run elevated on the Foglight Management Server
# 1. Identify installed Foglight version
Write-Host "=== Installed Quest Foglight Components ===" -ForegroundColor Cyan
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Where-Object { $_.DisplayName -match 'Foglight|Quest' } |
Select-Object DisplayName, DisplayVersion, InstallDate | Format-Table -AutoSize
# 2. Enumerate Foglight/Java processes and any suspicious child processes
Write-Host "=== Foglight Processes and Children ===" -ForegroundColor Cyan
$fogProcs = Get-CimInstance Win32_Process | Where-Object {
$_.Name -match 'foglight|fms|java' -and $_.CommandLine -match 'foglight|quest'
}
foreach ($p in $fogProcs) {
Write-Host "[$($p.ProcessId)] $($p.Name) :: $($p.CommandLine)"
Get-CimInstance Win32_Process | Where-Object { $_.ParentProcessId -eq $p.ProcessId } |
ForEach-Object {
$flag = if ($_.Name -match 'cmd|powershell|pwsh|mshta|wscript|cscript|rundll32|certutil|bitsadmin|curl|wget') { ' *** SUSPICIOUS ***' } else { '' }
Write-Host " -> [$($_.ProcessId)] $($_.Name)$flag"
}
}
# 3. Scan Foglight directories for recently modified script/executable artifacts
Write-Host "=== Recently Modified Artifacts in Foglight Paths (14 days) ===" -ForegroundColor Cyan
$fogRoot = 'C:\Quest\Foglight'
if (Test-Path $fogRoot) {
Get-ChildItem -Path $fogRoot -Recurse -Include *.jsp,*.jspx,*.war,*.class,*.exe,*.ps1,*.bat,*.dll -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-14) } |
Select-Object LastWriteTime, FullName | Sort-Object LastWriteTime -Descending | Format-Table -AutoSize
}
# 4. Check for unexpected local admins created recently
Write-Host "=== Local Administrators (review for anomalies) ===" -ForegroundColor Cyan
Get-LocalGroupMember -Group 'Administrators' -ErrorAction SilentlyContinue | Format-Table -AutoSize
#!/bin/bash
# Foglight CVE-2026-92196 triage for Linux-hosted Management Servers
# Run as root or with sudo
echo "=== Foglight Processes ==="
ps auxww | grep -iE 'foglight|java' | grep -v grep
echo ""
echo "=== Suspicious Child Processes of Foglight/Java ==="
for pid in $(pgrep -f 'foglight|java'); do
children=$(ps --ppid "$pid" -o pid,comm,args --no-headers 2>/dev/null)
if echo "$children" | grep -qE 'sh|bash|curl|wget|python|perl|nc '; then
echo "[!] PID $pid has suspicious children:"
echo "$children"
fi
done
echo ""
echo "=== Recently Modified Artifacts Under Foglight Paths (14 days) ==="
for dir in /opt/quest/foglight /home/foglight /usr/local/foglight; do
[ -d "$dir" ] && find "$dir" -type f \( -name '*.jsp' -o -name '*.war' -o -name '*.sh' -o -name '*.class' \) -mtime -14 -ls
done
echo ""
echo "=== Recent Authentications to Foglight Host ==="
last -20 2>/dev/null; journalctl _COMM=sshd --since "14 days ago" 2>/dev/null | grep -i 'accepted' | tail -20
Remediation
- Apply the Quest patch immediately. Obtain the fixed release referenced in the Quest security bulletin for ZDI-26-866 / CVE-2026-92196 via Quest Support (https://support.quest.com/foglight-for-databases). Confirm the exact fixed version against the vendor advisory before scheduling your maintenance window — do not assume your current build is covered.
- Verify version post-patch. Use the scripts above (step 1) to confirm the upgraded build, and re-run the artifact scan to establish a clean baseline.
- Restrict console access now, patch or not. Limit Foglight web console reachability to a dedicated management VLAN or jump hosts via host firewall and network ACLs. Since exploitation requires authentication, shrinking the pool of accounts and source IPs that can authenticate is a meaningful compensating control.
- Audit Foglight accounts. Remove default and unused accounts, enforce unique credentials, rotate any shared admin passwords, and confirm MFA/SSO is enforced for console logins. Any account with console access is a potential exploitation primitive.
- Rotate stored database credentials if compromise is suspected. Foglight stores monitoring credentials for your database fleet. If hunting surfaces evidence of exploitation, treat every credential Foglight holds as compromised and rotate them — starting with any that carry elevated database privileges.
- Harden the service account. If Foglight runs as
LOCAL SYSTEMon Windows, evaluate moving to a least-privilege managed service account per Quest's hardening documentation. Containment of the blast radius matters while you race PoC development. - Hunt retrospectively. Deploy the Sigma/KQL/VQL content above across at least 30 days of telemetry, prioritizing Foglight servers that were internet-reachable or broadly accessible internally. SSTI exploitation of a monitoring plane is quiet by design — assume you missed it and look.
- Monitor for CISA KEV inclusion. If active exploitation emerges, KEV listing will typically trigger a Binding Operational Directive deadline for federal agencies and should function as your escalation trigger regardless of sector.
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.