Schwachstellen in GnuPG ermöglichen die Umgehung der Verifizierung und die Ausführung eigenen Codes.

Auf der in Deutschland stattfindenden Konferenz 39C3 (Chaos Communication Congress) wurden Details zu 12 zuvor unbekannten und nach wie vor unbehobenen (0-Day) Schwachstellen im GnuPG-Toolkit (GNU Privacy Guard) veröffentlicht. Dieses bietet OpenPGP- und S/MIME-kompatible Tools zur Datenverschlüsselung, zum Arbeiten mit digitalen Unterschriften, zur Schlüsselverwaltung und zum Zugriff auf öffentliche Schlüsselverzeichnisse. Die gefährlichsten Schwachstellen ermöglichen es, die Überprüfung durch digitale Signaturen zu umgehen und Code bei der Verarbeitung von verschlüsselten Daten im ASCII-Format (ASCII Armor) auszuführen. Funktionsprototypen für Exploits und Patches sollen später veröffentlicht werden. CVE-Identifikatoren wurden bisher noch nicht zugewiesen.

Die Schwachstellen resultieren aus Fehlern im Code zur Datenverarbeitung und Formatanalyse und stehen nicht im Zusammenhang mit Schwachstellen in den Kryptografie-Algorithmen. Beispielsweise führt ein Fehler im Parser zu einem Fehlschlag bei der Bestimmung von tatsächlich signierten Daten und schafft Bedingungen, unter denen die überprüften Daten von den signierten Daten abweichen können, was es einem Angreifer ermöglicht, den Klartext ohne Zugriff auf den privaten Schlüssel zu manipulieren.

