In der JavaScript-Bibliothek xml-crypto, die als Abhängigkeit in 402 Projekten verwendet wird und wöchentlich etwa eine Million Mal aus dem NPM-Verzeichnis heruntergeladen wird, wurde eine Schwachstelle (CVE-2024-32962) entdeckt, die als hochgefährlich eingestuft wird (10 von 10). Die Bibliothek bietet Funktionen zum Verschlüsseln und Überprüfen von digitalen Signaturen von XML-Dokumenten. 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 Überprüfung der Signaturen angegebenen Schlüssel signiert ist. Das Problem tritt ab Version xml-crypto 4.0.0 auf und wurde ohne großes Aufsehen in der Januar-Version 6.0.0 behoben.
Die Schwachstelle entsteht daraus, dass die Bibliothek in der Standardkonfiguration den Ersteller der Signatur nicht authentifiziert, sondern nur die Korrektheit der Signatur selbst prüft. Insbesondere vertraut die Bibliothek jedem Zertifikat, das im signierten Dokument im XML-Element KeyInfo platziert ist, selbst wenn in den Einstellungen die Verwendung eines bestimmten Zertifikats zur Überprüfung digitaler Signaturen angegeben ist. Somit reicht es für einen Angreifer aus, die originale digitale Signatur durch eine Signatur, die mit seinem privaten Schlüssel erstellt wurde, zu ersetzen und das zugehörige Zertifikat (öffentlicher Schlüssel) im Element KeyInfo zu platzieren, um eine modifizierte Dokumentenverifizierung erfolgreich durchzuführen.
Quelle: opennet.ru
