Es gibt kaum ein Unternehmen oder eine Regierungsbehörde, die keine PDF-Dateien verwendet. Darüber hinaus werden häufig digitale Signaturen verwendet, um die Authentizität solcher Dokumente sicherzustellen. Wenn Sie eine signierte Datei per PDF-Viewer öffnen, zeigt das Programm eine Markierung an, die signalisiert, dass und von wem das Dokument signiert wurde. Außerdem erhält man Zugriff auf das Menü der Signaturüberprüfung.
Ein Forscherteam mehrerer deutscher Universitäten hat die Robustheit solcher PDF-Signaturen getestet. Vladislav Mladenov von der Ruhr-Universität Bochum teilte die Ergebnisse des Teams auf dem Chaos Communication Congress (36С3) mit.
Die Aufgabe der Forscher war einfach: Den Inhalt eines signierten PDF-Dokuments zu ändern, ohne dabei die Gültigkeit der Signatur zu beeinträchtigen. Theoretisch könnten Cyberkriminelle das Gleiche tun, um einer signierten Datei falsche Informationen oder schädliche Inhalte hinzuzufügen. Schließlich vertrauen Kunden einem von einer Bank signierten Dokument und klicken höchstwahrscheinlich auch auf die darin enthaltenen Links.
Das Team wählte die 22 beliebtesten PDF-Viewer für verschiedene Plattformen aus und fütterte sie systematisch mit den Ergebnissen ihrer Experimente.
Die Struktur einer PDF-Datei
Zunächst ein paar Worte zum PDF-Format selbst. Jede Datei besteht aus vier Hauptteilen: Header (dt. Kopfzeile), die die PDF-Version anzeigt; Body (dt. Textkörper), der den Hauptinhalt widerspiegelt; XRef-Table, ein Verzeichnis, in dem die Objekte im Textkörper und ihre Positionen aufgelistet sind (zum Anzeigen des Inhalts); und Trailer, mit dem PDF-Viewer das Dokument lesen. Der Trailer enthält zwei wichtige Parameter, die dem Programm mitteilen, wo mit der Verarbeitung der Datei begonnen werden soll und wo der Xref-Abschnitt beginnt.
Im PDF-Format ist eine inkrementelle Update-Funktion integriert, mit der die Benutzer beispielsweise einen Teil des Textes markieren und Kommentare hinterlassen können. Aus technischer Sicht fügt die Funktion drei weitere Abschnitte hinzu: Aktualisierungen für den Textkörper, ein neues XRef-Verzeichnis und einen neuen Trailer. Dadurch ist es möglich, die Sichtweise der Objekte für den Benutzer zu ändern und neue Inhalte hinzuzufügen. Im Wesentlichen ist eine digitale Signatur auch eine inkrementelle Aktualisierung, die der Datei ein weiteres Element und entsprechende Abschnitte hinzufügt.
Incremental Saving Attack (ISA)
Zunächst versuchte das Team, der Datei mit einem weiteren inkrementellen Update mithilfe eines Texteditors zusätzliche Abschnitte hinzuzufügen. Streng genommen ist das kein Angriff – das Team hat einfach eine Funktion verwendet, die von den Erstellern des Formats implementiert wurde. Wenn ein Benutzer eine Datei öffnet, die auf diese Weise geändert wurde, zeigt der PDF-Reader normalerweise eine Meldung an, dass die digitale Signatur gültig ist, das Dokument jedoch geändert wurde. Nicht die aufschlussreichste Nachricht, vor allem nicht für einen unerfahrenen Benutzer. Schlimmer noch, einer der PDF-Viewer (LibreOffice) zeigte die Nachricht nicht einmal an.
Das nächste Experiment umfasste das Entfernen der beiden letzten Abschnitte (d. H. das Hinzufügen eines Updates zum Body, aber nicht der neuen XRef und des neuen Trailers). Einige Anwendungen haben sich geweigert, mit einer solchen Datei zu arbeiten. Zwei PDF-Viewer haben das Fehlen der Abschnitte erkannt und diese automatisch hinzugefügt, ohne den Leser über eine Änderung des Inhalts zu benachrichtigen. Drei andere öffneten die Datei ohne jeglichen Widerspruch.
Als Nächstes fragten sich die Forscher, was passieren würde, wenn sie die digitale Signatur einfach in ihr eigenes „manuelles“ Update kopieren würden. Zwei weitere Programme wurden hereingelegt – Foxit und MasterPDF.
Insgesamt erwiesen sich 11 der 22 PDF-Viewer als anfällig für diese einfachen Manipulationen. Außerdem gaben sechs von ihnen keinerlei Warnsignal, dass das zum Anzeigen geöffnete Dokument geändert wurde. In den anderen fünf Fällen musste der Benutzer das Menü aufrufen und die Gültigkeit der digitalen Signatur manuell überprüfen, um Manipulationen zu erkennen. Das einfache Öffnen der der Datei war nicht ausreichend.
Signature Wrapping Attack (SWA)
Durch das Signieren eines Dokuments werden dem Body zwei wichtige Felder als inkrementelle Aktualisierung hinzugefügt: „/ Contents“ (enthält die Signatur) und „/ ByteRange“ (die genaue Beschreibung darüber, was eigentlich signiert wurde). Bei der Byterange handelt es sich um vier Parameter, die 1. den Dateianfang definieren, 2. die Anzahl der Bytes vor dem Signaturcode zählen, 3. einen Byte zur Verdeutlichung des Signaturendes definieren, und 4. die Anzahl der Bytes nach der Signatur zählen, da die digitale Signatur eine Zeichenfolge ist, die kryptografisch aus dem Code des PDF-Dokuments erzeugt wurde. Natürlich kann sich die Signatur nicht selbst signieren, daher wird der Bereich, in dem sie gespeichert ist, von der Signaturberechnung ausgeschlossen.
Die Forscher versuchten, unmittelbar nach der Signatur ein weiteres „/ ByteRange“ Feld hinzuzufügen. Die ersten beiden Werte blieben unverändert, lediglich die Stelle des Endes des Signaturcodes wurde geändert. Damit schaffte man einen zusätzlichen Bereich in der Datei, in dem man bösartige Objekte hinzufügen kann, sowie einen beschreibenden XRef-Abschnitt. Theoretisch würde der PDF-Viewer die neuen Abschnitte nicht richtig lesen, wenn die PDF richtig gelesen werden, wenn die PDF richtig verarbeitet werden würde. 17 der 22 Anwendungen waren jedoch für einen solchen Angriff anfällig.
Universelle Signaturfälschung (USF)
Aus gutem Grund hat das Forschungsteam die Anwendungen einem Stresstest unterzogen. Hierbei versucht man die Werte von Feldern durch falsche zu ersetzen oder sie einfach zu löschen. Beim Experimentieren mit dem Abschnitt „/ Contents“ stellte sich heraus, dass zwei Viewer die tatsächliche Signatur noch validierten, nachdem sie durch den Wert 0x00 ersetzt wurde.
Und was wäre, wenn die Signatur an Ort und Stelle belassen würde, aber der Abschnitt „/ ByteRange (Informationen darüber, was genau signiert wurde) gelöscht würde? Oder anstelle von realen Werten lediglich eine Null eingefügt würde? In beiden Fällen haben einige Viewer eine solche Signatur validiert.
Insgesamt wurden in 4 der 22 Programme Implementierungsfehler festgestellt, die ausgenutzt werden konnten.
Die zusammenfassende Ergebnistabelle zeigt, dass nicht weniger als 21 der 22 PDF-Viewer hinters Licht geführt werden konnten. Das heißt, für alle bis auf einen von ihnen ist es möglich, eine PDF-Datei mit böswilligem Inhalt oder falschen Informationen zu erstellen, die für den Benutzer gültig erscheinen.
Witzigerweise war Adobe Reader 9 die einzige Anwendung, die keinem der Tricks der Forscher auf den Leim ging. Das Problem ist, dass diese Version des Adobe Readers für eine RCE-Sicherheitslücke anfällig ist und nur von Linux-Benutzern verwendet wird, einfach weil es die neueste Version ist, die ihnen zur Verfügung steht.
Praktischen Folgerungen
Welche praktischen Schlussfolgerungen können wir daraus ziehen? Erstens sollte niemand digitalen PDF-Signaturen blind vertrauen. Wenn Sie irgendwo ein grünes Häkchen sehen, bedeutet dies nicht unbedingt, dass die Signatur gültig ist.
Zweitens kann auch ein unterschriebenes Dokument ein Risiko darstellen. Vergewissern Sie sich daher, dass auf Ihrem Computer eine zuverlässige Sicherheitslösung Kaspersky Endpoint Security for Business installiert ist, bevor Sie online empfangene Dateien öffnen oder auf Links klicken .