În biblioteca JavaScript xml-crypto, folosită ca dependență de 402 proiecte și descărcată din catalogul NPM de aproximativ un milion de ori pe săptămână, a fost descoperită o vulnerabilitate (CVE-2024-32962) care a primit cel mai ridicat nivel de gravitate (10 din 10). Biblioteca oferă funcții pentru criptarea și verificarea semnăturilor digitale ale documentelor XML. Vulnerabilitatea permite unui atacator să ateste un document fals, care, în configurația implicită, va fi verificat cu succes de bibliotecă, deși este semnat cu o cheie diferită de cea specificată pentru verificarea semnăturilor. Problema se manifestă începând cu versiunea xml-crypto 4.0.0 și a fost remediată fără prea multă publicitate în lansarea din ianuarie 6.0.0.
Vulnerabilitatea este cauzată de faptul că, în configurația implicită, biblioteca nu autorizează creatorul semnăturii, ci verifică doar corectitudinea semnăturii în sine. În special, biblioteca acordă încredere oricărui certificat plasat în documentul semnat în elementul XML KeyInfo, chiar dacă în setările este specificat utilizarea unui certificat anume pentru verificarea semnăturilor digitale. Astfel, pentru a verifica cu succes un document modificat, atacatorului îi este suficient să înlocuiească semnătura digitală originală cu o semnătură generată cu cheia sa privată și să plaseze certificatul asociat acestei chei private (cheia publică) în elementul KeyInfo.
Sursa: opennet.ro
