Diese Java-Bibliothek war gegen zwei potentielle Angriffe anfällig, welche es einem Angreifer ermöglichten, einige Sicherheitsmaßnahmen zu umgehen.
Seit der Einführung des OSCI-Transport Protokolls 2001 wurde dieses von diversen deutschen Behörden eingeführt, um Daten sicher über unsichere Netzwerke (wie dem Internet) zu übertragen. Das OSCI-Transport Protokoll gewährleistet Integrität, Vertraulichkeit, Authentizität und Nicht-Abstreitbarkeit für sämtliche übertragenen Daten. Die OSCI-Transport Bibliothek ist eine kostenfreie Implementierung dieses Protokolls und wird von der KoSIT bereitgestellt.
2017 konnte das SEC Consult Vulnerability Lab bereits diverse Sicherheitsschwachstellen in dieser Bibliothek feststellen. Bei einer kurzen erneuten Überprüfung der Bibliothek im September 2018 wurden zwei weitere Schwachstellen identifiziert, welche in diesem Blogpost beschrieben werden. Diese Schwachstellen erlauben einem Angreifer die Sicherheitsmechanismen auszuhebeln, welche dazu gedacht sind, die Metadaten einer Nachricht zu schützen (Verschlüsselung von Aufträgen und Auftragsantworten und Signatur von Aufträgen und Auftragsantworten).
Vorausgesetzt sämtliche von OSCI-Transport bereitgestellten Sicherheitsmechanismen werden verwendet, sind die Auswirkungen der Schwachstellen daher eingeschränkt. Wenn jedoch die Signatur von Inhaltsdaten und die Verschlüsselung von Inhaltsdaten nicht aktiv sind, sind die Auswirkungen der Schwachstelle kritisch. Da SEC Consult nicht bekannt ist, wie OSCI-Transport in der Praxis üblicherweise eingesetzt wird, können wir die tatsächlichen Auswirkungen der Schwachstellen nicht einschätzen. Unabhängig von der praktischen Relevanz halten wird die technischen Details dieser Schwachstellen für sehr interessant und werden daher in diesem Blogpost näher erörtert.
SEC Consult führte kein vollständiges Security Audit durch und kann daher keine Aussage über die gesamte Sicherheit der Bibliothek oder der implementierten Sicherheitsmechanismen treffen.
Übersicht OSCI-Transport
OSCI-Transport ist ein XML-basiertes Kommunikationsprotokoll, welches einen Intermediär benötigt, um die Kommunikation zwischen einem Sender und einem Empfänger zu ermöglichen. Die wichtigsten Sicherheitsfeatures von OSCI-Transport sind:
- Die Signatur von Inhaltsdaten gewährleistet Authentizität der übertragenen Daten.
- Die Verschlüsselung von Inhaltsdaten gewährleistet Vertraulichkeit der übertragenen Daten. Da der Intermediär die Inhaltsdaten nicht entschlüsseln kann, bietet dieser Mechanismus Ende-zu-Ende-Verschlüsselung.
- Die Signatur von Aufträgen und Auftragsantworten gewährleistet Authentizität für die Kommunikation zwischen einem Sender und dem Intermediär bzw. zwischen dem Intermediär und dem Empfänger.
- Die Verschlüsselung von Aufträgen und Auftragsantworten gewährleistet Vertraulichkeit für die Kommunikation vom und zum Intermediär.
Alle diese Sicherheitsmechanismen sind optional – die beteiligten Kommunikationspartner müssen sich vorab auf die zu verwendenden Mechanismen einigen.
Bei einem Datenaustausch baut ein Sender eine Verbindung zu einem Intermediär auf (z.B. über HTTP) und überträgt die OSCI-Transport XML-Nachricht. Um Daten empfangen zu können, sind zwei Szenarien definiert: Ein aktiver Empfänger initiiert eine Verbindung mit dem Intermediär, um Nachrichten abzuholen, während ein passiver Empfänger auf Verbindungen eines Intermediärs wartet, um Nachrichten zu empfangen.