← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-35273 · CWE-306 · Disclosed 2026-06-11

Vulnerability in the PeopleSoft Enterprise PeopleTools product of Oracle PeopleSoft

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

This is the spare key hidden in the maintenance closet, not the front door lock

Oracle says CVE-2026-35273 sits in PeopleSoft PeopleTools Updates Environment Management, specifically the Environment Management/Update Manager plane used to discover systems, track configuration, and push update activity. Affected supported versions are 8.61 and 8.62, and Oracle rates it as unauthenticated network-exploitable over HTTP with full takeover impact. That matters because the EM hub (PSEMHUB) is not just inventory; Oracle documents that EMF can broker messages and remote actions across managed PeopleSoft servers.

Vendor CRITICAL is fair in a lab, but too hot for enterprise-wide prioritization by default. The biggest real-world friction is exposure: this is usually an update/admin component behind internal routing, VPN, or reverse proxy controls, and Oracle also documents host allowlisting for hub connections. If your PSEMHUB or associated PIA path is internet-reachable, treat it like a near-critical incident; if it is internal-only, this is still serious but it is *post-exposure serious*, not internet-at-scale emergency serious.

"Pre-auth takeover is real, but this is usually an internal admin plane problem, not an internet-at-scale fire."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Find a reachable EM hub or PIA endpoint

The attacker first needs direct network access to the PeopleSoft web tier hosting PSEMHUB or a related Updates Environment Management path. In practice this means enumerating PeopleSoft Internet Architecture exposure, usually via HTTP(S) and recognizable PeopleSoft web artifacts. Tooling is basic: Shodan/Censys/manual HTTP fingerprinting is enough if the service is exposed.
Conditions required:
  • Unauthenticated network path to the PeopleSoft web tier
  • Affected PeopleTools 8.61 or 8.62 with EM functionality deployed
Where this breaks in practice:
  • Many enterprises keep PeopleSoft admin/update surfaces internal or VPN-only
  • Some deployments separate the hub from user-facing applications
  • Internet scanning does not reliably distinguish exposed PeopleSoft login pages from exposed PSEMHUB paths without manual validation
Detection/coverage: External attack-surface tools can find exposed web services, but they will not reliably prove this CVE without version and path validation.
STEP 02

Hit the pre-auth flaw in Updates Environment Management

Oracle states exploitation requires no credentials and no user interaction, and successful exploitation can result in takeover of PeopleSoft PeopleTools. The exact bug class is not public, but the operational outcome is pre-auth compromise of the management plane. Tooling would likely be a simple crafted HTTP request once the vulnerable path is known.
Conditions required:
  • Reachable vulnerable endpoint
  • No upstream access control blocking the request path
Where this breaks in practice:
  • Oracle has not publicly released technical exploit details
  • No public GitHub or Exploit-DB proof-of-concept was found in this review session
  • Reverse proxies, WAFs, path restrictions, or IP ACLs may break weaponization even when the host is technically vulnerable
Detection/coverage: Expect coverage from authenticated scanner plugins after vendors update checks; pure unauthenticated checks may lag because Oracle has not published exploit mechanics.
STEP 03

Turn hub compromise into administrative control

Once the hub is owned, the attacker is sitting in a management service that Oracle says brokers peer communication, tracks environment data, and can carry remote commands/messages for Change Assistant workflows. That amplifies impact beyond a single web session because the hub understands the PeopleSoft estate and its managed peers. The weaponized 'tool' here is the product itself: PSEMHUB plus EMF message brokering.
Conditions required:
  • Successful compromise of the EM hub
  • Connected agents or managed peers in the environment
Where this breaks in practice:
  • Blast radius depends on whether agents are deployed and actively connected
  • Segmentation between web, app, process scheduler, and admin networks can limit follow-on control
  • Hardening around service accounts and outbound filtering can slow post-exploitation
Detection/coverage: Hub and web logs may show unusual peer operations, registration attempts, or command activity, but many teams do not baseline EMF traffic well.
STEP 04

Pivot into broader PeopleSoft infrastructure

From a compromised hub, an attacker can pursue credentials, configuration data, or remote tasking opportunities against other PeopleSoft servers. This is where a 'single vulnerable web app' becomes an enterprise admin-plane problem. Common post-exploitation tooling would be OS-native shells, credential theft, and lateral movement against app/process scheduler hosts.
Conditions required:
  • Useful trust relationships or credentials on the compromised host
  • Lateral network paths to managed PeopleSoft systems
Where this breaks in practice:
  • EDR, network segmentation, PAM, and service-account scoping can contain the pivot
  • Some organizations run EM only for maintenance windows or minimally use the feature set
Detection/coverage: EDR should catch the post-exploit phase better than the initial web compromise; watch for child processes from the web/app server context and abnormal remote administration activity.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo public exploitation evidence found in this review session, and CVE-2026-35273 was not present in the CISA KEV catalog page checked on 2026-06-11. Absence from KEV is *not* safety; it just means no CISA-listed exploitation signal yet.
Proof-of-concept availabilityNo public GitHub/Exploit-DB/Nuclei proof-of-concept was found during this review. Reporters credited by Oracle are Bobby Gould, Lucas Miller, and Minh Giang from TrendAI/ZDI-related research.
EPSSUser-supplied EPSS is 0.00025, which is extremely low and lines up with a niche enterprise product plus no public exploit signal. I could not independently validate the exact percentile from a public FIRST record in this session.
KEV statusNot KEV-listed as checked against the public CISA Known Exploited Vulnerabilities Catalog on 2026-06-11.
CVSS vector reality checkCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H means Oracle sees straight pre-auth network compromise with full CIA impact. That is technically severe, but CVSS does not price in the fact that this is usually an admin/update surface rather than a broadly exposed business endpoint.
Affected versionsOracle publicly lists supported affected versions as PeopleSoft Enterprise PeopleTools 8.61 and 8.62.
Fixed versions / patching modelOracle's public alert says a vendor fix is available to supported customers and points to MOS document CPU187, but it does not publicly disclose the exact fixed build number. For public intel purposes, patched version is therefore null.
Exposure and scanning notesNo authoritative public count of exposed PSEMHUB instances was verified in this session. Oracle's documentation shows the hub is a web application installed with PIA and describes host allowlisting via allowedhost.properties, which is strong evidence this surface is often reachable only from controlled peers.
DisclosurePublic disclosure date supplied in the case intel is 2026-06-11; Oracle's Security Alert revision is dated 2026-06-10.
Research creditOracle credits Bobby Gould, Lucas Miller, and Minh Giang from TrendAI / Zero Day Initiative reporting.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to HIGH (8.4/10)

The decisive factor is attacker reachability to the EM hub/admin plane, not the CVSS math. If PSEMHUB is exposed, this behaves like a near-critical pre-auth takeover; across a normal enterprise estate, that surface is usually constrained enough that HIGH is the right fleet-level priority bucket.

HIGH Affected versions and vendor-rated technical impact
MEDIUM Typical exposure prevalence of `PSEMHUB` in real enterprise deployments
MEDIUM No-public-exploit assessment as of 2026-06-11

Why this verdict

  • Start from Oracle's 9.8: pre-auth network compromise of a management component with takeover impact deserves a very high baseline.
  • Downgrade for attacker position: the attacker must reach the PeopleSoft web/admin surface hosting Updates Environment Management. In many enterprises that implies VPN, internal network, reverse proxy allowlisting, or at least a non-public path.
  • Downgrade for exposed population: this is an update-management component, not the core employee or student self-service flow. Real deployments are materially less likely to expose it directly to the internet than generic web apps.
  • Downgrade for exploit evidence: as of 2026-06-11, there is no KEV listing, no public exploitation evidence, and no public PoC found in this review. That matters when you are triaging across 10,000 hosts.
  • Hold at HIGH because blast radius is ugly once reached: Oracle documents that EMF can broker peer communication and remote actions. A reachable vulnerable hub can become an admin-plane pivot, not just a single-web-node incident.

Why not higher?

I did not keep this at CRITICAL because the most important prerequisite is direct reachability to a niche PeopleSoft management surface. That prerequisite sharply narrows the attackable population in real environments, and there is no public exploitation or KEV pressure yet. CRITICAL is warranted for an *exposed* hub, but not as the default fleet-wide rating.

Why not lower?

I did not drop this to MEDIUM because once the vulnerable endpoint is reachable, the chain is brutally short: no auth, no user interaction, and Oracle says takeover. The management-plane nature of EMF also increases follow-on impact beyond a single compromised web page.

05 · Compensating Control

What to do — in priority order.

  1. Restrict PSEMHUB network access — Limit the EM hub and related PeopleSoft admin/update paths to admin jump hosts, VPN ranges, or internal subnets only. Do this within 30 days because reachability is the main severity amplifier here; if the service is not reachable, the CVE is far harder to weaponize.
  2. Enforce hub host allowlisting — Use allowedhost.properties for HTTP or one-way SSL hub configurations so only expected agents/clients can talk to the hub. Deploy within 30 days; Oracle's own documentation explicitly supports this control and it directly cuts off opportunistic access.
  3. Disable or isolate EM where unused — If your maintenance model does not require active Environment Management hub exposure, disable the component or isolate it onto a non-routed admin segment. Complete within 30 days because unused management services should not stay exposed while you queue patch testing.
  4. Monitor for anomalous EMF activity — Add alerting for unusual web requests to PSEMHUB, unexpected peer registrations, and suspicious child processes from the PeopleSoft web/app server context. Stand this up within 30 days so you can catch exploitation attempts before full lateral movement.
  5. Tighten service-account and egress controls — Constrain the PeopleSoft web tier's outbound access and reduce over-privileged service accounts so hub compromise does not immediately become estate compromise. Apply within 30 days as a blast-radius control while patching moves through change control.
What doesn't work
  • MFA on user login pages does not help if the vulnerable endpoint is pre-auth and lives in the admin/update plane.
  • Perimeter SSL alone does not fix this; Oracle's advisory says HTTP implies HTTPS variants are affected too.
  • EDR alone is not a preventive control for the initial exploit. It may catch post-exploit tooling, but it does not remove the exposed pre-auth bug.
  • Routine vulnerability scanning without path restriction is not mitigation; it may tell you the box exists, but it leaves the reachable attack surface intact.
06 · Verification

Crowdsourced verification payload.

Run this on the PeopleSoft web/app host itself from a shell with read access to PS_HOME and the web deployment directories; no root/admin is required unless your install paths are locked down. Invoke it as python3 check_cve_2026_35273.py --ps-home /opt/psft/pt or, on Windows, py check_cve_2026_35273.py --ps-home D:\psft\pt; the script is a triage check for affected PeopleTools branches plus PSEMHUB presence, because Oracle's public alert does not expose the exact fixed build number.

noisgate-verify.py
PYTHONREAD-ONLYSAFE
#!/usr/bin/env python3
# check_cve_2026_35273.py
# Triage checker for CVE-2026-35273 (Oracle PeopleSoft PeopleTools Updates Environment Management)
# Exit codes:
#   0 = PATCHED / not in public affected major versions
#   1 = VULNERABLE / affected branch with PSEMHUB present
#   2 = UNKNOWN / insufficient evidence

import argparse
import os
import platform
import re
import shutil
import subprocess
import sys
from pathlib import Path

AFFECTED_MAJOR = {"8.61", "8.62"}


def eprint(msg):
    print(msg, file=sys.stderr)


def candidate_ps_homes(user_supplied=None):
    cands = []
    if user_supplied:
        cands.append(Path(user_supplied))
    for envvar in ("PS_HOME", "PSHOME"):
        val = os.environ.get(envvar)
        if val:
            cands.append(Path(val))
    common = []
    if os.name == "nt":
        common += [
            Path("C:/psft/pt"),
            Path("C:/oracle/psft/pt"),
            Path("D:/psft/pt"),
        ]
    else:
        common += [
            Path("/opt/psft/pt"),
            Path("/u01/app/psft/pt"),
            Path("/opt/oracle/psft/pt"),
        ]
    cands.extend(common)
    seen = []
    for c in cands:
        try:
            rc = c.resolve()
        except Exception:
            rc = c
        if rc not in seen:
            seen.append(rc)
    return seen


def find_psadmin(ps_home: Path):
    exe = "psadmin.exe" if os.name == "nt" else "psadmin"
    paths = [
        ps_home / "appserv" / exe,
        ps_home / "bin" / exe,
    ]
    for p in paths:
        if p.exists():
            return p
    found = shutil.which("psadmin")
    return Path(found) if found else None


def get_version_from_psadmin(psadmin_path: Path):
    try:
        proc = subprocess.run(
            [str(psadmin_path), "-v"],
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT,
            text=True,
            timeout=20,
            check=False,
        )
        out = proc.stdout or ""
        m = re.search(r"Version\s+(\d+\.\d+)", out, re.IGNORECASE)
        if m:
            return m.group(1), out.strip()
        m = re.search(r"(8\.6[12])", out)
        if m:
            return m.group(1), out.strip()
        return None, out.strip()
    except Exception as exc:
        return None, f"psadmin execution failed: {exc}"


