← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-46840 · CWE-284 · Disclosed 2026-05-28

Vulnerability in Oracle REST Data Services

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

This is a master key for a side entrance, not a citywide skeleton key

Oracle rates CVE-2026-46840 as a CVSS 10.0 flaw in the Backend-as-a-Service component of Oracle REST Data Services, affecting supported versions 24.2.0 through 26.1.0. The vendor describes it as remotely exploitable over HTTPS without authentication, with possible full compromise of the ORDS instance and knock-on impact to connected products because scope is changed.

On raw mechanics, Oracle's severity is understandable: unauthenticated network reach plus full CIA impact is the worst-case pattern. In real enterprise patch triage, though, this is not Exchange or Confluence: ORDS is a narrower deployment class, the vulnerable surface is component-specific, EPSS is extremely low, there is no KEV listing, and I found no public PoC or verified campaign telemetry tied to this CVE as of 2026-06-04, so this lands as HIGH, not CRITICAL.

"Unauthenticated takeover over HTTPS is bad, but niche product exposure and zero exploitation evidence keep this below CRITICAL."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Find exposed ORDS over HTTPS with httpx or nuclei

An attacker first needs a reachable ORDS listener, typically a standalone ORDS deployment or ORDS behind Tomcat, WebLogic, Apache, or a load balancer. Commodity recon tooling like httpx or nuclei is enough to fingerprint Oracle REST endpoints, banners, redirects, and well-known paths before any exploit work starts.
Conditions required:
  • Internet-reachable ORDS endpoint or attacker access to the internal app network
  • HTTPS service exposed and routable to the ORDS tier
Where this breaks in practice:
  • Many enterprises keep ORDS internal behind VPN, private load balancers, or application gateways
  • Reverse proxies often strip banners and make fingerprinting less reliable
  • External attack surface is much smaller than for mass-market web middleware
Detection/coverage: External ASM, web access logs, and exposure management tools usually catch the reachable service; vuln scanners may flag the version but cannot reliably prove exploitability without vendor guidance.
STEP 02

Reach the vulnerable BaaS code path with curl or a bespoke HTTPS client

The attacker then has to hit the specific Backend-as-a-Service functionality Oracle called out, not just any ORDS route. With no public technical write-up or PoC available in the reviewed sources, the likely near-term threat is bespoke exploit development or private research rather than instant spray-and-pray weaponization.
Conditions required:
  • The vulnerable BaaS component is present and reachable in the deployment
  • The attacker can send crafted HTTPS requests to that route
Where this breaks in practice:
  • Component-specific reachability narrows the exposed population versus all ORDS installs
  • No public exploit recipe means attackers still need reverse engineering or patch diffing
  • Front-end controls like API gateways, WAFs, and path allowlists may block malformed or unexpected requests
Detection/coverage: WAF, reverse-proxy, and ORDS access logs are the best telemetry here; signature coverage is likely weak until vendors and scanner teams publish deeper detection content.
STEP 03

Compromise the ORDS service context using a custom exploit chain

If exploitation succeeds, the stated impact is takeover of Oracle REST Data Services, which in practice means control of the middleware service context and whatever that service account can reach. Because Oracle marked scope as changed, a successful compromise can affect assets beyond the ORDS process itself.
Conditions required:
  • Exploit works against the target build and runtime configuration
  • The ORDS service has meaningful privileges to local resources or downstream Oracle assets
Where this breaks in practice:
  • Service isolation, containerization, non-root execution, and strict filesystem permissions reduce blast radius
  • Real-world impact depends heavily on how powerful the ORDS runtime account is
  • Hardened deployments may separate ORDS from sensitive admin paths and management interfaces
Detection/coverage: EDR on the ORDS host, process creation telemetry, unexpected child processes, JVM anomaly monitoring, and sudden config changes are the best post-exploitation signals.
STEP 04

Pivot into connected databases or apps with sqlplus, ORDS APIs, or stolen tokens

The real business risk is not the middleware alone; it is the trust ORDS holds to databases, schemas, APEX, or downstream application logic. Once inside the ORDS trust boundary, attackers may abuse existing connection pools, secrets, or API privileges to move laterally without needing a second exploit.
Conditions required:
  • ORDS is trusted by downstream databases or apps
  • Credentials, pools, OAuth material, or privileged schemas are accessible from the compromised tier
Where this breaks in practice:
  • Least-privilege database users, network ACLs, and separated environments can sharply limit pivot value
  • Some deployments expose only narrow application schemas rather than broad DBA-equivalent access
  • Database auditing and PAM controls may catch unusual post-compromise behavior
