Na biblioteca JavaScript xml-crypto, utilizada como dependência em 402 projetos e baixada do diretório NPM cerca de um milhão de vezes por semana, foi identificada uma vulnerabilidade (CVE-2024-32962), que recebeu o nível máximo de gravidade (10 de 10). A biblioteca fornece funções para criptografar e verificar documentos XML por meio de assinatura digital. A vulnerabilidade permite que um atacante assine um documento falso que, na configuração padrão, será verificado com sucesso pela biblioteca, mesmo que tenha sido assinado com uma chave diferente da especificada para verificação de assinaturas. O problema começa a se manifestar a partir da versão xml-crypto 4.0.0 e foi corrigido sem maiores divulgações na versão 6.0.0 lançada em janeiro.
A vulnerabilidade é causada pelo fato de que, na configuração padrão, a biblioteca não autentica o criador da assinatura, mas apenas verifica a correção da própria assinatura. Em particular, a biblioteca confia em qualquer certificado colocado no documento assinado no elemento XML KeyInfo, mesmo que as configurações especifiquem o uso de um certificado específico para a verificação de assinaturas digitais. Assim, para a verificação bem-sucedida de um documento modificado, é suficiente para o atacante substituir a assinatura digital original por uma gerada por sua própria chave privada e colocar o certificado correspondente (chave pública) no elemento KeyInfo.
Fonte: opennet.ru
