Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

274
Visualizações
¿Puede NPM mostrarme la antigüedad de los paquetes antes de instalarlos?

A la luz del malware reciente en los paquetes npm existentes, me gustaría tener un mecanismo que me permita realizar algunas comprobaciones básicas antes de instalar nuevos paquetes o actualizar los existentes. Mi principal problema son los paquetes que instalo directamente y también los que instalo indirectamente.

En general, quiero obtener una lista de la versión del paquete que npm instalaría antes de instalarlo. Más específicamente, quiero la antigüedad de los paquetes que se instalarían, para poder generar una advertencia si alguno de ellos tiene menos de un día.

Si pudiera hacer eso directamente con npm, sería genial, pero me temo que necesito hacer algunas secuencias de comandos al respecto.

caso de uso específico:

Si npm install react-native-gesture-handler el 2021-10-22, habría ejecutado el gancho posterior a la instalación de una versión maliciosa de ua-parser y mi computadora se habría visto comprometida, que es algo que me gustaría evitar.

Cuando ingreso npm install react-native-gesture-handler --dry-run , solo me dice qué versión de react-native-gesture-handler habría instalado, pero no me dice que instalaría una versión de ua-parser que se lanzó ese día.

Notas adicionales:

  • Sé que npm i --dry-run , pero solo muestra los paquetes directos.
  • Sé que existe la npm list , pero solo muestra paquetes después de la instalación (y, por lo tanto, después de que los ganchos de instalación ya hayan hecho daño)
  • ambos solo muestran la versión de los paquetes y no su edad
  • No sé cómo obtendría una lista de paquetes que vendrían con un gancho de instalación antes de instalarlos
  • Se agradecen sugerencias sobre formas alternativas de lidiar con paquetes npm maliciosos.
  • hasta ahora, mi mejor solución sería hacer "--ignorar-scripts", pero eso vendría con su propio conjunto de problemas
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Primero instale los paquetes de forma segura, luego use npm list npm view para obtener la antigüedad de los paquetes de instalación.

Opción 1: instalar con --ignore-scripts

 npm i --ignore-scripts npm list --depth=100 | awk '{ print $NF }'| tail -n +2 | grep -v "deduped" | xargs -I {} bash -c "npm view {} time.modified _id|tr '\n' ' ' && echo "|sort

Opción 2: instalar en docker

 docker run -v $PWD/package.json:/a/package.json -v $PWD/package-lock.json:/a/package-lock.json --rm -it node:lts-buster bash cd a && npm i npm list --depth=100 | awk '{ print $NF }'| tail -n +2 | grep -v "deduped" | xargs -I {} bash -c "npm view {} time.modified _id|tr '\n' ' ' && echo "|sort

explicación del script, que imprime las fechas:

  • npm list --depth=100 obtener una lista de paquetes instalados
  • | awk '{ print $NF }' extrae el id del paquete de cada línea
  • | tail -n +2 coloca la primera línea, que se refiere a la carpeta actual
  • | grep -v "deduped" elimina líneas que se refieren a duplicados
  • | xargs -I {} bash -c para cada subcapa abierta de línea
  • npm view {} time.modified _id get time y package-id
  • |tr '\n' ' ' && echo elimina el salto de línea entre la hora y el id, y agrega el salto de línea al final
  • |sort ordenar líneas alfabéticamente

nota: dado npm view obtiene 1 paquete a la vez a través de la red, la secuencia de comandos tarda aproximadamente 1 s por paquete instalado, lo que sumará un par de minutos para proyectos de tamaño mediano.

over 4 years ago · Santiago Trujillo Relatório

0

Para descubrir el paquete malicioso, necesitará un script que verifique si su paquete tiene vulnerabilidades contra la base de datos nacional de vulnerabilidades .

La base de datos nacional de vulnerabilidades incluye bases de datos de referencias de listas de verificación de seguridad, fallas de software relacionadas con la seguridad, configuraciones incorrectas, nombres de productos y métricas de impacto.

La mayoría de las empresas de software utilizan herramientas de seguridad de aplicaciones como Veracode , Snyk o Checkmarx que, por lo general, lo hacen en una etapa antes de la implementación en la canalización de CICD.

Si está buscando lograr esto localmente, puede probar

 npm audit

Pero esto auditará las dependencias instaladas y también sus subdependencias en su proyecto contra el registro predeterminado ( nexus o artefacto o registro npm ) y obtendrá la lista de vulnerabilidades conocidas con los detalles de la versión en la que está disponible el parche.

npm view le proporcionará los siguientes detalles sobre el paquete, incluso cuando no esté instalado .

ingrese la descripción de la imagen aquí

las comprobaciones de versión antes de la instalación necesitarían una secuencia de comandos para hacer lo necesario en la preinstalación, sugeriría tener un proyecto dedicado para las comprobaciones de seguridad (reutilizable para todos los proyectos), y link o publish y luego configurarlo en las secuencias de comandos de su proyecto como se muestra a continuación,

Proyecto de seguridad:

Esto tendrá la secuencia de comandos para verificar vulnerabilidades, aprovechar npm view npm version y auditar el módulo y luego devolver los resultados.

Proyecto principal:

Aquí configure los scripts en package.json para usar el proyecto publicado anteriormente y verifique las vulnerabilidades antes de la instalación.

 npx security-project vulnerabilities scripts: { vulnerability: npx security-project vulnerabilities preinstall: npx security-project vulnerabilities or preinstall: "sh ./checkVulnerabilities.sh" // this script can take package name through command line flags like --package axios }

Snyk toma su package.json y escaneará todos los módulos en busca de vulnerabilidades de seguridad. También puede buscar un módulo específico y verificar el puntaje de salud de una versión.

https://snyk.io/advisor/check/npm

Alternativamente, puede usar la extensión Snyk en su IDE para lo mismo.

Tenemos la extensión Chrome RetireJS para escanear la versión vulnerable del módulo JS con vulnerabilidades en la aplicación.

Buena referencia: - 6-herramientas-que-puede-usar-para-verificar-las-vulnerabilidades-en-nodo-js

Arriba están las ideas que se me ocurrieron, espero que ayude.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda