In der JavaScript-Bibliothek xml-crypto, die in 402 Projekten als Abhängigkeit verwendet wird und wöchentlich etwa eine Million Mal aus dem NPM-Verzeichnis heruntergeladen wird, wurde eine Schwachstelle (CVE-2024-32962) entdeckt, die den höchsten Gefahrenlevel (10 von 10) erhalten hat. Die Bibliothek bietet Funktionen zum Verschlüsseln und Verifizieren von XML-Dokumenten anhand digitaler Signaturen. Die Schwachstelle ermöglicht es einem Angreifer, ein gefälschtes Dokument zu signieren, das in der Standardkonfiguration erfolgreich von der Bibliothek verifiziert wird, obwohl es nicht mit dem für die Signaturprüfung angegebenen Schlüssel signiert ist. Das Problem tritt ab der Version xml-crypto 4.0.0 auf und wurde ohne große Öffentlichkeitsarbeit in der Januarausgabe 6.0.0 behoben.
Die Schwachstelle resultiert daraus, dass die Bibliothek in der Standardkonfiguration den Ersteller der Signatur nicht autorisiert, sondern nur die Korrektheit der Signatur selbst überprüft. Insbesondere vertraut die Bibliothek jedem Zertifikat, das im signierten Dokument im XML-Element KeyInfo abgelegt ist, selbst wenn in den Einstellungen die Verwendung eines bestimmten Zertifikats zur Überprüfung digitaler Signaturen angegeben ist. Daher reicht es für einen Angreifer aus, die originale digitale Signatur durch eine Signatur zu ersetzen, die mit seinem privaten Schlüssel erstellt wurde, und das damit verbundene Zertifikat (öffentlicher Schlüssel) im Element KeyInfo abzulegen, um eine modifizierte Dokumentenverifizierung erfolgreich durchzuführen.
Quelle: opennet.ru