def find_psemhub(ps_home: Path):
    checks = [
        ps_home / "webserv",
        ps_home.parent / "webserv",
        ps_home.parent.parent / "webserv",
    ]
    matches = []
    for base in checks:
        if not base.exists():
            continue
        for pattern in [
            "**/PSEMHUB",
            "**/PSEMHUB.war",
            "**/applications/peoplesoft/PSEMHUB",
            "**/applications/peoplesoft/PSEMHUB.war",
        ]:
            try:
                matches.extend(base.glob(pattern))
            except Exception:
                pass
    uniq = []
    for m in matches:
        try:
            rm = m.resolve()
        except Exception:
            rm = m
        if rm not in uniq:
            uniq.append(rm)
    return uniq


def read_allowed_hosts(psemhub_paths):
    candidates = []
    for p in psemhub_paths:
        if p.is_dir():
            candidates.append(p / "envmetadata" / "config" / "allowedhost.properties")
            candidates.append(p / "WEB-INF" / "classes" / "envmetadata" / "config" / "allowedhost.properties")
        else:
            candidates.append(p.parent / "envmetadata" / "config" / "allowedhost.properties")
    for c in candidates:
        if c.exists():
            try:
                content = c.read_text(errors="ignore")
            except Exception:
                content = ""
            lines = []
            for line in content.splitlines():
                s = line.strip()
                if not s or s.startswith("#"):
                    continue
                lines.append(s)
            return str(c), lines
    return None, []


def main():
    parser = argparse.ArgumentParser(description="Triage check for CVE-2026-35273")
    parser.add_argument("--ps-home", help="Path to PS_HOME")
    args = parser.parse_args()

    version = None
    version_src = None
    ps_home_used = None
    psadmin_path = None

    for cand in candidate_ps_homes(args.ps_home):
        if not cand.exists():
            continue
        psadmin = find_psadmin(cand)
        if not psadmin:
            continue
        v, src = get_version_from_psadmin(psadmin)
        ps_home_used = cand
        psadmin_path = psadmin
        version = v
        version_src = src
        break

    if not ps_home_used:
        print("UNKNOWN: could not locate PS_HOME/psadmin; supply --ps-home explicitly")
        sys.exit(2)

    psemhub_paths = find_psemhub(ps_home_used)
    ah_path, ah_lines = read_allowed_hosts(psemhub_paths)

    details = {
        "host_os": platform.platform(),
        "ps_home": str(ps_home_used),
        "psadmin": str(psadmin_path) if psadmin_path else None,
        "version": version,
        "psemhub_found": [str(p) for p in psemhub_paths],
        "allowedhost_file": ah_path,
        "allowedhost_entries": ah_lines,
    }

    # Public logic only: Oracle publicly lists affected versions 8.61 and 8.62.
    # The public alert does not provide exact fixed build numbers, so this script
    # treats affected branches with deployed PSEMHUB as VULNERABLE for triage.
    if version in AFFECTED_MAJOR and psemhub_paths:
        print("VULNERABLE: affected PeopleTools branch with PSEMHUB deployed")
        print(details)
        sys.exit(1)
    elif version and version not in AFFECTED_MAJOR:
        print("PATCHED: installed PeopleTools major version is outside Oracle's public affected list (8.61/8.62)")
        print(details)
        sys.exit(0)
    else:
        print("UNKNOWN: could not confirm version or PSEMHUB deployment decisively")
        print(details)
        sys.exit(2)


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

If you remember one thing.

TL;DR
Monday morning, identify every PeopleSoft 8.61/8.62 host and answer one question first: is PSEMHUB or any Updates Environment Management path reachable from untrusted networks? If yes, cut exposure immediately with ACLs/VPN/reverse-proxy restrictions and host allowlisting within 30 days under the noisgate mitigation SLA, and faster if you discover true internet exposure. Then move the Oracle fix through change control and complete vendor remediation within 180 days under the noisgate remediation SLA; if a hub is publicly reachable, do not wait for the back half of that window.

Sources

  1. Oracle Security Alert for CVE-2026-35273
  2. Oracle text risk matrix for CVE-2026-35273
  3. Oracle CSAF JSON for CVE-2026-35273
  4. Oracle docs: Configuring the Environment Management Hub
  5. Oracle docs: PeopleTools 8.56 Change Assistant and Update Manager
  6. Oracle docs: PeopleTools 8.62 System and Server Administration
  7. CISA Known Exploited Vulnerabilities Catalog
  8. FIRST EPSS FAQ
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.