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.
4 steps from start to impact.
Reach the SMH web interface
- SMH is installed and running
- The attacker can route to the SMH web interface
- Firewalling does not restrict access to admin networks only
- 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
10746 and vulnerability plugin 78090; network scanners can find exposed HP System Management Homepage banners.Trigger the web-layer bug that actually fits the deployment
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.- 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
- 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
CVE-2014-2640. Scanner coverage for CSRF/clickjacking is weaker than simple version-based detection.Abuse the admin browser session or trusted management context
- 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
- 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
Impact is bounded to a legacy management plane
- 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
- 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
The supporting signals.
| In-the-wild status | I 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 availability | Tenable 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. |
| EPSS | This 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 status | Not in CISA KEV for the representative SMH XSS and PHP memory-corruption constituents reviewed. |
| CVSS interpretation | Tenable 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 versions | Tenable'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 version | HP's remedy for this advisory train was upgrade to 7.4 or later. |
| Exposure reality | HPE 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 blocking | Presence/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 provenance | Tenable 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. |
noisgate verdict.
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.
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.
What to do — in priority order.
- 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.
- 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.
- 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.
- 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.
- 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.
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.
#!/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()
If you remember one thing.
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
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.