Detection/coverage: Watch for unusual SQL from ORDS-associated accounts, spikes in REST calls, token issuance anomalies, and east-west connections from the ORDS tier to database or admin endpoints.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo authoritative evidence of active exploitation found in the reviewed public sources as of 2026-06-04; not listed in CISA KEV.
KEV statusNo. Absent from the CISA Known Exploited Vulnerabilities Catalog reviewed on 2026-06-04.
EPSSEPSS provided in the prompt: 0.00054 (~0.054% 30-day exploitation probability). That is very low threat likelihood, and no reliable percentile was available from the primary sources reviewed.
PoC availabilityI found no public GitHub or Exploit-DB PoC for this CVE in the reviewed sources. A contemporaneous CSO Online roundup specifically called out PoCs for other Oracle bugs, not this one.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H = unauthenticated remote exploit over network, no user interaction, potential full compromise, and possible impact beyond the ORDS component itself due to scope changed.
Affected versionsOracle lists supported Oracle REST Data Services versions 24.2.0 through 26.1.0 as affected in the May 2026 Critical Security Patch Update.
Fixed versionsOracle does not spell out a patched build number in the advisory text, but the affected range stops at 26.1.0 and Oracle's download pages show 26.1.1 and newer releases; operationally, treat 26.1.1 or later as the likely fixed train, but verify against your Oracle support channel before mass rollout.
Exposure and scanning realityI found no public GreyNoise/GreyNoise blog, Censys advisory, or Shodan exposure report specifically tying this CVE to scanning or exploitation. Risk is therefore driven more by whether you expose ORDS externally than by current internet-wide attack telemetry.
Disclosure datePublished by Oracle on 2026-05-28; NVD search results also show publication on 2026-05-28.
Researcher / reportingNo individual finder or research team is named in the public Oracle advisory material reviewed. Oracle is the authoritative public source for the vulnerability details.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to HIGH (8.3/10)

The single biggest downward pressure is real exposure population: this is a serious unauthenticated HTTPS bug, but it sits in a comparatively specialized Oracle middleware product and a component-specific surface, not a mass-exposed edge platform. The main upward pressure is still huge: if an exposed target is vulnerable, Oracle says the attacker can take over the ORDS tier with possible downstream impact, so this cannot go below HIGH.

MEDIUM Overall severity reassessment
HIGH Affected version range and unauthenticated remote attack preconditions
LOW Exact exploit mechanics due to limited public technical detail

Why this verdict

  • Downgraded for exposure friction: attacker needs a reachable ORDS HTTPS service; that immediately cuts the addressable population below broad enterprise middleware and public SaaS edges.
  • Downgraded again for component specificity: Oracle names the Backend-as-a-Service component, which is narrower than "any ORDS endpoint" and likely not uniformly exposed across all deployments.
  • Held high because impact is ugly: Oracle's own advisory says unauthenticated remote compromise can lead to ORDS takeover with S:C, meaning downstream products and trust relationships can amplify business impact once exploitation lands.

Why not higher?

I am not calling this CRITICAL because the public record is thin: no KEV, no verified in-the-wild campaign, no public PoC, and no public internet telemetry showing opportunistic mass scanning for this CVE. CVSS 10.0 describes worst-case exploitability and impact, but it does not account for the smaller real-world footprint of ORDS and the apparent component-specific reachability requirement.

Why not lower?

I am not pushing this to MEDIUM because the attacker does not need credentials, user interaction, or local foothold. If you do expose vulnerable ORDS to the internet, the chain is short, the payload is likely one-request or low-interaction over HTTPS, and the downstream blast radius can extend into Oracle-backed applications and data stores.

05 · Compensating Control

What to do — in priority order.

  1. Block direct internet reachability to ORDS — Put exposed ORDS behind VPN, private ingress, or tight reverse-proxy allowlists where feasible. For a HIGH verdict, deploy this containment within 30 days to meet the mitigation expectation and to cut off the unauthenticated network prerequisite entirely.
  2. Restrict BaaS and high-risk ORDS paths at the edge — Use WAF, API gateway, or reverse-proxy path rules to allow only known-good URIs and methods, and explicitly deny unused ORDS features and development endpoints. Apply these policy controls within 30 days if patch rollout is slower across a large fleet.
  3. Reduce ORDS service account privilege — Constrain the ORDS runtime user, database schemas, connection pools, and local filesystem permissions so a middleware compromise cannot automatically become database-wide compromise. For a HIGH verdict, complete the highest-value privilege cuts within 30 days on internet-facing and crown-jewel instances first.
  4. Turn on deep logging for ORDS and downstream database accounts — Retain reverse-proxy logs, ORDS access logs, JVM/application logs, and database audit trails for accounts used by ORDS. This will not prevent exploitation, but it materially improves triage and scoping while you work through patching within the 180-day remediation window.
