W bibliotece xml-crypto w JavaScript, używanej jako zależność w 402 projektach i pobieranej z katalogu NPM około miliona razy co tydzień, zidentyfikowano lukę (CVE-2024-32962) o maksymalnym poziomie zagrożenia (10 na 10). Biblioteka oferuje funkcje do szyfrowania i weryfikacji podpisów cyfrowych dokumentów XML. Luka umożliwia atakującemu podpisanie fałszywego dokumentu, który w domyślnej konfiguracji zostanie pomyślnie zweryfikowany przez bibliotekę, mimo że jest podpisany nie tym kluczem, który jest wskazany do weryfikacji podpisów. Problem występuje od wersji xml-crypto 4.0.0 i został usunięty w styczniowym wydaniu 6.0.0 bez zbędnej reklamy.
Luka jest spowodowana tym, że w domyślnej konfiguracji biblioteka nie autoryzuje twórcy podpisu, a jedynie sprawdza poprawność samego podpisu. W szczególności biblioteka ufa każdemu certyfikatowi umieszczonemu w podpisanym dokumencie w elemencie XML KeyInfo, nawet jeśli w ustawieniach wskazano użycie konkretnego certyfikatu do weryfikacji podpisów cyfrowych. W ten sposób, aby pomyślnie zweryfikować zmodyfikowany dokument, atakującemu wystarczy zastąpić oryginalny podpis cyfrowy podpisem utworzonym jego kluczem prywatnym i umieścić powiązany certyfikat (klucz publiczny) w elemencie KeyInfo.
Źródło: opennet.ru
