El manejo de dependencias mediante paquetes NPM puede presentar riesgos de seguridad, especialmente si se utilizan versiones inseguras o maliciosas. Para reducir estos peligros, existen varias estrategias que pueden implementarse sin alterar significativamente el ecosistema actual.
Utilizar pnpm
El uso de pnpm puede mejorar la seguridad y eficiencia en la gestión de dependencias. Este gestor es más rápido, ocupa menos espacio y bloquea los scripts post-instalación por defecto. La mayoría de estos scripts son inútiles o sospechosos. Al instalar paquetes en el proyecto por primera vez, pnpm indica qué scripts posteriores a la instalación se omitieron y cómo incluir solo aquellos que sean necesarios.
Además, se puede introducir un retraso en las nuevas versiones al actualizar los paquetes mediante la configuración de minimumReleaseAge. Combinado con el comando pnpm audit, este método puede reemplazar la necesidad de configurar un bot de revisión de dependencias, sin depender de servicios adicionales.
Aislar los gestores de paquetes en Linux
En sistemas Linux, se recomienda aislar los gestores de paquetes utilizando Bubblewrap, un entorno de pruebas ligero que bloquea el acceso a casi todo el sistema, incluyendo archivos sensibles. Este método impide que cualquier aplicación ejecutada bajo él escalara privilegios.
El uso de Bubblewrap permite aislar herramientas como NPM o Yarn del resto del sistema. Esto limita el acceso al sistema de archivos y mejora la seguridad general del entorno.
Configurar bots para gestionar actualizaciones
Se sugiere configurar un bot como Renovate o uno similar, que introduzca retrasos artificiales en la cadena de suministro y acelere la solución de vulnerabilidades conocidas públicamente. Es importante rastrear las dependencias para evitar que se olvide este proceso.
Escaneo de repositorios
Se recomienda escanear los repositorios con NPM-Malware-Scanner, una herramienta de línea de comandos que analiza repositorios de GitHub, archivos locales y carpetas en busca de paquetes NPM maliciosos o sospechosos. El escáner utiliza una base de datos completa de malware para identificar dependencias potencialmente dañinas.
También se sugiere utilizar TruffleHog, una herramienta que permite descubrir, clasificar y analizar secretos en repositorios. Los secretos incluyen credenciales utilizadas para autenticarse ante otras máquinas, como claves API o contraseñas de bases de datos.
Medidas adicionales
Para quienes son realmente paranoicos o trabajan con objetivos muy «atractivos», se sugiere guardar el trabajo en una máquina virtual, manteniendo los secretos fuera de ella. Se puede utilizar una máquina virtual por proyecto para mayor seguridad.