No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Gestionar la seguridad en proyectos con NPM

11/15
Recursos

La seguridad de tu proyecto puede ser vulnerada por paquetes desactualizados, ya que estas inseguridades son resueltas en versiones minor o patch. Al momento de instalar tus paquetes con el comando npm install puede mostrar advertencias (NPM WARN) de las dependencias desactualizadas.

Auditar tus dependencias

El comando npm audit muestra una descripción de las dependencias instaladas, si se encuentran vulnerabilidades, se calculará el impacto al proyecto.

El comando npm audit fix proporciona una actualización de los paquetes, similar al comando npm update <paquete>. Si se requiere un informe más detallado en formato JSON, utiliza el comando npm audit --json.

Contribución creada con aportes de: Andrés Guano.

Aportes 43

Preguntas 17

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Sería recomendable primero intentar solucionar con npm audit fix y lo que no se solucione lo actualizamos de a uno?

Podemos revisar las vulnerabilidades de nuestro proyecto con:
npm audit
En caso de tener vulverabilidades, se recomienda usar el comando:
npm audit fix
Y en caso de que esto no lo solucione, podemos ir actualizandolos de uno en uno.

<h3>Seguridad</h3>
  • npm audit para ver las vulnerabilidades que tenemos en nuestro proyecto
  • npm audit --json nos genera un json con información un poco mas detallada de lo que esta pasando con estos paquetes que instalamos
  • una ves sepamos cual es la vulnerabilidad podemos proceder a actualizar cualquiera de los paquetes ejem: npm update eslint-utils --depth 2 esto para instalar todas sus dependencias
  • nom audit fix es para solucionar las vulnerabilidades que tengamos en nuestro proyecto básicamente, actualiza a la ultima version nuestros paquetes con las dependencias que requieren, después de esto volvemos a correr npm audit para ver que ya no tenemos vulnerabilidades.
  • también hay una herramienta que garantiza que estemos siempre actualizados con nuestras dependencias del proyecto y es snyk.io

Pienso que hay que tener mucho cuidado con el comando npm audit fix, ya que todo depende del proyecto en el que estemos trabajando, ya que como hemos visto en el trayecto del curso, pueda que estemos trabajando con algunas dependencias en específico y este comando podría actualizarlas, creería yo, no lo se rick

Genial, algo curioso es que si tienes un proyecto en GitHub, hay una cosa llamada DependaBot que igual busca estas vulnerabilidades en tus paquetes y te hace un pull request solucionándolas, aunque no se qué tan parecido sea a npm audit 🤔

Para **Generar un Archivo de Texto ** con la auditoria generada por formato en JSON, ejecutar el comando

npm audit --json  > auditoria.txt

Al día de hoy:

found 410 vulnerabilities (398 low, 3 moderate, 8 high, 1 critical)

De primera se ve muy denso npm…

Para poder generar un documento json, donde está la información
un poco más detallada de qué está pasando con nuestros paquetes.

npm audit --json

Seguridad

Cuando estemos trabajando se debe garantizar que todos nuestro proyectos no incluyan código malicioso y cuando se este trabajando todo este acorde a las normas del team.

Npm nos ofrece una herramienta en la que audita los paquetes instalados y determina cuales pueden ser un riesgo:

  • Nos muestra los paquetes desactualizados o que pueden tener un error o vulnerabilidad.
npm audit
  • Genera un archivo .json con la información mas detallada.
npm audit --json 
  • Nos ayuda a reparar todos los error que puede tener o todas las vulnerabilidades.
npm audit fix

Buenas practicas

Antes de auditar nuestro paquetes, podemos actualizarlos para minimizar los riesgos.

Para paquetes globales npm audit no funciona.
Investigando conseguí la siguiente solución
npm install -g npm-check-updates
Que lo que hace es actualizar las dependencias globales, verificando que estén en su última versión, y manejando las vulnerabilidades

Pueden echar un vistazo a herramientas open source como AuditJS que fue diseñada para asegurarse de que sus dependencias (y todas las dependencias de sus dependencias hasta el final) estén libres de vulnerabilidades de seguridad.
En este post pueden encontrar más información y resolver sus dudas:

Si queremos ver esto fuera de la terminal podemos crear un archivo txt o preferiblemente un archivo json:

npm audit --json > audit.json