What doesn't work
  • MFA does not help against an unauthenticated pre-auth HTTPS flaw if the vulnerable request path is reachable before login.
  • Database password rotation alone does not remove risk if the ORDS tier itself remains vulnerable and still holds valid pooled credentials or service trust.
  • Network IDS without application awareness is weak here because there is no public exploit signature yet and the traffic rides normal HTTPS semantics.
06 · Verification

Crowdsourced verification payload.

Run this on the target ORDS host or inside the container image that ships ORDS. Invoke it as bash check_ords_cve_2026_46840.sh /path/to/ords.war or point it at an ORDS install directory like bash check_ords_cve_2026_46840.sh /opt/ords; no root is required, but the user must be able to read the ORDS WAR/JAR file.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_ords_cve_2026_46840.sh
# Detect whether a local Oracle REST Data Services artifact appears vulnerable to CVE-2026-46840
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN, 3=usage/runtime error

set -u

TARGET="${1:-}"

if [[ -z "$TARGET" ]]; then
  echo "UNKNOWN - usage: $0 /path/to/ords.war|ords.jar|install_dir"
  exit 3
fi

find_artifact() {
  local t="$1"
  if [[ -f "$t" ]]; then
    echo "$t"
    return 0
  fi
  if [[ -d "$t" ]]; then
    local f
    f=$(find "$t" -maxdepth 3 -type f \( -iname 'ords*.war' -o -iname 'ords*.jar' \) 2>/dev/null | head -n 1)
    if [[ -n "$f" ]]; then
      echo "$f"
      return 0
    fi
  fi
  return 1
}

ARTIFACT=$(find_artifact "$TARGET") || {
  echo "UNKNOWN - could not find ORDS war/jar under: $TARGET"
  exit 2
}

extract_version() {
  local a="$1"
  local v=""

  if command -v unzip >/dev/null 2>&1; then
    v=$(unzip -p "$a" META-INF/MANIFEST.MF 2>/dev/null | awk -F': ' '/^(Implementation-Version|Specification-Version): /{print $2; exit}')
  fi

  if [[ -z "$v" ]]; then
    v=$(basename "$a" | grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n 1 || true)
  fi

  echo "$v"
}

normalize_version() {
  local raw="$1"
  if [[ "$raw" =~ ^([0-9]+)\.([0-9]+)(\.([0-9]+))? ]]; then
    local major="${BASH_REMATCH[1]}"
    local minor="${BASH_REMATCH[2]}"
    local patch="${BASH_REMATCH[4]:-0}"
    echo "$major.$minor.$patch"
    return 0
  fi
  return 1
}

version_ge() {
  [[ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | tail -n 1)" == "$1" ]]
}

version_le() {
  [[ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n 1)" == "$1" ]]
}

RAW_VERSION=$(extract_version "$ARTIFACT")
if [[ -z "$RAW_VERSION" ]]; then
  echo "UNKNOWN - unable to read ORDS version from: $ARTIFACT"
  exit 2
fi

VERSION=$(normalize_version "$RAW_VERSION") || {
  echo "UNKNOWN - unrecognized ORDS version string: $RAW_VERSION"
  exit 2
}

AFFECTED_MIN="24.2.0"
AFFECTED_MAX="26.1.0"
PATCHED_MIN="26.1.1"

if version_ge "$VERSION" "$AFFECTED_MIN" && version_le "$VERSION" "$AFFECTED_MAX"; then
  echo "VULNERABLE - ORDS version $VERSION detected in $ARTIFACT (matches Oracle affected range $AFFECTED_MIN to $AFFECTED_MAX for CVE-2026-46840)"
  exit 1
fi

if version_ge "$VERSION" "$PATCHED_MIN"; then
  echo "PATCHED - ORDS version $VERSION detected in $ARTIFACT (not in Oracle affected range for CVE-2026-46840)"
  exit 0
fi

echo "UNKNOWN - ORDS version $VERSION detected in $ARTIFACT, but Oracle public advisory reviewed for this check only lists affected supported versions $AFFECTED_MIN to $AFFECTED_MAX"
exit 2
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, pull your ORDS inventory and split it into internet-facing, internal but reachable by many users/apps, and isolated. For this HIGH verdict, use the noisgate mitigation SLA to remove or sharply restrict public ORDS exposure and lock down unused BaaS paths within 30 days; then use the noisgate remediation SLA to move every affected 24.2.0-26.1.0 instance onto Oracle's fixed train within 180 days, with internet-facing and high-trust ORDS instances first.

Sources

  1. Oracle Critical Security Patch Update Advisory - May 2026
  2. Oracle public vulnerability-to-advisory mapping
  3. Oracle ORDS downloads
  4. Oracle ORDS changelog
  5. NVD search dashboard result for CVE-2026-46840
  6. CISA Known Exploited Vulnerabilities Catalog
  7. FIRST EPSS overview
  8. CSO Online roundup of Oracle May 2026 patches
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.