XML Signature Wrapping: Die Kunst SAML Assertions zu fälschen
Transcription
XML Signature Wrapping: Die Kunst SAML Assertions zu fälschen
XML Signature Wrapping: Die Kunst SAML Assertions zu fälschen Andreas Mayer Prof. Dr. Jörg Schwenk Adolf Würth GmbH & Co. KG Lehrstuhl für Netz- und Datensicherheit Künzelsau-Gaisbach Ruhr-Universität Bochum 19. DFN Workshop „Sicherheit in vernetzten Systemen“ Hamburg, 22.02.2012 Agenda • Motivation • Grundlagen • XML Signature Wrapping • Angriff auf Shibboleth • Gegenmaßnahmen • Fazit 2 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 SAML in a nutshell • Security Assertion Markup Language • XML-basierte Auszeichnungssprache • Austausch von Authentifizierungs- und Berechtigungsinformationen • Offener Standard • Einsatzgebiete • Browserbasiertes Single Sign-On • Webservices in SOA Architekturen 3 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Wo wird SAML eingesetzt? 4 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Single Sign-On mit SAML Identity Provider 5 19. DFN Workshop "Sicherheit in vernetzten Systemen" User Agent Service Provider © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Single Sign-On mit SAML Identity Provider User Agent Service Provider Zugriff auf Webseite 6 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Single Sign-On mit SAML Identity Provider User Agent Service Provider Zugriff auf Webseite HTTP Redirect 7 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Single Sign-On mit SAML Identity Provider User Agent Service Provider Zugriff auf Webseite HTTP Redirect 8 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Single Sign-On mit SAML Identity Provider User Agent Service Provider Zugriff auf Webseite User: Bob Role: guest 9 19. DFN Workshop "Sicherheit in vernetzten Systemen" HTTP Redirect © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Single Sign-On mit SAML Identity Provider User Agent Service Provider Zugriff auf Webseite User: Bob Role: guest HTTP Redirect User: Bob Role: guest 10 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Single Sign-On mit SAML Identity Provider User Agent Service Provider Zugriff auf Webseite User: Bob Role: guest HTTP Redirect User: Bob Role: guest 11 19. DFN Workshop "Sicherheit in vernetzten Systemen" User: Bob Role: guest © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Single Sign-On mit SAML Identity Provider User Agent Service Provider Zugriff auf Webseite User: Bob Role: guest HTTP Redirect User: Bob Role: guest User: Bob Role: guest Schutz während der Übertragung durch TLS/SSL 12 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 SAML Assertion <saml:Assertion ID="123"> <saml:Issuer>www.SecureIdP.com</saml:Issuer> <saml:Subject> <saml:NameID>[email protected]</saml:NameID> </saml:Subject> <ds:Signature>...</ds:Signature> <saml:Conditions NotBefore="2011-08-08T14:42:00Z" NotOnOrAfter="2011-08-08T14:47:00Z"> <saml:AudienceRestriction> <saml:Audience>www.SecureSP.com</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> </saml:Assertion> 13 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 XML Signature • Schützt die SAML Assertion selbst • XML Signature gewährleistet • Datenintegrität und Unveränderbarkeit • Nichtwiderlegbarkeit (eindeutige Urheberschaft) • Flexibel aber sehr komplex 14 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Schutz der Assertion mit XML Signature Response Assertion ID= „123“ Bob Subject Signature SignedInfo Reference URI=„#123“ DigestValue SignatureValue 15 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Schutz der Assertion mit XML Signature Response Assertion ID= „123“ Bob Subject Signature SignedInfo Reference URI=„#123“ DigestValue SignatureValue 16 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Schutz der Assertion mit XML Signature Response Assertion ID= „123“ Bob Subject Signature SignedInfo Reference URI=„#123“ DigestValue SignatureValue 17 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 XML Signature Wrapping Angriff • Entdeckt von McIntosh und Austel in 2005 • Wirkung Vollständige Aushebelung aller XML Signature Sicherheitsfunktionen • Voraussetzung Angreifer benötigt eine signierte Assertion: • Registrierter Benutzer bei Identity Provider • Google Hacking (z.B. in Supportforen usw.) • Bei Angriff erbeutet (z.B. per XSS, Malware …) 18 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Standard XML Signature Wrapping Response Assertion ID= „123“ Bob Subject Nachricht authentisiert Bob an einem Service Provider. Signature SignedInfo Reference 19 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Standard XML Signature Wrapping Response Wrapper Assertion Bob Subject Assertion 1. Assertion kopieren ID= „123“ ID= „123“ Bob Subject Signature SignedInfo Reference 20 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Standard XML Signature Wrapping Response Wrapper Assertion ID= „123“ Bob Subject Assertion 1. Assertion kopieren 2. Assertion modifizieren ID= „666 “ Admin Subject Signature SignedInfo Reference 21 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Service Provider Verarbeitung am Service Provider Response Wrapper Assertion ID= „123“ Bob Subject Assertion ID= „666 “ Admin Subject Signature SignedInfo Reference 22 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Service Provider Verarbeitung am Service Provider Response Wrapper Assertion ID= „123“ Assertion Signatur validieren Bob Subject ID= „666 “ Admin Subject Signature SignedInfo Reference 23 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Service Provider Verarbeitung am Service Provider Response Wrapper Assertion ID= „123“ Assertion Signatur validieren Bob Subject ID= „666 “ Admin Subject Assertion verarbeiten Signature SignedInfo Reference 24 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Angriff auf Shibboleth • Implementiert Schutzmaßnahmen Standardangriff nicht möglich • XML SchemaSchema-Validierung Verhindert vollkommen freies Einfügen von kopierten Assertions • Nur Enveloped Signatures erlaubt Knoten der XML Signature muss direkt in Assertion liegen • Gleichheit IDID-Attribut Stringvergleich von ID-Attribut der signierten Assertion mit der Reference URI aus XML Signature 25 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Neue XML Signature Wrapping Angriffsvariante Response • Grundlegende Idee: Identische ID-Attribute Extensions Assertion ID= „123“ Bob Subject ID= „123“ Assertion Subject Admin Signature SignedInfo Reference 26 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Verarbeitung beim Shibboleth Service Provider Response 1. Schema Validierung a. <Extensions> Extensions Assertion ID= „123“ Bob Subject ID= „123“ Assertion Subject Admin Signature SignedInfo Reference 27 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Verarbeitung beim Shibboleth Service Provider Response 1. Schema Validierung a. <Extensions> b. Doppeltes ID-Attribut Extensions Assertion ID= „123“ Bob Subject ID= „123“ Assertion Subject Admin Signature SignedInfo Reference 28 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Verarbeitung beim Shibboleth Service Provider Response 1. Schema Validierung a. <Extensions> b. Doppeltes ID-Attribut (Fehler in Xerces) Extensions Assertion ID= „123“ Bob Subject ID= „123“ Assertion Subject Admin Signature SignedInfo Reference 29 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Verarbeitung beim Shibboleth Service Provider Response 1. Schema Validierung a. <Extensions> b. Doppeltes ID-Attribut (Fehler in Xerces) 2. Extensions Assertion ID= „123“ Assertion Subject 30 19. DFN Workshop "Sicherheit in vernetzten Systemen" Bob Subject Enveloped Signature a. Signatur in Assertion <Signature> ist KindKnoten von signierter Assertion ID= „123“ Admin Signature SignedInfo Reference URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Verarbeitung beim Shibboleth Service Provider Response 1. Schema Validierung a. <Extensions> b. Doppeltes ID-Attribut (Fehler in Xerces) 2. Extensions Assertion ID= „123“ Assertion Signature Reference a. Stringvergleich mit Elternknoten ? Reference URI == Assertion ID Bob Subject Enveloped Signature a. Signatur in Assertion 3. ID= „123“ Subject Admin Signature SignedInfo Reference 31 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Verarbeitung beim Shibboleth Service Provider (C++ Implementierung) Response Signaturverifikation Xerces getElementById() liefert bei doppelten IDs erstes Element zurück (C++). Extensions ID= „123“ Assertion Subject Bob ID= „123“ Assertion Subject Admin Signature SignedInfo Reference 32 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Verarbeitung beim Shibboleth Service Provider (C++ Implementierung) Response Signaturverifikation Xerces getElementById() liefert bei doppelten IDs erstes Element zurück (C++). Extensions ID= „123“ Assertion Subject Bob Assertion verarbeiten Anwendungslogik verarbeitet Assertion aus <Response>. ID= „123“ Assertion Subject Admin Signature SignedInfo Reference 33 19. DFN Workshop "Sicherheit in vernetzten Systemen" URI=„#123“ © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Verarbeitung beim Shibboleth Service Provider (Java Implementierung) Response Signaturverifikation Xerces getElementById() liefert bei doppelten IDs letztes Element zurück (Java). ID= „123“ Assertion Admin Subject Signature SignedInfo Reference 34 URI=„#123“ Assertion verarbeiten Anwendungslogik verarbeitet Assertion aus <Response>. Extensions 19. DFN Workshop "Sicherheit in vernetzten Systemen" Assertion ID= „123“ Subject Bob © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 XML Signature Wrapping verhindern • Jedes einzelne Verarbeitungsmodul muss die von der Signatur geschützten Daten verarbeiten. SignaturSignaturverifikation Response Response Assertion Assertion Assertion Assertion Signature 35 Assertion verarbeiten 19. DFN Workshop "Sicherheit in vernetzten Systemen" Signature © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Gegenmaßnahme I: Strict Filtering • Signaturverifikation gibt keinen Boolean-Wert zurück, sondern die signierte Assertion. Response Assertion SignaturSignaturverifikation Assertion Assertion verarbeiten Assertion Signature • Positiv: • Alle Module arbeiten mit gleichen Daten • Negativ • Arbeiten mit (modifizierten) Teilbäumen • Nicht in verteilten SOA-Umgebungen einsetzbar (XML Security Gateway) 36 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Gegenmaßnahme II: Geprüfte Elemente markieren • Signaturverifikation markiert die signierten und geprüften Teile im XML-Dokument • Markierung mit Zufallszahl r (Weitergabe als Parameter) Response Response Assertion Assertion Signature SignaturSignaturverifikation Assertion Assertion r=„42“ Signature • Positiv: • Alle Module arbeiten auf einem Dokument • Auch in verteilten SOA-Umgebungen einsetzbar (XML Security Gateway) • Negativ: • Erfordert Erweiterung des SAML XML Schemas 37 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Fazit • Neue Klasse von XML Signature Wrapping Angriffen entdeckt • Shibboleth trotz spezieller Sicherungsmaßnahmen anfällig (CVE-2011-1411) • Schwachstellen gefixt (SP ab Version 2.4.3; IdP ab Version 2.3.2) • XML Signature Wrapping sind seit 2005 bekannt, aber • weit verbreitet • schwer zu verhindern (viele Permutationen, Bugs in verwendeten Libraries) • bisher nicht im Fokus der Forschung • Bei Einsatz von XML Signature immer Schutzmaßnahmen einbauen! 38 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012 Vielen Dank für Ihre Aufmerksamkeit! Fragen? Andreas Mayer [email protected] 39 19. DFN Workshop "Sicherheit in vernetzten Systemen" © Adolf Würth GmbH & Co. KG, Künzelsau, 2012