Tambien podemos abrir ese archivo que hemos generado, de una sola vez en nuestro editor de codigo:

npm audit --json > audit.json && code audit.json

La importancia de la seguridad en nuestro poryecto es por nuestra parte. No debe de incluir ningun software malisioso.

Cuando descargamos algo tenemos que analizar lo que contiene, NPM nos ayuda con una herramienta para hacer esto. Con el ya visto:

npm installl

Nos marcara y actualizara todos los paquetes para verificar que todo este instalado correctamente. Pero tenemos otro comando para poder auditar nuestro proyecto con:

npm audit

Donde podremos ver las vulnerabilidades que tendremos en nuestros paquetes.

Podemos generar un documento JSON con las informacion de esta auditoria mas detallada con:

npm audit --json

Para poder instalar o darle un update a una dependecia que tiene un problema critico podemos utilizar

npm update Paquete --depth 2

Donde actualizara los paquetes para solucionar estas vulnerabilidades. Para poder solucionar TODOS LOS DETALLES sera con:

npm audit fix

Esto solucionara las mayoria de las vulnerabilidades.

Entonces si el comando npm audit fix no soluciona los problemas, debo actualizar cada paquete manualmente.

Me genera confusión el hecho de que el profesor en los primeros temas diga que cuando trabajamos con nuestro proyecto, puede que requiramos de una determinada versión, pero al mismo tiempo si no la actualizo, me puede generar vulnerabilidad, entonces siempre es mejor trabajar con todo actualizado.

Por otro lado, hay un control de seguimientos con el lock, y si colocamos el signo ^ o ~ solo permitiremos cambios en determinados aspectos, sin embargo, al final todo depende de la vulnerabilidad o no.

Es decir, no importa si yo quiero trabajar con determinada versión, o si voy a permitir cambios o no, si hay vulnerabilidad, tengo que actualizar (hasta ahora es la única forma para solucionar, update o fix)

Es importante que manejemos la seguridad de los proyectos, garantizar que no hayan software maliciosos y que todo esté acorde a las normas del equipo de trabajo.

Analizar el proyecto

Cuando descargamos un proyecto de internet o estamos inicializando un nuevo proyecto, debemos analizarlo. Al usar el comando npm install nos muestra en consola si algunos paquetes de este proyecto no están actualizados o tienen vulnerabilidades.

Pero, si no nos muestra nada no significa que no hayan vulnerabilidades. También NPM incluye una herramienta que nos permite analizar que paquetes están instalados, cuales son vulnerables y si alguno de ellos deben ser actualizados:

  • Nos permite hacer una “auditoría” del proyecto y podremos ver los paquetes que estén desactualizados o contengan vulnerabilidades.
npm audit
  • Genera un output en formato JSON con la información más detallada de este proceso de “auditoría” de nuestro proyecto.
npm audit --json 
  • Garantiza que todos los paquetes sean actualizados y que todas sus vulnerabilidades sean corregidas. (También actualizará aquellos paquetes que estamos trabajando con una versión en específico, por lo que hay que tener cuidado).
npm audit fix 
  • Para poder actualizar un paquete en específico que contenga un problema crítico podemos utilizar
npm update <paquete> --depth 2 

Hay un proyecto que como desarrolladores nos sirve para que podamos tener siempre estas vulnerabilidades corregidas y las dependencias actualizadas.

Snyk | Developer security | Develop fast. Stay secure.

y si npm update <patequete> --depth 2 no me funciona?

Seguridad

Al momento de instalar todas las dependencias de un proyecto que obtenemos externamente, nos encontraremos con problemas que no son visibles, para ver estos problemas tenemos que usar el comando:

npm audit

Si nos encontramos con algunos errores el siguiente comando puede resolver varios de ellos:

npm audit fix

En caso de que exista una dependencia que no se resolvió con el comando mencionado anteriormente se puede actualizar manualmente con el comando:

npm update <dependencia> --depth 2

También podemos trackear nuestras dependencias con el proyecto snyk.

Mmmm… a mi en un proyecto de webpack me manda errores por seguridad y me dice que para arreglarlos me regrese a una versión anterior del paquete (Se hace solo con audit fix --force) y ya con la versión vieja me da error que esa también y me pelotea entre una y otra versión 😕

la parte de auditar las dependencias deberia formar parte de nuestro pipeline de CI/CD para no dejar pasar vulnerabilidades en producion

al aplicar npm audit fix, me dice que tengo 0 vulnerabilidades

pero al aplicar npm audit

permanecen aún 3 vulnerabilidades bajas

Aplico como indica npm audit fix, lo hice varias oportunidades y persiste las 3 vulnerabilidades.

Por lo que hay que aplicar un npm update y me indica que tengo 0 vulnerabilidades.

Pero para verificar si realmente reparó las vulnerabilidades aplico nuevamente npm audit, y voalá ya no tengo las vulnerabilidades, todas reparadas.

Entendido
Revisar si es necesario actualizar los paquetes o que contengan vulnerabilidades.

npm audit
------- resultado
found 6 low severity vulnerabilities in 1310 scanned packages
  6 vulnerabilities require manual review. See the full report for details.
npm audit --json  // Genera el resultado en json

npm update eslint-util --depth 2  // El nivel de detalle que necesita la actualización hasta las dependencias

Muy bien, va a ser de gran utilidad el comando npm audit para detectar vulnerabilidades de las dependencias que usemos en los proyectos y saber que podemos realizar para solucionarlas.

npm audit - permite auditar el proyecto y ver si tenemos algún cambio que afecte nuestro proyecto

npm audit --json - genera un archivo .json donde se encuentra la información más detallada de los paquetes

npm audit fix - garantiza que todos loas detalles del proyecto puedan será actualizados a la última versión

Supongo que una opción para verificar si actualizando las dependencias nuestro proyecto sigue trabajando igual, sería, por ejemplo, llevarlo a una rama nueva, hacer eso y comprobar su funcionamiento, si todo va bien, podemos hacer los cambios pertinentes, y en caso de que no, seguir con la versión del paquete o paquetes que usamos.

Ahora bien, supongamos que tenemos un problema de seguridad de un paquete, pero si actualizamos nuestro proyecto no funciona como debería, en este caso supongo que la solución sería corregir el código para que al actualizar el paquete ya funcione bien, antes que dejarlo con una versión insegura, ¿verdad?

Gracias.

Que clase tan más valiosa!!!😮😎😁😉👌

Me acabo de dar cuenta que Laravel lo usa y justo llevo un proyecto el cual lo utiliza,pero como vivía en la edad de piedra, pues instalaba todo a mano.

found 0 vulnerabilities

Parece que --depth ya no es una option disponible. 👇

https://github.com/npm/rfcs/blob/main/implemented/0019-remove-update-depth-option.md

En react hay un montón de fallos con audit y al correr audit fix aparecen aun mas fallos, les ha pasado?

Buena! Esta parte es muy importante ya que en todos los equipos, la mayoría de los integrantes le toman poca atención a estos detalles que mas adelante podrían causar severos problemas en la aplicación.

Pregunta de examen:
¿Cuál es el comando que nos permite ver una auditoría en formato json?

Seguridad

1. npm audit

Permite ver los paquetes que tienen vulnerabilidades.

2. npm audit --json

Estructura la información de los paquetes con vulnerabilidades y más información.

	3. npm update <package>-utils --depth 2

Actualiza el paquete que mostró vulnerabilidades.

4. npm audit fix --force

Arregla los problemas de los paquete que se encuentran con vulnerabilidades.

Aplicación que permite verificar el estado de los paquetes

Para saber las vulnerabilidades de nuestro proyecto lo ideal es usar

npm audit. //  Este comando nos mostrara las vulnerabilidades desde "moderadas" hasta "Críticas"

También tenemos

npm audit --json // este genera un archivo .json para mostrar los datos del npm audit

Sí notamos vulnerabilidades criticas debemos usar:

npm update "Nombre del paquete" 

Así actualizaremos únicamente un paquete.
Para actualizar todos los paquetes usamos:

npm audit fix

Este actualizara todos los paquetes que presenten algún problema.

Interesante clase. Lo aprendido actualizar cada paquete manualmente si el comando npm audit fix no resuelve la vulnerabilidad. Todo depende del proyecto

npm audit
npm audit fix

buen explicado

Vamos!!

Revisa todo nuestro proyecto en busca de vulnerabilidades

Repara vulnerabilidades de los paquetes de nuestro proyecto

Increíble

ver vulnerabilidad: npm audit
autualizar paquetes vulnerables: npm name-pack --depth 2