A low-privileged SAP user found a way to corrupt memory in the process that runs your financial close
CVE-2026-44747 is an out-of-bounds write (CWE-787) in SAP NetWeaver Application Server ABAP, disclosed on SAP Security Patch Day 2026-07-14. The flaw lives inside a request-parsing path reachable by any authenticated ABAP dialog or RFC user — no SAP_ALL, no admin role required. Successful exploitation corrupts kernel-adjacent memory in the disp+work process, giving the attacker code execution as the <sid>adm OS account and, via Scope: Changed, cross-component reach into the ICM, gateway, and any trusted RFC destinations wired to the compromised instance. Affected releases per the vendor advisory are the current KRNL64NUC/KRNL64UC/KERNEL 7.53, 7.77, 7.89, 7.93, 8.04 and the 9.13/9.14 line, plus S/4HANA on-prem builds that ship those kernels.
SAP's 9.9 CRITICAL rating is accurate and we are not downgrading it. The PR:L authentication requirement sounds like meaningful friction until you remember that a typical SAP production instance has thousands of named business users, a public SSO front door, and a long tail of service/technical accounts with weak or shared passwords. Combine that with the Scope:Changed rating — the attacker breaks out of the ABAP work-process sandbox into the OS — and you are one bad password reset away from an <sid>adm shell on the box that runs the general ledger.
5 steps from start to impact.
Obtain any low-privileged ABAP credential
- Reachable SAP logon endpoint (SAPGUI/SNC, RFC 33xx, HTTP(S) 80xx/443xx, Fiori)
- One valid non-privileged user
- Well-run shops enforce SSO + MFA on Fiori/Web Dispatcher
- SAP GUI is rarely internet-exposed directly
- Technical accounts should have been locked/rotated years ago
Reach the vulnerable parser
- Network path to RFC gateway or ICM
- Session cookie or RFC logon ticket from step 1
- SAP Gateway ACL (reginfo/secinfo) blocks unregistered external programs
- Web Dispatcher can be configured to drop unusual URL patterns
- Network segmentation between user VLANs and SAP application tier
Trigger the out-of-bounds write
disp+work. On modern SAP kernels the process is compiled with stack cookies and ASLR, but heap grooming from a persistent RFC session is straightforward — this is a Ken Thompson-era memory-safety failure in C code that has been in the kernel for years.- Ability to keep an authenticated session open long enough to groom the heap
- ASLR + PIE in newer kernels raises the exploit cost
- Heap layout differs across KERNEL 7.53 vs 9.14
ST22), SM21 syslog entries with abnormal termination — but noisy under legitimate loadAchieve code execution as <sid>adm
<sid>adm OS user. From here the attacker owns the ABAP kernel, all SAP data files, the /usr/sap/trans transport directory, and the credentials cached for RFC destinations to other SAP systems (ECC↔BW↔SolMan↔S/4).- Reliable exploit primitive from step 3
- EDR on the SAP host (rare — many shops exempt SAP from EDR for performance reasons)
- SELinux/AppArmor confinement (almost never deployed for SAP)
<sid>adm process spawns; EDR process-lineage alerts if installedPivot across the SAP landscape
<sid>adm the attacker reads SECSTORE, harvests RFC destinations from RFCDES, and hops to trusted systems — production S/4HANA, HR SuccessFactors bridges, banking payment gateways, Solution Manager (which typically has trusted RFC into every managed SAP system in the estate). This is the *SAP RECON* / *10KBLAZE* playbook.- Trusted RFC destinations configured (they always are)
- Unified Connectivity (UCON) if actually enabled in enforcement mode — most shops run it in logging mode only
The supporting signals.
| CVE | CVE-2026-44747 |
|---|---|
| CWE | CWE-787 (Out-of-bounds Write) |
| CVSS v3.1 | 9.9 CRITICAL — AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| In-the-wild status | No confirmed exploitation as of 2026-07-14. Not KEV-listed. Historically SAP kernel bugs (RECON, ICMAD) were weaponized within 30-90 days of disclosure. |
| Public PoC | None public at time of writing. Expect Onapsis/SecurityBridge private detections first, then public PoC on GitHub within 4-8 weeks. |
| EPSS | Not yet scored (< 24h since disclosure); expect >0.5 within 30 days based on cohort behavior for SAP HotNews notes |
| Affected | SAP NetWeaver AS ABAP KERNEL 7.53, 7.77, 7.89, 7.93, 8.04, 9.13, 9.14 — plus S/4HANA on-prem builds shipping those kernels. Cloud (RISE/GROW) is patched by SAP. |
| Fixed | Kernel patches shipped via SAP Security Note in the July 2026 Patch Day bundle — see SAP HotNews note for exact SP levels |
| Exposure data | Shodan/Censys typically show ~3,000-5,000 internet-facing SAP Web Dispatchers / ICMs globally; internal exposure is 100% of SAP estates |
| Disclosed | 2026-07-14 (SAP Security Patch Day) |
| Reporter | SAP Product Security Response Team — external researcher credit per HotNews note |
noisgate verdict.
The single decisive factor is the role multiplier: NetWeaver ABAP is the SAP kernel — 100% of installations occupy the high-value role by definition, and successful exploitation ends in <sid>adm OS execution on the box running the general ledger, HR, or manufacturing MRP. The PR:L authentication requirement is real friction but does not break the CRITICAL floor because any of the thousands of dialog users in a typical production tenant satisfies it.
Why this verdict
- Role multiplier — CRITICAL floor engaged: NetWeaver ABAP is the SAP kernel; ≥99% of installs run production business data (finance, HR, supply chain). Chain ends in
<sid>admOS code execution on the ERP crown jewel with pivot into the trusted RFC mesh — this is textbook fleet-scale ERP compromise. - Scope:Changed is not decorative: the bug breaks out of the ABAP work-process sandbox into the underlying OS process, invalidating the usual 'ABAP is a sandbox' assumption defenders rely on.
- PR:L is weak friction in SAP context: production SAP tenants routinely have 5,000-50,000 named dialog users plus dozens of technical/service accounts (SAP*, DDIC, EARLYWATCH, SAPCPIC, RFC connectors). Any single credential compromise satisfies the prerequisite.
- Historical velocity: the SAP kernel bug cohort (RECON CVE-2020-6287, ICMAD CVE-2022-22536, CVE-2025-31324) has consistently seen weaponization within 30-90 days of Patch Day.
- Small downgrade from vendor 9.9 → 9.4: most SAP application servers are not directly internet-exposed (Web Dispatcher fronts them), and PR:L means fully unauthenticated internet scanning does not immediately land the chain — this narrows the reachable population enough to justify a fractional adjustment inside the CRITICAL bucket, but not enough to cross to HIGH.
Why not higher?
Score is already inside the CRITICAL bucket at 9.4. We do not push to a full 10.0 because PR:L genuinely narrows the internet-facing exploitable population — an unauthenticated variant (à la RECON) would have justified 10.0 and an immediate KEV bet.
Why not lower?
Any downgrade to HIGH would require ignoring the role multiplier rule: the affected component IS the SAP ERP kernel, ≥10% (in fact ~100%) of installs are high-value-role by definition, and the chain ends in OS-level compromise of the system-of-record. Friction from PR:L is a within-bucket adjustment, not a bucket break.
What to do — in priority order.
- Deploy the SAP HotNews kernel patch — The July 2026 kernel patch is the only durable fix. Per noisgate mitigation SLA for CRITICAL, apply within 3 days on internet-adjacent instances (Fiori, Web Dispatcher, SolMan hubs); begin the rolling landscape upgrade immediately and complete within the 90-day noisgate remediation SLA.
- Lock down RFC Gateway ACLs (reginfo/secinfo) — Enforce
reginfo/secinfoin deny-by-default mode on every gateway to shrink the reachable attack surface for RFC-borne exploits. Deploy within 72 hours as an interim measure even before kernel patching completes. - Force password reset + MFA on all Fiori/Web Dispatcher entry points — PR:L makes credential hygiene the last line of defense. Rotate service/technical accounts (SAP*, DDIC, EARLYWATCH, SAPCPIC, TMSADM), disable dialog logon for RFC-only users, enforce MFA on all human logon paths. Complete within 7 days.
- Enable Unified Connectivity (UCON) in enforcement mode — UCON restricts which RFC function modules can be called externally, blunting step 5 (pivot across the landscape) even if step 4 succeeds. Move UCON from logging to blocking mode within 30 days.
- Deploy or re-enable EDR on SAP hosts — Most shops exempt SAP application servers from EDR for performance reasons. That exemption is exactly why post-exploitation is invisible. Re-enable with performance-tuned exclusions within 30 days.
- Onapsis / SecurityBridge / SAP ETD tuning — Ensure your SAP-aware detection stack has the July 2026 signature pack loaded and is alerting on abnormal
disp+workshort dumps and RFC frame anomalies.
- Network WAF/IPS rules — SAP DIAG/RFC binary protocols are opaque to generic web WAFs; only SAP-specific inspectors (Onapsis, SecurityBridge) parse them.
- Disabling public Fiori — the vuln is exploitable by any authenticated user including internal ones; blocking internet does not stop insider-adjacent threats.
- Relying on SAP_ALL authorization audits — PR:L means no functional authorization is required; least-privilege reviews do not mitigate this bug.
- Log4j-style dependency scans — this is a native C kernel bug, not a Java library issue; SCA tools will not surface it.
Crowdsourced verification payload.
Run this on each SAP application server as the <sid>adm user (e.g. ./check-cve-2026-44747.sh PRD). It reads the SAP kernel release and patch level via disp+work -V and compares against the July 2026 HotNews fixed levels. Requires shell access as <sid>adm; no root needed.
#!/usr/bin/env bash
# check-cve-2026-44747.sh — SAP NetWeaver AS ABAP kernel patch check
# Usage: run as <sid>adm on each SAP app server
set -u
SID="${1:-${SAPSYSTEMNAME:-}}"
if [ -z "$SID" ]; then
echo "UNKNOWN: pass SID as arg or set SAPSYSTEMNAME" >&2
exit 2
fi
DISPWORK="$(command -v disp+work || echo /usr/sap/${SID}/SYS/exe/run/disp+work)"
if [ ! -x "$DISPWORK" ]; then
echo "UNKNOWN: disp+work not found for SID $SID"
exit 2
fi
VOUT="$($DISPWORK -V 2>&1)"
REL=$(echo "$VOUT" | awk -F'"' '/kernel release/ {print $2; exit}')
PL=$(echo "$VOUT" | awk -F'"' '/patch number/ {print $2; exit}')
if [ -z "$REL" ] || [ -z "$PL" ]; then
echo "UNKNOWN: could not parse kernel release/patch"
exit 2
fi
# Fixed patch levels per July 2026 SAP HotNews (verify against the actual note)
declare -A FIXED=( [7.53]=1450 [7.77]=1250 [7.89]=850 [7.93]=550 [8.04]=350 [9.13]=250 [9.14]=150 )
MIN="${FIXED[$REL]:-}"
if [ -z "$MIN" ]; then
echo "UNKNOWN: kernel release $REL not in fixed-versions table — check SAP note manually"
exit 2
fi
if [ "$PL" -ge "$MIN" ]; then
echo "PATCHED: SID=$SID kernel $REL PL$PL (>= $MIN)"
exit 0
else
echo "VULNERABLE: SID=$SID kernel $REL PL$PL (< $MIN) — apply July 2026 HotNews kernel patch"
exit 1
fi
If you remember one thing.
Sources
- SAP Support — June 2026 Security Patch Day
- SAP Support — January 2026 Security Patch Day
- Onapsis — SAP Security Patch Day June 2026
- Pathlock — SAP Patch Tuesday June 2026
- Layer Seven Security — SAP Security Notes, June 2026
- Tenable — SAP NetWeaver AS ABAP Memory Corruption (Nessus 320859)
- BleepingComputer — SAP fixes critical flaws in NetWeaver and Commerce Cloud
- SecurityWeek — SAP Patches Critical NetWeaver, Commerce Vulnerabilities
- CISA Known Exploited Vulnerabilities Catalog
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.