Identifizierte Probleme:

  • Fehler im Parser-Code für verschlüsselte Daten, die im ASCII-Armor-Format (Textdateien mit dem Block „BEGIN/END PGP ARMORED FILE“) verbreitet werden, was zu einem Schreibzugriff außerhalb des Pufferspeicherbereichs führt. Dieses Problem kann bei der Verarbeitung von speziell formatierten Daten in gpg zur Ausführung von Code führen. Die Schwachstelle tritt in der Funktion armor_filter() auf und wird durch eine doppelte Erhöhung des Zählers „n“ in der „for“-Schleife verursacht – trotz der Anweisung „n++“ in der Schleife wird der Zähler auch im Schleifeninhalt bei der Speicherung der Daten in den Puffer „buf[n++]“ erhöht. Dadurch wird ein zusätzliches Byte außerhalb des Puffers geschrieben, und die Variable mit der Größe „ret_len“ wird auf einen Wert gesetzt, der den tatsächlichen Wert übersteigt.
  • Die Möglichkeit, jede Datei zu erstellen oder zu überschreiben, was die aktuellen Zugriffsrechte zulassen, aufgrund einer fehlerhaften Verarbeitung des Inhalts des Feldes „filename“ im Datenpaket. Diese Schwachstelle kann ausgenutzt werden, um Code auf dem System auszuführen, wenn der Empfänger die Befehle „gpg —decrypt poc.enc“ und „gpg poc.enc“ zum Anzeigen der vom Angreifer gesendeten Datei poc.enc ausführt. Die Ausführung von Code kann beispielsweise durch die Erstellung von Dateien ~/.bash_completion oder ~/.ssh/authorized_keys erreicht werden.
  • Die Möglichkeit, den im Benutzer angezeigten Klartext, wenn die Option „—decrypt“ angegeben wird, zu ändern und die Überprüfung mit separat bereitgestellten digitalen Signaturen (Detached Signature, erstellt mit der Option „—detach-sig“ und in einer separaten sig-Datei bereitgestellt) durchzuführen. Das Problem besteht darin, dass bei der getrennten Übermittlung der Nachricht und der sig-Datei ein Angreifer, der den zwischenliegenden Verkehr (MITM) kontrolliert, Änderungen an der sig-Datei vornehmen kann. Dadurch bleibt die Überprüfung erfolgreich, aber beim Anzeigen der Nachricht aus der sig-Datei mit der Option „—decrypt“ wird ein anderer Inhalt ausgegeben. echo Plaintext > plaintext gpg —detach-sig plaintext # Änderung plaintext.sig durch den Angreifer mit zusätzlichem Text gpg —verify plaintext.sig plaintext # verifiziert gpg —decrypt plaintext.sig # verifiziert, aber ein anderer Text wird ausgegeben
  • Die Möglichkeit, einer signierten Nachricht beliebige Daten hinzuzufügen, bei gleichbleibender erfolgreicher Überprüfung der Signatur. Das Problem tritt auf, wenn die Daten an der Grenze von 20.000 Zeichen bei der Hash-Berechnung abgeschnitten werden.
  • Unzureichende Überprüfung der Authentifizierung von Verschlüsselungscodes (MDC - Modification Detection Codes), die es ermöglicht, verschlüsselte Pakete so zu manipulieren, dass der entschlüsselte Inhalt als ein anderer Pakettyp verarbeitet wird (beispielsweise als für die Veröffentlichung vorgesehener öffentlicher Schlüssel).
  • Die Möglichkeit, zusätzliche Daten in CS-Signaturen (Cleartext Signature) einzufügen, die mit dem Flag „—not-dash-escaped“ erstellt oder aus separat eingefügten Signaturen (Detached Signature) konvertiert wurden. Diese Schwachstelle kann ausgenutzt werden, um beim Benutzer den falschen Eindruck zu erwecken, welche Daten tatsächlich signiert wurden. Beispielsweise kann der Benutzer von vertrauenswürdigen Quellen einen gültigen Schlüssel zur Überprüfung der digitalen Signatur herunterladen, aber ein Angreifer kann im Rahmen eines MITM-Angriffs das heruntergeladene ISO-Image ändern und einen zusätzlichen Hash in die Signatur des Images einfügen, so dass die Überprüfung des manipulierten Images erfolgreich verläuft, solange der richtige Überprüfungsschlüssel im System vorhanden ist.
  • 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 den Hash-Header einzufügen.
  • Falsche Interpretation des OpenPGP-Formats, wodurch eine «One-Pass Signed Message» im ASCII-codierten Format als «Cleartext Signature» behandelt werden kann, wenn der Header entsprechend geändert wird. Diese Schwachstelle erlaubt es, die ursprünglichen signierten Daten gegen schädliche Inhalte auszutauschen und dabei den Anschein einer erfolgreichen Überprüfung zu wahren.
  • Mangelnde klare Trennung in der Ausgabe der Informationen über den Erfolg der Überprüfung der digitalen Signatur und des Nachrichteninhalts, was die Erstellung gefälschter, unsignierter Nachrichten ermöglicht, die beim Ausführen von «gpg —decrypt» wie authentische erscheinen.
  • Die Möglichkeit, OpenPGP-Nachrichten zu erstellen, die in gpg anders verarbeitet werden als in anderen OpenPGP-Implementierungen. Das Problem wird durch die Art und Weise verursacht, wie sehr lange Zeilen in ASCII-Daten von OpenPGP verarbeitet werden.
  • Die Schaffung von Bedingungen im Prozess der Überprüfung der digitalen Signatur, die einen Rückschritt des Überprüfungsalgorithmus auf das unsichere SHA1 ermöglichen.
  • Die Möglichkeit, eigene sekundäre Schlüssel (subkey) ohne deren Autorisierung mit einem privaten Bestandteil des Master-Schlüssels einzufügen. Der Angriff erfolgt durch das Hinzufügen eines gefälschten Schlüsselbunds mittels 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 im Terminal ("\e[1E") oder Sonderzeichen ("\r") im Kommentarfeld, um die Ausgabe des Programms zu verändern, beispielsweise um Informationen über das Verifizierungsergebnis zu ersetzen.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster