Someone left a trick doorbell on the vault that plays the guard's own voice back to open it
CVE-2026-15639 is a reflected cross-site scripting flaw in Delinea Secret Server On-Prem versions 10.2.19 through 11.9.48. An attacker crafts a URL containing malicious JavaScript targeting the Secret Server web interface. If a legitimate, authenticated user — typically a PAM administrator — clicks that link, the script executes in the context of their browser session. Because Secret Server is a privileged access management vault storing credentials for servers, databases, service accounts, and cloud infrastructure, successful exploitation gives the attacker the ability to perform API calls as the PAM admin: reading secrets, modifying policies, or creating backdoor accounts.
The CNA-assigned CVSS v4.0 score of 9.3 CRITICAL is inflated for this class of vulnerability. Reflected XSS requires active user interaction (clicking a crafted link), targets a small, security-trained user population (PAM admins), and Secret Server deploys HttpOnly session cookies by default — blocking the simplest cookie-theft vector. The attacker must execute the entire exfiltration payload inline within the reflected context, which requires advance knowledge of the instance's API structure. No public PoC exists, EPSS sits at 0.39%, and there is zero evidence of in-the-wild exploitation. While the blast radius of a successful attack on a PAM vault is genuinely severe, the exploitation prerequisites justify HIGH rather than CRITICAL.
5 steps from start to impact.
Reconnaissance — Identify target Secret Server instance
- Knowledge of the target organization's Secret Server URL
- Target running an affected version (10.2.19–11.9.48)
- Secret Server on-prem is almost never internet-facing
- URL format is not standardized, limiting blind guessing
Craft reflected XSS payload
HttpOnly cookies prevent document.cookie access, the attacker cannot simply steal the session token; the payload must execute all malicious actions client-side using fetch() or XMLHttpRequest against the same-origin API.- Understanding of the vulnerable parameter and injection point
- Knowledge of Secret Server REST API endpoints
- No public PoC or exploit code is available as of disclosure date
- HttpOnly cookies block the simplest session-theft technique
- Content Security Policy is deployed (may restrict inline script execution depending on configuration)
Deliver malicious link to PAM admin
- Email or messaging access to the PAM admin
- PAM admin must be actively authenticated to Secret Server at click time
- PAM admins are security-trained and phishing-resistant
- Email gateways and link-scanning tools may defang or block the URL
- Multi-step social engineering required
JavaScript executes in admin session
fetch() to an external domain (if CSP allows) or via DNS exfiltration.- CSP does not block the payload (UpGuard reports potential
unsafe-inlinein some deployments) - Admin session is active and has sufficient permissions
- Strict CSP with nonce-based inline script policy would block execution
- Browser XSS Auditor may intervene in older browsers (deprecated in modern Chromium but still present in some enterprise builds)
Secrets exfiltrated — lateral movement begins
- Exfiltrated secrets are valid and not protected by additional checkout controls or MFA-gated access
- Secret Server supports checkout, one-time-password rotation, and session recording — all reduce the value of stolen credentials
- MFA on downstream systems limits immediate reuse
- Secret access audit alerts may trigger before lateral movement completes
The supporting signals.
| In-the-Wild Exploitation | None observed. Not listed on CISA KEV. No threat intel reports reference active exploitation of this CVE. |
|---|---|
| Proof-of-Concept | None public. No exploit code on GitHub, Exploit-DB, or security research blogs as of 2026-09-16. Discovered by Aidan Stansfield of Division 5 via coordinated disclosure. |
| EPSS | 0.00393 (0.39% probability of exploitation in the next 30 days). This is well below the median EPSS score — approximately bottom-third of all scored CVEs. |
| KEV Status | Not listed. No CISA Known Exploited Vulnerabilities entry. |
| CVSS v4.0 (CNA) | 9.3 CRITICAL — CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:N/SC:H/SI:H/SA:H. The Subsequent-system impact metrics (SC:H/SI:H/SA:H) drive the score up, reflecting the downstream blast radius of compromising a PAM vault. No CVSS v3.1 score has been published by NVD. |
| Affected Versions | Delinea Secret Server On-Prem 10.2.19 through 11.9.48. Cloud (SaaS) deployments are not affected. |
| Fixed Version | 12.0.20 or later. Note: 12.0.20 was temporarily withdrawn due to an HSM regression (re-released as 12.0.22+). Verify your upgrade path does not hit the HSM issue if applicable. |
| Exposure Data | Secret Server on-prem is rarely internet-facing. Shodan/Censys scans show negligible external exposure for Secret Server login portals. The attack surface is effectively internal-only for >99% of deployments. |
| Disclosure Date | 2026-09-15 (published by Delinea). CVE record updated 2026-09-16. |
| Researcher | Aidan Stansfield — Senior Offensive Security Specialist at Division 5 (Brisbane, Australia). Coordinated disclosure via Delinea's responsible disclosure program. |
noisgate verdict.
The single most decisive factor is the role multiplier — Secret Server is a canonical PAM vault where successful session compromise yields fleet-scale credential access, which floors the severity at HIGH despite the reflected XSS mechanism requiring active user interaction against a security-trained admin population. The combination of HttpOnly default cookies blocking direct session theft, zero public PoC availability, negligible EPSS (0.39%), and the internal-only attack surface collectively prevent this from reaching CRITICAL.
Why this verdict
- Role multiplier — PAM vault with fleet-scale blast radius: Secret Server stores credentials for domain controllers, databases, cloud consoles, and network appliances. 100% of Secret Server installs are PAM by definition. A successful XSS-to-session-hijack chain ends in mass credential exfiltration. This *floors* the verdict at HIGH regardless of exploitation friction.
- User interaction required (Active, per CVSS v4): Reflected XSS requires a PAM administrator to click a crafted link while authenticated. This is social engineering against a security-trained user class — materially harder than exploiting an auth bypass or RCE in the same product.
- HttpOnly cookies block simplest theft vector: Secret Server configures
HttpOnlyon session cookies by default. The attacker cannot usedocument.cookieto steal and replay the session externally — they must execute the full exfiltration payload inline, requiring advance knowledge of the REST API structure. - Zero exploitation evidence and negligible EPSS: No public PoC, no KEV listing, no threat intel reports, and EPSS at 0.39% — all indicators point to low near-term exploitation probability.
- Internal-only attack surface: >99% of Secret Server on-prem deployments are behind corporate firewalls and VPN. External attackers need prior network access to even deliver the payload URL to a context where it resolves.
Why not higher?
Reaching CRITICAL would require either active exploitation evidence or a lower-friction attack path. Reflected XSS demands social engineering of PAM admins — a small, security-aware population — and HttpOnly cookies block the canonical session-theft technique. The attacker must build a bespoke inline payload that calls the Secret Server API and exfiltrates results, all within a single reflected execution context. With zero public PoCs and 0.39% EPSS, the real-world exploitation probability does not justify CRITICAL urgency.
Why not lower?
Dropping below HIGH would ignore the blast radius. Secret Server is *the credential vault* — a successful attack yields every stored secret. The vulnerability requires no authentication to trigger (PR:N in the CVSS vector), the affected version range spans six major versions (10.2–11.9), and the vendor's own CNA scored it 9.3. Even with exploitation friction, the consequence of a single successful phish against a PAM admin is organization-wide credential compromise.
What to do — in priority order.
- Enable strict Content Security Policy with nonce-based script allowlisting — A strict CSP that disallows
unsafe-inlineand requires nonces for all inline scripts will neutralize reflected XSS payloads entirely. Review your Secret Server IIS configuration and add aContent-Security-Policyheader. This is the single most effective mitigation and should be deployed within the noisgate mitigation SLA of 30 days. - Enforce Secret checkout and one-time-password rotation — Enable checkout on all high-value secrets so credentials rotate after each use. Even if an attacker exfiltrates credentials via XSS, rotated passwords become invalid within minutes. Verify this is enabled within 30 days.
- Restrict PAM admin session duration and enforce re-authentication — Shorten session timeouts for administrative accounts to reduce the window during which a reflected XSS payload can operate. Require MFA re-authentication for secret access operations. Deploy within 30 days.
- Deploy URL rewriting / link-scanning on email and chat platforms — Configure your email gateway and collaboration tools to defang or sandbox links to internal Secret Server URLs originating from external sources. This reduces the phishing delivery vector.
- Monitor Secret Server audit logs for bulk secret access — Create SIEM alerts for any single session that accesses more than N secrets within a short window. This catches the exfiltration phase of the attack chain. Tune thresholds to your environment.
- WAF in front of Secret Server — most on-prem Secret Server deployments do not sit behind a WAF, and deploying one in front of an internal IIS application is operationally complex. Generic WAF XSS rules also have high false-positive rates against complex web applications.
- Browser XSS Auditor — deprecated and removed from Chromium-based browsers since 2019. Not a reliable control in modern enterprise browser fleets.
- Network segmentation alone — while limiting who can reach Secret Server is good hygiene, it does not prevent a legitimate PAM admin from clicking a malicious link within their authorized network segment.
Crowdsourced verification payload.
Run this on the Secret Server application server as a local administrator or domain account with read access to the Secret Server installation directory. Example: .\Check-CVE-2026-15639.ps1 -InstallPath 'C:\inetpub\wwwroot\SecretServer'
#Requires -Version 5.1
<#
.SYNOPSIS
Checks whether Delinea Secret Server On-Prem is vulnerable to CVE-2026-15639 (Reflected XSS).
.DESCRIPTION
Reads the Secret Server version from the installed assemblies and compares against
the affected range (10.2.19 through 11.9.48). Fixed in 12.0.20+.
.PARAMETER InstallPath
Path to the Secret Server web application root directory.
.OUTPUTS
VULNERABLE, PATCHED, or UNKNOWN with exit codes 1, 0, 2 respectively.
#>
param(
[Parameter(Mandatory=$true)]
[string]$InstallPath
)
$ErrorActionPreference = 'Stop'
try {
# Locate the main Secret Server assembly
$dllPath = Join-Path $InstallPath 'bin\Thycotic.ihawu.Business.dll'
if (-not (Test-Path $dllPath)) {
# Try alternate assembly name used in newer versions
$dllPath = Join-Path $InstallPath 'bin\Delinea.SecretServer.Business.dll'
}
if (-not (Test-Path $dllPath)) {
Write-Host 'UNKNOWN - Could not locate Secret Server assembly in the specified path.'
exit 2
}
$versionInfo = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($dllPath)
$version = [System.Version]$versionInfo.ProductVersion
Write-Host "Detected Secret Server version: $version"
$minAffected = [System.Version]'10.2.19'
$maxAffected = [System.Version]'11.9.48'
$fixedVersion = [System.Version]'12.0.20'
if ($version -ge $fixedVersion) {
Write-Host 'PATCHED - Running version >= 12.0.20. CVE-2026-15639 is remediated.'
exit 0
} elseif ($version -ge $minAffected -and $version -le $maxAffected) {
Write-Host 'VULNERABLE - Running an affected version (10.2.19 - 11.9.48). Upgrade to 12.0.20+.'
exit 1
} elseif ($version -lt $minAffected) {
Write-Host 'UNKNOWN - Running a version older than the documented affected range. Manual review recommended.'
exit 2
} else {
Write-Host "UNKNOWN - Version $version does not fall into a recognized range. Manual review recommended."
exit 2
}
} catch {
Write-Host "UNKNOWN - Error during check: $_"
exit 2
}If you remember one thing.
Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.