Il vantaggio è di chi legge l'elenco per primo
C'è un paradosso nella sicurezza delle dipendenze: rendere pubblica una falla insieme alla correzione serve a proteggere, ma nell'intervallo fra la pubblicazione e il vostro aggiornamento il vantaggio è di chi attacca. Lui non deve scoprire nulla: apre il database delle vulnerabilità note, vede che una certa libreria in una certa versione ha un buco, e cerca in rete tutti i siti che usano ancora quella versione. Voi, per stare al sicuro, dovete accorgervene e aggiornare prima che tocchi a voi in quella ricerca.
Il controllo, in pratica
- 01
Lanciate il controllo del vostro gestore di pacchetti
Nell'ecosistema JavaScript è «npm audit»; altri linguaggi hanno l'equivalente. Confronta le vostre dipendenze con i database delle falle note e vi dice quali sono coinvolte.
- 02
Leggete gravità e versione che corregge
Per ogni falla il report indica quanto è grave e in quale versione è risolta. È la vostra lista di aggiornamenti, già ordinata per urgenza.
- 03
Aggiornate, ma con una rete
Aggiornare una libreria può cambiarne il comportamento: fatelo avendo dei test o un ambiente di prova, così un aggiornamento di sicurezza non ne rompe il funzionamento.
- 04
Automatizzatelo
Il vero valore è ripeterlo da solo: esistono strumenti che eseguono il controllo a ogni modifica e vi avvisano quando esce una falla nuova su una libreria che usate. È così che il lavoro continuo smette di dipendere dalla memoria.
Le trappole da conoscere
- Le dipendenze delle dipendenze: una libreria che usate ne usa altre, e la falla è spesso in una di quelle indirette, che non avete scelto voi ma che è comunque nel vostro sistema.
- L'aggiornamento che rompe: la paura di rompere qualcosa è il motivo più comune per cui non si aggiorna. Si supera con i test, non rimandando.
- La libreria abbandonata: se chi la manteneva non la aggiorna più, la prossima falla non verrà mai corretta. Va sostituita, ed è meglio saperlo prima.
- Il falso allarme: non ogni falla segnalata è sfruttabile nel vostro caso. Valutarlo richiede giudizio, ma il punto di partenza resta vedere l'elenco.