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.
4 steps from start to impact.
Find exposed ORDS over HTTPS with httpx or nuclei
httpx or nuclei is enough to fingerprint Oracle REST endpoints, banners, redirects, and well-known paths before any exploit work starts.- Internet-reachable ORDS endpoint or attacker access to the internal app network
- HTTPS service exposed and routable to the ORDS tier
- 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
Reach the vulnerable BaaS code path with curl or a bespoke HTTPS client
- The vulnerable BaaS component is present and reachable in the deployment
- The attacker can send crafted HTTPS requests to that route
- 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
Compromise the ORDS service context using a custom exploit chain
- Exploit works against the target build and runtime configuration
- The ORDS service has meaningful privileges to local resources or downstream Oracle assets
- 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
Pivot into connected databases or apps with sqlplus, ORDS APIs, or stolen tokens
- ORDS is trusted by downstream databases or apps
- Credentials, pools, OAuth material, or privileged schemas are accessible from the compromised tier
- 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
The supporting signals.
| In-the-wild status | No authoritative evidence of active exploitation found in the reviewed public sources as of 2026-06-04; not listed in CISA KEV. |
|---|---|
| KEV status | No. Absent from the CISA Known Exploited Vulnerabilities Catalog reviewed on 2026-06-04. |
| EPSS | EPSS 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 availability | I 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 vector | CVSS: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 versions | Oracle 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 versions | Oracle 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 reality | I 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 date | Published by Oracle on 2026-05-28; NVD search results also show publication on 2026-05-28. |
| Researcher / reporting | No individual finder or research team is named in the public Oracle advisory material reviewed. Oracle is the authoritative public source for the vulnerability details. |
noisgate verdict.
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.
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-Servicecomponent, 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.
What to do — in priority order.
- 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.
- 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.
- 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.
- 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.
- 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.
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.
#!/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 2If you remember one thing.
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
- Oracle Critical Security Patch Update Advisory - May 2026
- Oracle public vulnerability-to-advisory mapping
- Oracle ORDS downloads
- Oracle ORDS changelog
- NVD search dashboard result for CVE-2026-46840
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS overview
- CSO Online roundup of Oracle May 2026 patches
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.