Auf der in Deutschland stattfindenden Konferenz 39C3 (Chaos Communication Congress) wurden Details zu 12 zuvor unbekannten und nach wie vor unbereinigten (0-Day) Schwachstellen im GnuPG (GNU Privacy Guard) bekanntgegeben, einem Werkzeug, das mit den Standards OpenPGP und S/MIME kompatible Hilfsprogramme zur DatenverschlĂŒsselung, zur Bearbeitung elektronischer Signaturen, zum SchlĂŒsselmanagement und zum Zugriff auf öffentliche SchlĂŒsselverzeichnisse bietet. Die gefĂ€hrlichsten Schwachstellen ermöglichen es, die ĂberprĂŒfung digitaler Signaturen zu umgehen und die AusfĂŒhrung von Code bei der Verarbeitung von verschlĂŒsselten Daten im ASCII-Format (ASCII Armor) zu erwirken. Arbeiten an Exploit-Prototypen und Patches werden spĂ€ter veröffentlicht. CVE-Identifikatoren wurden bisher noch nicht vergeben.
Die Schwachstellen sind durch Fehler im Code zur Verarbeitung von Daten und zur Analyse von Formaten verursacht und stehen nicht in Zusammenhang mit LĂŒcken in den Krypto-Algorithmen. Beispielsweise fĂŒhrt ein Fehler im Parser zu einem Absturz, wenn es darum geht, tatsĂ€chlich signierte Daten zu bestimmen, wodurch Bedingungen geschaffen werden, unter denen die zu ĂŒberprĂŒfenden Daten nicht mit den signierten Daten ĂŒbereinstimmen. Dies ermöglicht es einem Angreifer, den Klartext zu manipulieren, ohne Zugang zum privaten SchlĂŒssel zu haben.
Festgestellte Probleme:
- Ein Fehler im Code des Parsers fĂŒr verschlĂŒsselte Daten, die im ASCII-Armor-Format verteilt werden (Textdateien mit dem Block âBEGIN/END PGP ARMORED FILEâ), fĂŒhrt zu einem Schreibzugriff auĂerhalb des Pufferspeicherbereichs. Dieses Problem kann dazu fĂŒhren, dass beim Verarbeiten von gpg speziell gestaltete Daten Code ausgefĂŒhrt wird. Die Schwachstelle manifestiert sich in der Funktion armor_filter() und wird durch eine doppelte Erhöhung des ZĂ€hlers ânâ in der âforâ-Schleife verursacht â trotz der Angabe ân++â in der Schleife wird der ZĂ€hler auch im Schleifenrumpf beim Schreiben von Daten in den Puffer âbuf[n++]â erhöht. Infolgedessen wird ein zusĂ€tzliches Byte auĂerhalb des Puffers geschrieben, und die Variable mit der GröĂe âret_lenâ erhĂ€lt einen Wert, der das tatsĂ€chliche ĂŒberschreitet.
- Die Möglichkeit, jede Datei zu erstellen oder zu ĂŒberschreiben, soweit die aktuellen Zugriffsrechte es zulassen, aufgrund der fehlerhaften Verarbeitung des Inhalts des Feldes âfilenameâ in einem Datenpaket. Diese Schwachstelle kann genutzt werden, um die AusfĂŒhrung von Code im System zu ermöglichen, wenn der EmpfĂ€nger die Befehle âgpg âdecrypt poc.encâ und âgpg poc.encâ ausfĂŒhrt, um die vom Angreifer gesendete Datei poc.enc anzuzeigen. Die AusfĂŒhrung von Code kann beispielsweise durch das Erstellen von Dateien ~ / .bash_completion oder ~ / .ssh / authorized_keys erreicht werden.
- Die Möglichkeit, den sichtbaren Text, der dem Benutzer beim Angeben der Option ââdecryptâ und der ĂberprĂŒfung mit separat gelieferten digitalen Signaturen (Detached Signature, erstellt mit der Option ââdetach-sigâ und in einer separaten sig-Datei bereitgestellt) angezeigt wird, zu ersetzen. Das Problem besteht darin, dass bei der getrennten Ăbermittlung der Nachricht und der sig-Datei ein Angreifer, der den Verkehr im Zwischenbereich (MITM) kontrolliert, Ănderungen an der sig-Datei vornehmen kann, nach denen die ĂberprĂŒfung erfolgreich bleibt, aber beim Anzeigen der Nachricht aus der sig-Datei mit der Option ââdecryptâ anderer Inhalt ausgegeben wird. echo Plaintext > plaintext gpg âdetach-sig plaintext # Ănderung plaintext.sig durch den Angreifer mit HinzufĂŒgung von zusĂ€tzlichem Text gpg âverify plaintext.sig plaintext # verifiziert gpg âdecrypt plaintext.sig # verifiziert, aber anderer Text wird ausgegeben
- Die Möglichkeit, eine signierte Nachricht mit beliebigen Daten zu ergĂ€nzen, wĂ€hrend die erfolgreiche ĂberprĂŒfung der Signatur erhalten bleibt. Das Problem tritt aufgrund des Abschneidens von Daten an der Grenze von 20000 Zeichen bei der Berechnung des Hashs auf.
- Unkorrekte ĂberprĂŒfung von Codes fĂŒr authentifizierte VerschlĂŒsselung (MDC â Modification Detection Codes), die es ermöglichen, mit verschlĂŒsselten Paketen zu manipulieren, sodass der erhaltene Inhalt beim EntschlĂŒsseln als ein anderer Pakettyp verarbeitet wird (z. B. als fĂŒr die Veröffentlichung vorgesehener öffentlicher SchlĂŒssel erkannt wird).
- Die Möglichkeit, zusĂ€tzliche Daten in CS-Signaturen (Cleartext Signature), die mit dem Flag âânot-dash-escapedâ erstellt wurden oder aus separat gelieferten Signaturen (Detached Signature) konvertiert wurden, einzufĂŒgen. Diese Schwachstelle kann verwendet werden, um beim Benutzer den falschen Eindruck zu erwecken, welche Daten tatsĂ€chlich signiert wurden. Beispielsweise kann der Benutzer aus vertrauenswĂŒrdigen Quellen den korrekten SchlĂŒssel zur ĂberprĂŒfung der digitalen Signatur herunterladen, aber ein Angreifer kann wĂ€hrend eines MITM-Angriffs das heruntergeladene iso-Abbild Ă€ndern und einen zusĂ€tzlichen Hash in die Signatur des Abbilds einfĂŒgen, sodass die ĂberprĂŒfung des manipulierten Abbilds erfolgreich ist, wenn der korrekte ĂberprĂŒfungsschlĂŒssel im System vorhanden ist.
- Das EinfĂŒgen zusĂ€tzlicher Daten in die ASCII-Darstellung der CS-Signatur (Cleartext Signature) durch das EinfĂŒgen eines Null-Zeichens. Diese Schwachstelle ermöglicht es beispielsweise, beliebigen Text in die Hash-Ăberschrift einzufĂŒgen.
- Unkorrekte Interpretation des OpenPGP-Formats, aufgrund derer die Nachricht âOne-Pass Signed Messageâ im ASCII-codierten Format als âCleartext Signatureâ interpretiert werden kann, wenn der Header entsprechend verĂ€ndert wird. Die Schwachstelle ermöglicht es, die ursprĂŒnglichen signierten Daten durch schĂ€dlichen Inhalt zu ersetzen, wĂ€hrend die erfolgreiche Verifizierung vorgetĂ€uscht wird.
- Fehlende klare Trennung in der Ausgabe der Informationen ĂŒber den Erfolg der ĂberprĂŒfung der digitalen Signatur und dem Inhalt der Nachricht, was es ermöglicht, gefĂ€lschte nicht signierte Nachrichten zu erstellen, die bei der AusfĂŒhrung von âgpg âdecryptâ wie authentische wirken.
- Möglichkeit, OpenPGP-Nachrichten zu erstellen, die in gpg anders verarbeitet werden als in anderen OpenPGP-Implementierungen. Das Problem resultiert aus der speziellen Behandlung extrem langer Zeilen in der ASCII-Darstellung von OpenPGP-Daten.
- Schaffung von Bedingungen im Prozess der Verifizierung der digitalen Signatur, um den Hash-PrĂŒfalgorithmus auf das unsichere SHA1 zurĂŒckzusetzen.
- Möglichkeit, eigene sekundĂ€re SchlĂŒssel (subkey) ohne deren Autorisierung unter Verwendung des privaten Teils des Master-SchlĂŒssels einzusetzen. Der Angriff erfolgt durch HinzufĂŒgen eines gefĂ€lschten SchlĂŒsselspeichers mithilfe der Option ââkeyringâ.
ZusĂ€tzlich wurden zwei Schwachstellen in minisign, einem vereinfachten Werkzeug zur Erstellung und ĂberprĂŒfung digitaler Signaturen, entdeckt. Beide Schwachstellen (1, 2) ermöglichen die Verwendung von Steuersequenzen des Terminals (â\e[1Eâ) oder von Sonderzeichen (â\râ) im Kommentarfeld zur Modifikation der Programmausgabe, beispielsweise zur VerĂ€nderung der Information ĂŒber das Verifizierungsergebnis.
Quelle: opennet.ru
