← Back to Feed CACHED · 2026-06-25 04:07:32 · CACHE_KEY tenable:176329
tenable:176329 · CWE-1104 · Disclosed 2023-09-01

PCI DSS Compliance : Security End of Life Software

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A locked door with no locksmith left in business

Tenable plugin 176329 is not a vulnerability — it's a PCI DSS compliance check that flags software past its vendor-declared *End of Life* or *End of Support* date. The plugin enumerates installed packages, services, OS builds, and middleware (think Windows Server 2012 R2, RHEL 6, Apache 2.2, PHP 5.x, OpenSSL 1.0.2, Java 6/7/8 pre-Oracle, MySQL 5.5/5.6, Node 12/14, .NET Framework <4.6.2, etc.) and compares them against lifecycle databases. There are no CVE IDs attached — the finding is categorical: the vendor has stopped issuing security patches for this artifact, so any future flaw is permanently unpatched on this host.

Tenable scores this MEDIUM because, on a given scan day, there may be no *known unpatched* RCE against the EOL product. That severity is wrong for the PCI context this plugin lives in. PCI DSS Requirement 6.3.3 treats unsupported software as a *critical* control gap: it converts the host into a permanent exception that must be compensated, documented, and re-justified annually. Combined with the realistic threat picture — EOL OS/middleware are the highest-yield ransomware footholds of 2024-2026 (Akira, Black Basta, Cl0p all preference EOL boxes) — this is a HIGH finding on any in-scope CDE asset.

"EOL software is not a CVE — it's an infinite backlog of future CVEs with no vendor on the other end of the phone."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Identify EOL surface

Attacker uses passive recon (Shodan, Censys, banner grabs) or post-access enumeration (nmap -sV, winPEAS, LinPEAS) to fingerprint EOL versions. EOL software self-advertises through version banners that never change because the vendor will never ship another build.
Conditions required:
  • Network reachability to the service OR initial foothold on adjacent host
Where this breaks in practice:
  • Internal-only services require an existing foothold
  • Banner suppression / reverse-proxy normalization hides some versions
Detection/coverage: Tenable plugin 176329 itself; Qualys QID 105170+; Rapid7 'obsolete software' policy.
STEP 02

Select a public exploit that will never be patched

Because the vendor is out of the support window, any post-EOL CVE is permanently unpatched. Attackers shop ExploitDB, Metasploit modules, and Nuclei templates targeting the specific EOL artifact (e.g., exploit/windows/smb/ms17_010_eternalblue for 2012R2-era hosts that missed backports, CVE-2022-22965 Spring4Shell on EOL Tomcat 8.5).
Conditions required:
  • Public exploit exists for any post-EOL CVE in this product
Where this breaks in practice:
  • WAF / IPS signatures may catch generic payloads
  • Some EOL products receive paid extended support (Microsoft ESU, Red Hat ELS) — check before assuming abandonment
Detection/coverage: Suricata/Snort ET rules cover the common EOL-targeting exploits; EDR catches post-exploit behavior.
STEP 03

Exploit and persist

Attacker lands code execution at whatever privilege the EOL service runs as — frequently SYSTEM or root for OS-level EOL (Windows 2012R2, RHEL 6). Persistence is trivial because the host will never receive a security update to evict them. Tooling: Cobalt Strike, Sliver, Mythic.
Conditions required:
  • Exploit lands; AV/EDR doesn't block
Where this breaks in practice:
  • EDR on the EOL host (if vendor supports it on the legacy OS)
  • Network segmentation limits lateral movement
Detection/coverage: EDR behavioral detection is the only meaningful layer once exploitation succeeds.
STEP 04

Pivot to PCI cardholder data

Because the finding lives under PCI DSS scope, the compromised host is by definition in or adjacent to the CDE. Attacker uses standard credential theft (Mimikatz, Rubeus, secretsdump) and lateral movement (PsExec, Impacket, Evil-WinRM) to reach the payment application or database, then exfils via rclone or DNS tunneling.
Conditions required:
  • Host is in PCI scope
  • Network path to CDE
Where this breaks in practice:
  • Proper CDE segmentation (PCI Req 1.3) breaks this step
  • DLP egress controls
Detection/coverage: Egress monitoring, NetFlow anomaly detection, CDE-specific SIEM rules.
03 · Intelligence Metadata

The supporting signals.

Finding typeCompliance / configuration audit — not a CVE. Plugin family: *Policy Compliance*.
PCI DSS referenceRequirement 6.3.3 (formerly 6.2 in v3.2.1) — *Security patches must be installed within one month; unsupported software is a deficiency requiring documented compensating controls.*
In-the-wild statusEOL software is the #1 initial-access enabler for ransomware in 2024-2026 per Mandiant M-Trends, Coveware, and Sophos State of Ransomware reports.
KEV alignmentCISA KEV contains 300+ entries that disproportionately affect EOL versions (e.g., MS17-010, ProxyLogon on unsupported Exchange, Log4Shell on EOL JDKs).
EPSSN/A — plugin is not a single CVE. Underlying CVEs on EOL stacks routinely show EPSS > 0.90.
Typical triggersWindows Server 2008/2012/2012R2 (post-ESU), Windows 7/8.1, RHEL/CentOS 6 (post-ELS), Ubuntu 14.04/16.04/18.04 (post-ESM), PHP 5.x/7.x, Java 6/7/8 (Oracle public-EOL), .NET Framework < 4.6.2, Apache 2.2, Tomcat 7/8, OpenSSL 1.0.x, Node 12/14/16, MongoDB 4.0/4.2, Python 2.7/3.6/3.7.
Vendor severityMEDIUM per Tenable — generic, day-of-scan basis.
noisgate reassessmentHIGH — PCI scope + categorical patch-impossibility + favored ransomware target class.
Scanner coverageTenable 176329, Qualys 105170/45039, Rapid7 obsolete-software policy, Nessus *Unsupported* family.
DisclosurePlugin published 2023-09; lifecycle data sourced from endoflife.date, vendor LTS pages, and Microsoft Lifecycle.
04 · The Call

noisgate verdict.

Final Verdict
UPGRADED to HIGH (7.5/10)

The decisive factor is PCI scope coupled with categorical un-patchability — every future CVE on this artifact lands on an asset the vendor has formally walked away from, and PCI DSS 6.3.3 treats that as a top-tier control gap. Tenable's MEDIUM reflects a single scan day; the *role multiplier* — these are typically OS/middleware on in-scope CDE hosts — floors the verdict at HIGH.

HIGH that the affected artifact is genuinely unsupported
HIGH that EOL stacks are preferentially targeted by ransomware crews
MEDIUM that any single host flagged is in PCI scope — depends on asset tagging hygiene

Why this verdict

  • Categorical patch-gap: unlike a normal CVE, there is no fix coming — ever. Future zero-days against this artifact are permanently unmitigated.
  • Role multiplier: the plugin overwhelmingly fires on OS, web server, runtime, and database tiers — canonical high-value-role components. A compromised EOL Windows Server in a CDE ends in domain or cardholder-data compromise; the high-value-role floor is HIGH.
  • Compliance multiplier: PCI 6.3.3 requires documented compensating controls and annual risk acceptance. An unremediated finding here is an audit-grade defect, not a hygiene item.
  • Threat-intel multiplier: Mandiant, Coveware, and Sophos 2025 reports all rank EOL OS/middleware as the top ransomware initial-access enabler — far above phishing for confirmed breaches in retail/hospitality (PCI verticals).
  • Friction adjustment: the finding may fire on isolated lab hosts or out-of-scope dev boxes — those instances can be downgraded individually with documented scope evidence, but the default posture is HIGH.

Why not higher?

