L'uso di librerie JavaScript esterne nello sviluppo di siti web è una pratica largamente consolidata negli ultimi anni. Un recente studio mostra però come questa pratica possa compromettere la sicurezza di un progetto se non gestito e mantenuto in modo corretto. Una prassi diffusa è non aggiornare le librerie in uso dopo il rilascio dell'applicazione, verosimilmente per non farsi carico di una serie di problemi di compatibilità a livello di codice, ma di fatto esponendosi a vulnerabilità legate alle librerie stesse.
I rischi
Molte delle risorse comunemente utilizzate possono contenere falle di sicurezza con il rischio che le nostre applicazioni ereditano delle problematiche. Per fare un esempio concreto, e volutamente datato, si potrebbe citare le versioni precedenti alla versione 1.6.3 di jQuery, la libreria più utilizzata, esse infatti sono affette da un falla che può portare ad un attacco XSS (Cross-site scripting).
Le principali problematiche riscontrate riguardano problemi relativi alla validazione, attacchi XSS, cross-site request forgery e session fixation; spesso però il problema dell'uso delle librerie javascript affette da vulnerabilità non ha avuto la dovuta attenzione.
Possibili soluzioni e buone pratiche
Una buona regola è identificare le librerie usate lato client, le relative versioni e le date di rilascio. Verificare la fonte da dove vengono reperite e se si tratta di releaser obsolete oppure che contengono vulnerabilità. Quest'ultimo passaggio potrebbe risultare complesso in quanto non esiste una database centralizzato delle vulnerabilità JavaScript ma diverse fonti eterogenee come l'Open Source Vulnerability Database (OSVDB) e il National Vulnerability Database (NVD).
Una seconda prassi potrebbe essere quella di utilizzare strumenti adeguati per la gestione delle dipendenze come bower o npm, quindi dichiarare le dipendenze in un file di configurazione esterno, ciò garantisce un approccio più rigoroso rispetto al copia-incolla nel proprio codice dei link delle CDN.
Conclusioni
Librerie popolari come jQuery, Bootstrap e Angular ci permettono oggi di creare siti Web altamente interattivi e gradevoli nell'aspetto, ma le vulnerabilità insite in alcune versioni di queste soluzioni aumentano la superficie di attacco. E' quindi molto importante assicurarsi di avere in azione sulle proprie applicazioni solo le versioni recenti o “patched” delle librerie in uso.
Per approfondimenti il paper completo