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 鈥渁uditor铆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 鈥渁uditor铆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