Dokumentenerstellung in CiviCRM: Sicherheitslücke bei wkhtmltopdf
Lena Jukna

wkhtmltopdf - ein externes Dienstprogramm, das in CiviCRM verwendet wird, um Dokumente zu erzeugen - wird nicht mehr gewartet. Das kann zu ernsten Sicherheitsproblemen führen. So finden Sie heraus, ob Ihr System betroffen ist und welche Umstellung erforderlich ist.
Was ist wkhtmltopdf?
wkhtmltopdf ist ein weit verbreitetes Open-Source-Dienstprogramm, das eine WebKit-Engine nutzt, um aus HTML ein PDF zu erzeugen. Mit dieser Anwendung können Sie Daten aus einer HTML-Seite extrahieren und in PDF-Dateien umwandeln. In CiviCRM wird wkhtmltopdf in der Regel dort verwendet, wo PDFs erzeugt werden. Das betrifft zum Beispiel Dokumente und Briefe, die aus der Kontaktübersicht erstellt werden, oder die Generierung von Zuwendungsbescheinigungen (ZWB).
Warum stellt wkhtmltopdf ein Sicherheitsrisiko dar?
Das Software-Projekt wkhtmltopdf wird nicht mehr aktiv gewartet und weiterentwickelt. Das kann dazu führen, dass kritische Sicherheitslücken mit schwerwiegenden Auswirkungen entstehen: Da wkhtmltopdf HTML-Inhalte serverseitig rendert, stellt es ein hohes Risiko für die Sicherheitslücken „Server-seitige Anforderungsfälschung“ (SSRF) und „Lokale Dateieinbindung“ (LFI) dar.
Die Lösung: dompdf
Es gibt alternative Komponenten, die die Funktionalität von wkhtmltopdf übernehmen können, z. B. dompdf, pandoc, Gotenberg oder WeasyPrint . Von diesen Optionen schätzen wir die Umstellung auf dompdf als am besten geeignete Lösung ein, um die sichere Funktionsweise von CiviCRM mit angemessenem Aufwand zu gewährleisten. Dies entspricht auch der offiziellen Empfehlung des CiviCRM-Core-Teams.
Langfristig werden wir in die Weiterentwicklung von CiviOffice investieren, um Zuwendungsbescheinigungen auf Basis von Office-Dokumenten zu erstellen. Zum jetzigen Zeitpunkt ist diese Lösung allerdings noch nicht verfügbar.
Das müssen Sie jetzt tun
Bei von SYSTOPIA betreuten Systemen wird wkhtmltopdf bei einem der nächsten Updates entfernt und die Umstellung zu dompdf eingeleitet.
Bitte testen Sie, ob Ihr System betroffen ist: Das können Sie tun, indem Sie auf Ihrer Testumgebung den Pfad zu wkhtmltopdf prüfen, die Komponente entfernen und Ihre typischen Use Cases der PDF-Erzeugung testen:
Prüfen Sie, ob Ihr CiviCRM wkhtmltopdf verwendet
Navigieren Sie auf Ihrer Testumgebung zu Administration > Systemeinstellungen > Diverses (Wiederherstellen, PDFs, Limits, Logging, etc.) oder geben Sie direkt /civicrm/admin/setting/misc hinter die URL Ihrer Testumgebung in die Adresszeile Ihres Browsers ein.
Suchen Sie nach dem Feld „Pfad zu wkhtmltopdf“. Prüfen Sie, ob die Einstellung leer oder definiert ist. Wenn sie ausgefüllt ist, verwendet Ihr System wkhtmltopdf.
Entfernen Sie den Pfad zu wkhtmltopdf
Wenn ein Pfad zu wkhtmltopdf angegeben ist, entfernen Sie diesen aus dem Feld und speichern Sie ihn lokal ab (So können Sie den Pfad später wieder einfügen, um die Ergebnisse zu vergleichen). Speichern Sie die Einstellungen Ihrer Testumgebung.
Testen Sie die Ergebnisse der PDF-Erzeugung
Testen Sie nun alle PDF-Erzeugungsprozesse, die in Ihrem CiviCRM anfallen. Das kann Briefe und Dokumente aus aus Kontaktübersicht betreffen, Zuwendungsbescheinigungen und in seltenen Fällen weitere Berichte, die als PDF ausgegeben werden. Vergleichen Sie die Darstellung Ihrer Dokumente mit dem erwarteten Ergebnis.
Anpassung von Zuwendungsbescheinigungen
In den meisten Fälle greift die Erweiterung Donation Receipts auf wkhtmltopdf zurück, um Inhalte aus CiviCRM in PDF-Dokumenten zu rendern. Eine Umstellung auf dompdf muss pro Umgebung erfolgen und erfordert einen individuelle Anpassungen an den ZWB-Vorlagen.
Warum ist dieser Aufwand nötig? Die Vorlagen für Zuwendungsbescheinigungen sind bisher auf wkhtmltopdf optimiert. Da ein anderes Dienstprogramm die Inhalte in PDFs unterschiedlich darstellt, treten Abweichungen auf. Beispielsweise haben wir folgende Effekte beobachtet:
- Die Standard-Schriftartenbibliothek für dompdf ist relativ klein und bietet nur eine schwache Unterstützung für nicht-lateinische Alphabete. Deswegen kann es sein, dass sie nicht mehr genügend Schriftarten unterstützt.
- Die Schriftgröße verändert sich. dompdf vergrößert die Schrift um mindestens zwei Stufen.
- Dadurch verschieben sich bestimmte Textblöcke oder rutschen nach unten, was zu veränderten Umbrüchen und größeren Leerzeilen führt. Im Ergebnis passt der Inhalt nicht mehr auf eine Seite, und es wird auch kein zweites Blatt erstellt. Ergo: Die unteren Textblöcke fehlen in der dompdf-Darstellung.
Um die korrekte Darstellung der Zuwendungsbescheinigungen sicherzustellen, sind daher individuelle Anpassungen an der ZWB-Vorlage erforderlich.
Weiterführende Informationen:
CiviCRM PSA: https://civicrm.org/advisory/civi-psa-2024-01-wkhtmltopdf-eol
wkthmltopdf: https://wkhtmltopdf.org/
dompdf: https://dompdf.github.io/