Not CRITICAL because the plugin itself is not weaponized exploitation — it's a state observation. Individual hosts may be isolated, behind segmentation, or covered by paid extended support (Microsoft ESU, Red Hat ELS, Ubuntu ESM) that materially changes the patch story. Without a paired KEV-listed CVE on the same host, the chain is not yet active.

Why not lower?

Not MEDIUM because the artifact will never be patched again, the host is by plugin-definition in a PCI compliance frame, and EOL stacks dominate ransomware case data. Treating this as a low-urgency finding has been a repeatable root cause in breach post-mortems across 2024-2026.

05 · Compensating Control

What to do — in priority order.

  1. Inventory and tag every EOL artifact this week — You cannot mitigate what you cannot enumerate. Pull the plugin output from Tenable.sc / Tenable.io, join against your CMDB, and tag each host with eol_artifact, pci_scope, and business_owner. Deadline: within 7 days as a HIGH-class finding (noisgate mitigation SLA = 30 days, but inventory is step zero).
  2. Subscribe to paid extended support where it exists — Microsoft ESU (Windows Server 2012R2 through Oct 2026, 2008R2 retired), Red Hat ELS (RHEL 6 / 7), Canonical Ubuntu Pro / ESM, TuxCare ELS, and Oracle Sustaining Support buy you continued CVE patches. Within the noisgate mitigation SLA of 30 days — purchase, deploy the ESU keys/repos, and document.
  3. Network-segment and front-end with a reverse proxy / WAF — If you cannot retire the host, put it behind a WAF (modern TLS termination, request normalization) and a hard segmentation boundary so EOL TLS/HTTP stacks are never directly reachable. Apply NIST SP 800-82 / PCI 1.3 microsegmentation patterns. Complete within 30 days.
  4. Disable unneeded EOL services and harden surface — Turn off SMBv1, legacy TLS ciphers, anonymous binds, default accounts, and any non-essential listener on EOL hosts. Use vendor hardening guides (CIS Benchmarks for the closest supported version) as a baseline.
  5. Apply application-layer allowlisting — Deploy AppLocker / WDAC on Windows EOL or SELinux enforcing + fapolicyd on Linux EOL to prevent execution of attacker-introduced binaries. This is the single highest-yield control on a host that will never be patched.
  6. Increase EDR sensitivity on EOL hosts — Tune EDR to high-aggression mode on every host flagged by 176329, with priority alerting routed to the SOC on-call. EDR is the last meaningful layer when the OS will never ship a fix.
  7. Plan and budget retirement / re-platforming — Execute the noisgate remediation SLA — replace or upgrade within 180 days for HIGH. For PCI hosts, calendar this against your next QSA assessment so it doesn't become a recurring audit finding.
What doesn't work
  • Vulnerability patching alone: there are no patches to apply — the vendor has exited. Running Windows Update on Server 2012R2 without ESU does nothing.
  • Antivirus signatures: legacy AV catches known malware but doesn't address the fundamental un-patchability of the platform.
  • Risk-accepting the finding annually without compensating controls: PCI 6.3.3 specifically forbids this — acceptance must be paired with documented technical controls, not just a signature.
06 · Verification

Crowdsourced verification payload.

Run on a Windows target host (or fan out via remoting / Tanium / SCCM). Invoke from an elevated PowerShell session: powershell -ExecutionPolicy Bypass -File .\Check-EOL.ps1. Requires local administrator to read OS build and full installed-software inventory. Outputs VULNERABLE, PATCHED, or UNKNOWN.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
#requires -Version 3.0
# Check-EOL.ps1 — noisgate verifier for Tenable plugin 176329 (EOL software)
# Exits 1 = VULNERABLE (EOL detected), 0 = PATCHED (supported), 2 = UNKNOWN

$ErrorActionPreference = 'SilentlyContinue'
$findings = @()

# --- OS lifecycle check -------------------------------------------------
$os = Get-CimInstance Win32_OperatingSystem
$caption = $os.Caption
$build   = [int]($os.BuildNumber)

# Microsoft lifecycle cutoffs (mainstream EOL; ESU may extend)
$eolMap = @{
    'Windows 7'              = '2020-01-14'
    'Windows 8'              = '2016-01-12'
    'Windows 8.1'            = '2023-01-10'
    'Server 2008'            = '2020-01-14'
    'Server 2008 R2'         = '2020-01-14'
    'Server 2012'            = '2023-10-10'
    'Server 2012 R2'         = '2023-10-10'
}
foreach ($k in $eolMap.Keys) {
    if ($caption -match [regex]::Escape($k)) {
        $findings += "OS EOL: $caption (vendor EOL $($eolMap[$k]))"
    }
}

# --- .NET Framework -----------------------------------------------------
$ndp = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -ErrorAction SilentlyContinue
if ($ndp -and $ndp.Release -lt 394802) {
    $findings += ".NET Framework < 4.6.2 (Release $($ndp.Release)) — EOL 2022-04-26"
}

# --- Installed software scan -------------------------------------------
$paths = @(
    'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
    'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
$installed = Get-ItemProperty $paths | Where-Object DisplayName

$badPatterns = @(
    @{Name='Java 6';        Re='Java\(TM\) 6|Java SE 6'},
    @{Name='Java 7';        Re='Java\(TM\) 7|Java SE 7'},
    @{Name='Java 8 (Oracle public EOL)'; Re='Java 8 Update'},
    @{Name='PHP 5.x';       Re='PHP 5\.'},
    @{Name='PHP 7.x';       Re='PHP 7\.'},
    @{Name='Python 2.7';    Re='Python 2\.7'},
    @{Name='Node 12/14/16'; Re='Node\.js.*v(12|14|16)\.'},
    @{Name='OpenSSL 1.0.x'; Re='OpenSSL 1\.0\.'},
    @{Name='Apache 2.2';    Re='Apache.*2\.2\.'},
    @{Name='Tomcat 7/8';    Re='Apache Tomcat (7|8)\.'}
)
foreach ($p in $badPatterns) {
    $hit = $installed | Where-Object { $_.DisplayName -match $p.Re }
    if ($hit) { $findings += "EOL package: $($p.Name) — $($hit.DisplayName -join ', ')" }
}

# --- Verdict ------------------------------------------------------------
if ($findings.Count -gt 0) {
    Write-Output 'VULNERABLE'
    $findings | ForEach-Object { Write-Output "  - $_" }
    exit 1
} elseif (-not $os) {
    Write-Output 'UNKNOWN'
    exit 2
} else {
    Write-Output 'PATCHED'
    exit 0
}
07 · Bottom Line

If you remember one thing.

TL;DR
Treat plugin 176329 as a HIGH-severity, audit-grade finding on every PCI-scoped host it fires on. Monday morning: pull the plugin output, join against your CMDB, and identify which hosts are in CDE scope. Per the noisgate mitigation SLA for HIGH (≤ 30 days), purchase Microsoft ESU / Red Hat ELS / Ubuntu Pro where applicable, front EOL services with a WAF and tight segmentation, and enable AppLocker/WDAC or SELinux + fapolicyd on the host. Per the noisgate remediation SLA for HIGH (≤ 180 days), schedule and budget the actual re-platform or retirement — and align the cutover date with your next QSA assessment so this doesn't become a recurring 6.3.3 deficiency. Out-of-scope or isolated lab hosts can be downgraded individually with documented scope evidence; the default posture is HIGH.

Sources

  1. Tenable Plugin 176329 — PCI DSS Compliance: Security End of Life Software
  2. PCI DSS v4.0.1 Requirements (Requirement 6.3.3)
  3. Microsoft Product Lifecycle
  4. endoflife.date — community lifecycle database
  5. Red Hat Enterprise Linux Life Cycle
  6. Ubuntu Pro / Expanded Security Maintenance
  7. CISA Known Exploited Vulnerabilities Catalog
  8. Mandiant M-Trends 2025
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.