← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
tenable:78090 · Disclosed 2014-10-02

HP System Management Homepage < 7

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is less a front-door RCE and more a pile of loose screws inside a server-room control panel

Plugin 78090 is a bundle finding for HP System Management Homepage (SMH) versions before 7.4. It rolls together seven issues: embedded third-party library flaws in cURL/libcurl and PHP/OpenSSL/date parsing (CVE-2013-4545, CVE-2013-6420, CVE-2013-6422, CVE-2013-6712) plus SMH web-layer issues including XSS, CSRF, and clickjacking (CVE-2014-2640, CVE-2014-2641, CVE-2014-2642). HP's fix line was upgrade to SMH 7.4 or later.

The scanner's HIGH label is driven by the worst constituent library issue, not the most likely enterprise attack path. In practice, SMH is a management interface, usually on internal or admin-only networks; the SMH-native bugs mostly need user interaction against an admin, while the cURL/PHP issues depend on specific application behavior or MITM/crafted-certificate conditions that are not the default smash-and-grab path. That combination makes this a real patch item, but not a drop-everything emergency for most estates.

"This looks scary on paper, but most real abuse paths need admin interaction, MITM, or a management plane you should not expose"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Reach the SMH web interface

The attacker first has to reach the SMH service, typically on the legacy management web ports used by HP server tooling. A plain browser or scripted HTTP client is enough; Tenable detects this family remotely from the web banner and service fingerprint.
Conditions required:
  • SMH is installed and running
  • The attacker can route to the SMH web interface
  • Firewalling does not restrict access to admin networks only
Where this breaks in practice:
  • SMH is a server-management plane, not a general user app
  • Many deployments keep it on internal or restricted admin segments
  • A lot of modern environments have retired or isolated this legacy stack
Detection/coverage: Good detection coverage for presence/version via Nessus plugin 10746 and vulnerability plugin 78090; network scanners can find exposed HP System Management Homepage banners.
STEP 02

Trigger the web-layer bug that actually fits the deployment

The most realistic SMH-native branch is the reflected XSS on red2301.html via the RedirectUrl parameter (CVE-2014-2640), or adjacent CSRF/clickjacking issues. The attacker uses a crafted URL, malicious page, or hidden iframe rather than a direct memory corruption exploit against the appliance itself.
Conditions required:
  • A victim admin browses attacker-controlled content or clicks a crafted link
  • The admin is authenticated to SMH or can be induced to interact with it
  • Browser protections or upstream filtering do not strip the payload
Where this breaks in practice:
  • This is user-interaction-dependent
  • It targets an admin workflow, not random unauthenticated internet traffic
  • Modern email/web filtering and browser hardening cut down opportunistic delivery
Detection/coverage: WAF/IPS coverage exists for the XSS branch; Check Point ships a specific protection for CVE-2014-2640. Scanner coverage for CSRF/clickjacking is weaker than simple version-based detection.
STEP 03

Abuse the admin browser session or trusted management context

Once the payload lands, the attacker can act inside the browser/server trust relationship, steal session context, or force privileged actions the admin did not intend. The bundled cURL/PHP issues are more conditional: they matter if SMH or a linked component exercises the vulnerable code path with attacker-influenced certificates or malformed data.
Conditions required:
  • The admin session has meaningful privileges in SMH
  • For the library branch, the vulnerable code path is actually reachable in the deployed build
  • For the cURL branch, certificate validation behavior or MITM position makes the issue relevant
Where this breaks in practice:
  • The worst technical impact in a library advisory does not mean the app exposes that path remotely
  • MITM prerequisites imply network position, not clean unauthenticated remote reachability
  • Some constituent bugs are inherited component flaws, not straightforward SMH endpoint exploits
Detection/coverage: EDR/browser telemetry may catch post-XSS behavior; TLS interception anomalies and malformed certificate handling are harder to attribute back to SMH specifically.
STEP 04

Impact is bounded to a legacy management plane

Successful abuse can expose management data, manipulate admin actions, or assist pivoting from a server-management interface. That is serious, but the blast radius is still gated by whether SMH is reachable and used, and by how much privilege the victim session or host actually has in the rest of the estate.
Conditions required:
  • SMH has access to meaningful server-management functions
  • The compromised host is still trusted inside the environment
  • Operators rely on SMH from normal admin workstations
