V JavaScript knihovně xml-crypto, která je závislostí u 402 projektů a stahuje se z adresáře NPM přibližně milionkrát týdně, byla zjištěna zranitelnost (CVE-2024-32962) s nejvyšší úrovní nebezpečnosti (10 z 10). Knihovna poskytuje funkce pro šifrování a verifikaci digitálních podpisů XML dokumentů. Zranitelnost umožňuje útočníkovi podepsat falešný dokument, který bude ve výchozí konfiguraci knihovnou úspěšně verifikován, ačkoliv je podepsán nesprávným klíčem, který je uveden pro kontrolu podpisů. Problém se projevuje od verze xml-crypto 4.0.0 a byl bez zbytečné publicity odstraněn v lednovém vydání 6.0.0.
Zranitelnost je způsobena tím, že ve výchozí konfiguraci knihovna neautorizuje autora podpisu a kontroluje pouze správnost samotného podpisu. Knihovna konkrétně důvěřuje jakémukoli certifikátu umístěnému v podepsaném dokumentu v XML prvku KeyInfo, i když jsou v nastavení uvedeny specifické certifikáty pro ověřování digitálních podpisů. Tím pádem pro úspěšnou verifikaci modifikovaného dokumentu stačí útočníkovi nahradit původní digitální podpis podpisem vytvořeným jeho soukromým klíčem a umístit certifikát (veřejný klíč) související s tímto soukromým klíčem do prvku KeyInfo.
Zdroj: opennet.ru
