Nella libreria JavaScript xml-crypto, utilizzata come dipendenza in 402 progetti e scaricata dal catalogo NPM circa un milione di volte ogni settimana, è stata identificata una vulnerabilità (CVE-2024-32962) con il massimo livello di gravità (10 su 10). La libreria offre funzioni per la crittografia e la verifica della firma digitale dei documenti XML. La vulnerabilità consente a un aggressore di firmare un documento falso, che, con la configurazione predefinita, verrà verificato con successo dalla libreria, nonostante sia firmato con una chiave diversa da quella prevista per la verifica delle firme. Il problema si manifesta a partire dalla versione xml-crypto 4.0.0 ed è stato corretto senza ulteriori commenti nel rilascio di gennaio 6.0.0.
La vulnerabilità è causata dal fatto che nella configurazione predefinita la libreria non autorizza il creatore della firma, verificando solo la correttezza della firma stessa. In particolare, la libreria si fida di qualsiasi certificato incluso nel documento firmato nell'elemento XML KeyInfo, anche se nelle impostazioni è specificato l'uso di un certificato specifico per la verifica delle firme digitali. Pertanto, per la verifica riuscita di un documento modificato, è sufficiente che l'aggressore sostituisca la firma digitale originale con una firma generata dalla propria chiave privata e posizioni il certificato associato a questa chiave privata (chiave pubblica) nell'elemento KeyInfo.
Fonte: opennet.ru