Where this breaks in practice:
  • Single-host management tools rarely deliver instant domain-wide compromise on their own
  • Segmentation and separate admin workstations reduce follow-on value
  • Legacy management consoles are often present on a shrinking population of older systems
Detection/coverage: Follow-on activity is where defenders usually win: EDR, admin workstation telemetry, proxy logs, and east-west segmentation controls are more valuable than signatureing the initial web request alone.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusI found no KEV listing for the representative SMH XSS (CVE-2014-2640) or the bundled PHP issue (CVE-2013-6420), and no credible source in this review showing current active exploitation campaigns.
Proof-of-concept availabilityTenable marks the bundle as Exploit Available: true. The strongest public exploit evidence in the bundle is for CVE-2013-6420, where NVD/OpenCVE reference public research and exploit material tied to PHP's openssl_x509_parse() handling.
EPSSThis bundle is mixed: OpenCVE shows CVE-2014-2640 EPSS 0.02116 and CVE-2013-6420 EPSS 0.40224. That spread is exactly why the roll-up scanner severity overstates real operational risk.
KEV statusNot in CISA KEV for the representative SMH XSS and PHP memory-corruption constituents reviewed.
CVSS interpretationTenable scores the plugin CVSSv2 7.5 (AV:N/AC:L/Au:N/C:P/I:P/A:P) because it inherits the worst network-reachable component in the set. The actual SMH-native XSS (CVE-2014-2640) is only CVSSv2 4.3 and explicitly carries user interaction.
Affected versionsTenable's finding applies to HP System Management Homepage versions before 7.4. CERT specifically calls out 7.2.3 and 7.3.2.1 for the reflected XSS on red2301.html.
Fixed versionHP's remedy for this advisory train was upgrade to 7.4 or later.
Exposure realityHPE positions SMH as a single-server management interface for ProLiant/Integrity systems on Windows/Linux/HP-UX. That usually means low external exposure in mature enterprises, but it remains dangerous anywhere it is reachable from user networks or the internet.
Detection and blockingPresence/version detection is straightforward with Nessus; Check Point IPS ships a dedicated protection for CVE-2014-2640. Detection is much weaker for the library sub-issues unless you already know the vulnerable code path is exercised.
Disclosure and provenanceTenable lists patch publication 2014-09-30 and vulnerability publication 2014-10-03 for the plugin. OpenCVE shows CVE-2014-2640 published on 2014-10-02.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.4/10)

The decisive factor is attack-path friction: the SMH-native web issues mostly require admin interaction or a trusted management context, and the nastier embedded library bugs are not cleanly equivalent to unauthenticated internet-to-RCE against the SMH UI. This is also a management-plane product with a much narrower exposed population than an internet-facing business app, which materially reduces enterprise-wide urgency.

HIGH SMH-native XSS/CSRF/clickjacking paths are lower urgency than the plugin's HIGH roll-up suggests
MEDIUM Worst-case impact of the bundled PHP/cURL component flaws inside every real SMH deployment

Why this verdict

  • Downgrade for attacker position: the likely abuse path is not pure unauthenticated internet-to-host compromise; it usually requires reaching a restricted management interface and then catching an admin in-browser.
  • Downgrade for prerequisite stacking: XSS/CSRF/clickjacking imply *user interaction* and often an authenticated admin session. Those are compounding friction points, not minor footnotes.
  • Downgrade for exposure population: SMH is a legacy server-management console, so the reachable footprint is far smaller than a mainstream web app or perimeter appliance.
  • Hold at MEDIUM, not LOW: successful abuse still lands in a privileged management plane, and some bundled component flaws have materially higher technical impact if their code paths are reachable.

Why not higher?

I do not see strong evidence that this bundle behaves like a broadly exploitable unauthenticated remote compromise in typical enterprise deployments. No KEV signal, no current exploitation evidence in the reviewed sources, and the most credible SMH-specific path is browser-mediated rather than one-shot host takeover.

Why not lower?

This is still a legacy admin surface on servers, not a cosmetic issue. If SMH is exposed to user networks or the internet, or if admins routinely browse it from high-trust workstations, the management-plane value keeps this above backlog-only hygiene.

