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