Eine bedeutende Sicherheitslücke, gekennzeichnet als CVE-2024-37629, wurde in der Version 0.8.18 von SummerNote entdeckt. Sie ermöglicht Cross-Site Scripting (XSS) über die Codeansicht-Funktion. SummerNote ist eine JavaScript-Bibliothek, die beim Erstellen von WYSIWYG-Editoren online hilft.

Ein Angreifer kann durch eine Technik, bekannt als Cross-Site Scripting (XSS), schädliche ausführbare Skripte in den Code einer vertrauenswürdigen Anwendung oder Webseite einfügen. Ein XSS-Angriff wird oft durch einen Angreifer initiiert, der einen Benutzer dazu verleitet, auf einen von ihm gelieferten bösartigen Link zu klicken.

Aufdeckung der XSS-Schwachstelle im Editor 

Angesichts früherer Schwachstellen, die mit anderen Editoren wie CKEditor und TinyMCE verbunden sind und die für ähnliche XSS-Probleme bekannt sind, entschied sich der Sicherheitsforscher Sergio Medeiros, den WYSIWYG-Editor selbst zu untersuchen. Dies führte ihn zur SummerNote-Website, auf der die Funktionen ihres WYSIWYG-Editors direkt auf der Startseite eingesehen werden können.

Benutzer können ihre Eingaben mit HTML-Elementen gestalten, während sie die Codeansicht-Funktion des Editors testen. Der Forscher entschied sich, folgende XSS-Zeichenkette einzugeben, um zu beobachten, wie der Editor mit „bösartigen“ Eingaben umgeht:

„Nachdem ich meine Zeichenkette eingestellt hatte, klickte ich auf den </> Knopf, um die Codeansicht-Funktion zu deaktivieren und zu sehen, ob der Editor meine Zeichenkette verarbeitete und ausführte. Zu meiner Überraschung erhielt ich ein Alert-Fenster, das bestätigte, dass die XSS-Zeichenkette und der Vektor gültig waren!“, sagte der Forscher.

Da die Codeansicht-Funktion nicht bereinigt wird, war es möglich, bösartige XSS-Zeichenketten einzuschleusen, um schädlichen JavaScript-Code auszuführen, sobald diese das DOM erreichten.

Laut dieser Analyse verwenden über 10.000 webbasierte Anwendungen diesen WYSIWYG-Editor. Da der Summernote-Editor das Formatieren von Benutzereingaben handhabt, sind einige Benutzer ständig anfällig für systemische, persistente XSS-Probleme innerhalb der Webanwendung.

Dies sollte angehenden Hackern zeigen, dass es manchmal besser ist, die Dinge einfach zu halten, wenn es um „Payload-Erstellung und -Ausnutzung“ geht.