05 · Compensating Control

What to do — in priority order.

  1. Restrict SMH to admin networks only — Put SMH behind ACLs, jump hosts, or VPN-only paths so ordinary user subnets and the internet cannot reach it. For a MEDIUM verdict there is no mitigation SLA; fold this into normal hardening, but treat any externally reachable SMH instance as an exception and close exposure immediately.
  2. Block legacy management ports at boundaries — Explicitly deny inbound access to the SMH web ports at firewalls and segmentation points, then permit only named admin workstations or management VLANs. There is no mitigation SLA for MEDIUM, so do this as part of routine exposure reduction unless you discover internet exposure.
  3. Keep admins off general-purpose browsing while managing servers — Use hardened admin workstations or jump boxes for SMH to reduce XSS, clickjacking, and CSRF payoff. Again, no mitigation SLA applies here for MEDIUM, but this is a high-value control for any remaining legacy management console.
  4. Enable IPS/WAF signatures where available — Network controls will not solve the underlying library issues, but they can cut down exploit delivery for the SMH web-layer branch, especially CVE-2014-2640. Deploy in the normal maintenance cycle for MEDIUM findings unless the service is more broadly exposed.
What doesn't work
  • A generic endpoint AV posture on the server does not neutralize reflected XSS/CSRF/clickjacking in an admin browser session.
  • Relying on TLS alone does not fix the bundled cURL certificate-validation flaw if the vulnerable code path disables peer verification incorrectly.
  • Treating this as 'just patch the embedded PHP/cURL packages' is unreliable because the issue is tracked against the SMH-delivered product build, not only the host OS packages.
06 · Verification

Crowdsourced verification payload.

Run this on the target host itself or through your EDR/script runner. Invoke it with python3 check_hpsmh_78090.py on Linux/macOS or py check_hpsmh_78090.py on Windows; local admin/root is helpful for registry/package queries but not strictly required for the HTTP probe.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/usr/bin/env python3
# check_hpsmh_78090.py
# Detect HP System Management Homepage and determine whether version is < 7.4.0
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

import os
import re
import sys
import ssl
import json
import platform
import subprocess
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError

TARGET = (7, 4, 0)
COMMON_URLS = [
    'https://127.0.0.1:2381/',
    'https://localhost:2381/',
    'http://127.0.0.1:2301/',
    'http://localhost:2301/'
]
PATTERNS = [
    r'HP\\s+System\\s+Management\\s+Homepage[^0-9]{0,20}(\\d+(?:\\.\\d+){1,3})',
    r'System\\s+Management\\s+Homepage[^0-9]{0,20}(\\d+(?:\\.\\d+){1,3})',
    r'Version[^0-9]{0,10}(\\d+(?:\\.\\d+){1,3})'
]


def norm_tuple(v):
    parts = [int(x) for x in v.split('.') if x.isdigit() or x.isnumeric()]
    while len(parts) < 3:
        parts.append(0)
    return tuple(parts[:3])


def cmp_version(a, b):
    return (a > b) - (a < b)


def run_cmd(cmd):
    try:
        p = subprocess.run(cmd, capture_output=True, text=True, timeout=10)
        return p.returncode, (p.stdout or '') + (p.stderr or '')
    except Exception:
        return 999, ''


def detect_windows_registry():
    keys = [
        r'HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall',
        r'HKLM\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall'
    ]
    for key in keys:
        rc, out = run_cmd(['reg', 'query', key, '/s'])
        if rc != 0 or not out:
            continue
        blocks = re.split(r'\r?\n\r?\n+', out)
        for block in blocks:
            if 'System Management Homepage' in block or 'HP System Management Homepage' in block or 'HPE System Management Homepage' in block:
                m = re.search(r'DisplayVersion\s+REG_\w+\s+([0-9]+(?:\.[0-9]+){1,3})', block)
                if m:
                    return m.group(1), 'registry'
    return None, None


def detect_windows_wmic():
    rc, out = run_cmd(['wmic', 'product', 'get', 'name,version'])
    if rc == 0 and out:
        for line in out.splitlines():
            if 'System Management Homepage' in line:
                m = re.search(r'([0-9]+(?:\.[0-9]+){1,3})', line)
                if m:
                    return m.group(1), 'wmic'
    return None, None


def detect_linux_pkg():
    for pkg in ['hpsmh', 'hp-smh', 'sysmgmt-homepage']:
        rc, out = run_cmd(['rpm', '-q', '--qf', '%{VERSION}\n', pkg])
        if rc == 0 and out.strip() and 'not installed' not in out.lower():
            m = re.search(r'([0-9]+(?:\.[0-9]+){1,3})', out)
            if m:
                return m.group(1), f'rpm:{pkg}'
    for pkg in ['hpsmh', 'hp-smh', 'sysmgmt-homepage']:
        rc, out = run_cmd(['dpkg-query', '-W', '-f=${Version}\n', pkg])
        if rc == 0 and out.strip():
            m = re.search(r'([0-9]+(?:\.[0-9]+){1,3})', out)
            if m:
                return m.group(1), f'dpkg:{pkg}'
    return None, None


def detect_http():
    ctx = ssl.create_default_context()
    ctx.check_hostname = False
    ctx.verify_mode = ssl.CERT_NONE
    for url in COMMON_URLS:
        try:
            req = Request(url, headers={'User-Agent': 'noisgate-check/1.0'})
            with urlopen(req, timeout=5, context=ctx) as r:
                body = r.read(65536).decode('utf-8', errors='ignore')
                headers = '\n'.join(f'{k}: {v}' for k, v in r.headers.items())
                blob = body + '\n' + headers
                for pat in PATTERNS:
                    m = re.search(pat, blob, re.IGNORECASE)
                    if m:
                        return m.group(1), f'http:{url}'
        except (URLError, HTTPError, TimeoutError, ssl.SSLError, OSError):
            continue
    return None, None


def main():
    candidates = []

    system = platform.system().lower()
    if 'windows' in system:
        for fn in (detect_windows_registry, detect_windows_wmic, detect_http):
            v, src = fn()
            if v:
                candidates.append((v, src))
    else:
        for fn in (detect_linux_pkg, detect_http):
            v, src = fn()
            if v:
                candidates.append((v, src))

    # de-duplicate while preserving order
    seen = set()
    uniq = []
    for v, src in candidates:
        if (v, src) not in seen:
            uniq.append((v, src))
            seen.add((v, src))

    if not uniq:
        print('UNKNOWN - HP System Management Homepage not confidently identified')
        sys.exit(2)

    # Prefer highest-confidence local package/registry result over HTTP banner if multiple found
    ordered = sorted(uniq, key=lambda x: 0 if x[1].startswith(('registry', 'rpm', 'dpkg', 'wmic')) else 1)
    version, source = ordered[0]
    parsed = norm_tuple(version)

    result = {
        'product': 'HP System Management Homepage',
        'detected_version': version,
        'source': source,
        'target_fixed_version': '7.4.0',
        'comparison': 'vulnerable' if cmp_version(parsed, TARGET) < 0 else 'patched'
    }

    if cmp_version(parsed, TARGET) < 0:
        print('VULNERABLE - ' + json.dumps(result, separators=(',', ':')))
        sys.exit(1)
    else:
        print('PATCHED - ' + json.dumps(result, separators=(',', ':')))
        sys.exit(0)


if __name__ == '__main__':
    main()
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, inventory every host still running SMH and separate the ones that are actually reachable from user networks or the internet from the ones buried on admin-only segments. For a MEDIUM reassessment there is no noisgate mitigation SLA — go straight to the 365-day remediation window; your noisgate remediation SLA is ≤365 days to get anything below 7.4 upgraded or retired, while any unexpectedly exposed SMH instance should be isolated from broad network reach immediately as a sensible hardening exception even though this bucket has no formal mitigation SLA.

Sources

  1. Tenable Nessus Plugin 78090
  2. CERT/CC VU#125228
  3. OpenCVE - CVE-2014-2640
  4. OpenCVE - CVE-2013-6420
  5. curl advisory for CVE-2013-4545
  6. HPE System Management Homepage product page
  7. HPE QuickSpecs - System Management Homepage
  8. Check Point IPS advisory for CVE-2014-2640
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.