Securing NPM Packages

Rate this content
Bookmark

Mírame ejecutar malware ofuscado real desde NPM de manera segura mientras revelo lo que hace. 
Aprende cómo es posible y utiliza la tecnología detrás de esto para asegurar tu aplicación contra código malicioso que pasa tus auditorías y detecciones.

Y si la ofuscación no es suficiente, obsérvalo aplicado a una carga útil de malware entregada como bytecode precompilado de V8 sin código fuente proporcionado.

This talk has been presented at JSNation US 2024, check out the latest edition of this JavaScript Conference.

Zbyszek Tenerowicz
Zbyszek Tenerowicz
21 min
21 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Soy Zebe, un desarrollador de JavaScript con un enfoque en seguridad. Hablemos sobre los riesgos de consumir paquetes de NPM, particularmente los maliciosos. Exploramos cómo obtener y ejecutar malware, así como evaluar y analizar malware de JavaScript en Node.js. El malware puede ser entregado como bytecode precompilado, y las defensas involucran herramientas como npm audit. Hardin JavaScript y Lafamote son herramientas de seguridad que protegen aplicaciones y dependencias de JavaScript. Lafamote coloca cada paquete en su propio compartimento y proporciona herramientas para crear políticas de acceso. Previene el robo de cookies y restringe el acceso a globales sensibles. Oferta por tiempo limitado para ayudar a configurar proyectos con Lafamote.
Available in English: Watch Me Run Malware From NPM

1. Introduction to NPM Security

Short description:

Estoy aquí para mostrarte cómo ejecuto malware directamente desde NPM en mi máquina. Soy Zebe, un desarrollador de JavaScript con un enfoque en seguridad. Permíteme comenzar con mi pregunta favorita: ¿pondrías una cadena en tu código sin leerla? Eso es lo que son los paquetes de NPM, entrada no sanitizada de personas aleatorias en línea. Hablemos sobre los riesgos de consumir paquetes de NPM, particularmente los maliciosos.

Hola a todos. Estoy aquí para mostrarte cómo ejecuto malware directamente desde NPM en mi máquina para que tú no tengas que hacerlo. Bueno, esa no es toda la historia, pero no nos adelantemos. ¿Verdad?

Bien. Entonces, ¿quién soy? Hola. Soy Zebe. Si escribes nauter en cualquier cuadro de texto en línea y obtienes algún resultado, probablemente será sobre mí. Me interesa JavaScript. He estado trabajando con Node y JavaScript durante muchos años. Y hace unos años cambié mi enfoque más hacia la seguridad. Ahora estoy trabajando en Labemote, que es el logo en el medio que está protegiendo Metamask, que es el lindo zorro. Y también estoy dirigiendo un grupo de Meetup y conferencias llamado MeetJS.

Bien. Pero esta presentación va a ser una toma bastante caótica sobre algunas cosas de seguridad que quizás no conozcas aún. Y me gusta compararla con la charla TED de Clifford Stahl. Si no la has visto, te la recomiendo. Clifford Stahl es el primer respondedor de incidentes en seguridad, en seguridad informática en general, antes de que se llamara seguridad informática y respuesta a incidentes. Una historia muy interesante. De todos modos, me desvío.

Así que, permíteme comenzar con mi pregunta favorita. ¿Tomarías una cadena de mí y sin leerla, la pondrías en tu código fuente que luego compilas y envías a producción en tu aplicación web? Ya sea del lado del servidor, del lado del cliente, lo que sea. ¿Lo harías? Bien. Ahora, ¿te ayudaría a convencerte de hacerlo si la pongo en un archivo tar.gz? Bueno, eso es exactamente lo que son los paquetes de NPM. Y no me malinterpretes, son gloriosos. Los amamos. Pero al mismo tiempo, son solo entrada no sanitizada de personas aleatorias en línea que pones en tu aplicación y ejecutas en producción sin leer, ¿verdad? Así que sí, sería genial consumir paquetes de NPM de la manera en que lo hacemos. Me gusta consumir paquetes de NPM, pero ¿y si algunos de ellos no son geniales, verdad? Y no me refiero a paquetes mediocres. He publicado una buena cantidad de paquetes mediocres y no pasó nada malo. Pero me refiero a paquetes maliciosos.

2. Exploring and Running Malware

Short description:

Estaba interesado en la seguridad de la cadena de suministro y desarrollé NPM Audit Resolver. Luego me centré en defenderme contra paquetes maliciosos que se convierten en parte de la aplicación. Vamos a explorar cómo obtener malware y verme ejecutar malware real en mi laboratorio.

No voy a hacer un resumen de noticias sobre paquetes maliciosos. Ya has visto todo eso.

Bien. Entonces, ¿cómo llegué aquí? Bueno, estuve interesado en la seguridad de la cadena de suministro por un tiempo. Comencé donde todos comienzan, dependencias vulnerables, escaneando dependencias vulnerables, y luego notando que es demasiado tedioso responder a todo eso. Así que necesito una forma estructurada de ignorarlas y demás. Y así fue como se creó NPM Audit Resolver. Luego cambié mi enfoque a los scripts de instalación maliciosos. Y hay un montón de herramientas que exploré y un montón de trucos que puedes ver en mis presentaciones anteriores. Y luego me centré en defenderme de paquetes maliciosos que realmente se convierten en parte de la aplicación después de que todas las defensas anteriores ya fallaron. Y de esto vamos a hablar hoy. Otra versión de eso.

Y también hubo una masterclass de codificación defensiva a la que posiblemente puedas asistir en alguna otra ocasión en el futuro. Y esas charlas y todo están disponibles en mi sitio web. Pero te prometí que iba a ejecutar malware, ¿verdad? Así que centrémonos en eso. Entonces primero, ¿dónde conseguimos malware? Si quieres obtener malware, rara vez puedes descargar este malware directamente desde NPM a sabiendas, porque antes de que supieras que el paquete era malicioso, NPM probablemente ya lo eliminó. Así que si quieres explorar un paquete malicioso, puedes ir a Socket Dev, donde tienen un explorador de contenido de paquetes en el sitio web. Y no eliminan versiones antiguas. Así que puedes mirar el contenido del paquete y descargar partes, que es lo que hice. Vale la pena mencionar, el paquete en cuestión estaba ofuscado. Y la historia es, intenté ofuscarlo manualmente, porque encuentro cosas raras divertidas. Pero tenía cuatro capas de ofuscación y todo. En algún momento, simplemente pensé, estoy trabajando en algo que puede proteger mi código en tiempo de ejecución. ¿Por qué no uso eso en lugar de ofuscar el código? Y eso es lo que hice.

Así que ahora, pasemos a verme ejecutar malware real, ¿de acuerdo? Voy a omitir la configuración. Este es mi laboratorio. Es un proyecto experimental de juguete. Y aquí en el lado izquierdo, puedes ver que el archivo de malware no es muy legible. Y es bastante largo, como ves en la miniatura. Y ahora si ejecuto LavaLab, solo un terminal, lo ejecuto en la muestra de malware de LoffyGang.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
El estado de la autenticación sin contraseña en la web
JSNation 2023JSNation 2023
30 min
El estado de la autenticación sin contraseña en la web
Passwords are terrible and easily hacked, with most people not using password managers. The credential management API and autocomplete attribute can improve user experience and security. Two-factor authentication enhances security but regresses user experience. Passkeys offer a seamless and secure login experience, but browser support may be limited. Recommendations include detecting Passkey support and offering fallbacks to passwords and two-factor authentication.
5 Formas en las que Podrías Haber Hackeado Node.js
JSNation 2023JSNation 2023
22 min
5 Formas en las que Podrías Haber Hackeado Node.js
Top Content
The Node.js security team is responsible for addressing vulnerabilities and receives reports through HackerOne. The Talk discusses various hacking techniques, including DLL injections and DNS rebinding attacks. It also highlights Node.js security vulnerabilities such as HTTP request smuggling and certification validation. The importance of using HTTP proxy tunneling and the experimental permission model in Node.js 20 is emphasized. NearForm, a company specializing in Node.js, offers services for scaling and improving security.
Política de Seguridad de Contenido con Next.js: Mejorando la Seguridad de tu Sitio Web
React Summit US 2023React Summit US 2023
9 min
Política de Seguridad de Contenido con Next.js: Mejorando la Seguridad de tu Sitio Web
Top Content
Lucas Estevão, a Principal UI Engineer and Technical Manager at Avenue Code, discusses how to implement Content Security Policy (CSP) with Next.js to enhance website security. He explains that CSP is a security layer that protects against cross-site scripting and data injection attacks by restricting browser functionality. The talk covers adding CSP to an XJS application using meta tags or headers, and demonstrates the use of the 'nonce' attribute for allowing inline scripts securely. Estevão also highlights the importance of using content security reports to identify and improve application security.
Permíteme mostrarte cómo las aplicaciones de React son hackeadas en el mundo real
React Advanced 2021React Advanced 2021
22 min
Permíteme mostrarte cómo las aplicaciones de React son hackeadas en el mundo real
Top Content
React's default security against XSS vulnerabilities, exploring and fixing XSS vulnerabilities in React, exploring control characters and security issues, exploring an alternative solution for JSON parsing, and exploring JSON input and third-party dependencies.

Workshops on related topic

Masterclass Práctica: Introducción a Pentesting para Aplicaciones Web / APIs Web
JSNation US 2024JSNation US 2024
148 min
Masterclass Práctica: Introducción a Pentesting para Aplicaciones Web / APIs Web
Featured Workshop
Gregor Biswanger
Gregor Biswanger
En esta masterclass práctica, estarás equipado con las herramientas para probar efectivamente la seguridad de las aplicaciones web. Este curso está diseñado tanto para principiantes como para aquellos que ya están familiarizados con las pruebas de seguridad de aplicaciones web y desean ampliar su conocimiento. En un mundo donde los sitios web juegan un papel cada vez más central, asegurar la seguridad de estas tecnologías es crucial. Comprender la perspectiva del atacante y conocer los mecanismos de defensa apropiados se han convertido en habilidades esenciales para los profesionales de TI.Esta masterclass, dirigida por el renombrado entrenador Gregor Biswanger, te guiará a través del uso de herramientas de pentesting estándar de la industria como Burp Suite, OWASP ZAP y el marco profesional de pentesting Metasploit. Aprenderás a identificar y explotar vulnerabilidades comunes en aplicaciones web. A través de ejercicios prácticos y desafíos, podrás poner en práctica tu conocimiento teórico y expandirlo. En este curso, adquirirás las habilidades fundamentales necesarias para proteger tus sitios web de ataques y mejorar la seguridad de tus sistemas.
De 0 a Autenticación en una hora con ReactJS
React Summit 2023React Summit 2023
56 min
De 0 a Autenticación en una hora con ReactJS
WorkshopFree
Kevin Gao
Kevin Gao
La autenticación sin contraseña puede parecer compleja, pero es simple de agregar a cualquier aplicación utilizando la herramienta adecuada. Hay múltiples alternativas que son mucho mejores que las contraseñas para identificar y autenticar a tus usuarios, incluyendo SSO, SAML, OAuth, Magic Links, One-Time Passwords y Authenticator Apps.
Mientras abordamos los aspectos de seguridad y evitamos errores comunes, mejoraremos una aplicación JS de pila completa (backend Node.js + frontend React) para autenticar a los usuarios con OAuth (inicio de sesión social) y One Time Passwords (correo electrónico), incluyendo:- Autenticación de usuarios - Gestión de interacciones de usuarios, devolviendo JWTs de sesión / actualización- Gestión y validación de sesiones - Almacenamiento seguro de la sesión para solicitudes de cliente posteriores, validación / actualización de sesiones- Autorización básica - extracción y validación de reclamaciones del token JWT de sesión y manejo de autorización en flujos del backend
Al final del masterclass, también exploraremos otros enfoques de implementación de autenticación con Descope, utilizando SDKs de frontend o backend.
Principales Diez Vulnerabilidades de Seguridad OWASP en Node.js
JSNation 2024JSNation 2024
97 min
Principales Diez Vulnerabilidades de Seguridad OWASP en Node.js
Workshop
Marco Ippolito
Marco Ippolito
En este masterclass, cubriremos las diez vulnerabilidades más comunes y riesgos de seguridad críticos identificados por OWASP, que es una autoridad confiable en Seguridad de Aplicaciones Web.Durante el masterclass, aprenderás cómo prevenir estas vulnerabilidades y desarrollar la capacidad de reconocerlas en aplicaciones web.El masterclass incluye 10 desafíos de código que representan cada una de las vulnerabilidades más comunes de OWASP. Se proporcionarán pistas para ayudar a resolver las vulnerabilidades y pasar las pruebas.El instructor también proporcionará explicaciones detalladas, diapositivas y ejemplos de la vida real en Node.js para ayudar a comprender mejor los problemas. Además, obtendrás información de un Mantenedor de Node.js que compartirá cómo gestionan la seguridad en un proyecto grande.Es adecuado para desarrolladores de Node.js de todos los niveles de habilidad, desde principiantes hasta expertos, se requiere un conocimiento general de aplicaciones web y JavaScript.
Tabla de contenidos:- Control de Acceso Roto- Fallas Criptográficas- Inyección- Diseño Inseguro- Configuración de Seguridad Incorrecta- Componentes Vulnerables y Obsoletos- Fallas de Identificación y Autenticación- Fallas de Integridad de Software y Datos- Fallas de Registro y Monitoreo de Seguridad- Falsificación de Solicitudes del Lado del Servidor
Cómo Construir Control de Acceso Front-End con NFTs
JSNation 2024JSNation 2024
88 min
Cómo Construir Control de Acceso Front-End con NFTs
WorkshopFree
Solange Gueiros
Solange Gueiros
Comprende los fundamentos de la tecnología NFT y su aplicación en el fortalecimiento de la seguridad web. A través de demostraciones prácticas y ejercicios prácticos, los asistentes aprenderán cómo integrar sin problemas mecanismos de control de acceso basados en NFT en sus proyectos de desarrollo front-end.
Encontrar, Hackear y solucionar las vulnerabilidades de NodeJS con Snyk
JSNation 2022JSNation 2022
99 min
Encontrar, Hackear y solucionar las vulnerabilidades de NodeJS con Snyk
WorkshopFree
Matthew Salmon
Matthew Salmon
npm y seguridad, ¿cuánto sabes sobre tus dependencias?Hack-along, hacking en vivo de una aplicación Node vulnerable https://github.com/snyk-labs/nodejs-goof, Vulnerabilidades tanto de código abierto como de código escrito. Se anima a descargar la aplicación y hackear junto con nosotros.Corrigiendo los problemas y una introducción a Snyk con una demostración.Preguntas abiertas.
Aporta Calidad y Seguridad al pipeline de CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
76 min
Aporta Calidad y Seguridad al pipeline de CI/CD
WorkshopFree
Elena Vilchik
Elena Vilchik
En esta masterclass repasaremos todos los aspectos y etapas al integrar tu proyecto en el ecosistema de Calidad y Seguridad del Código. Tomaremos una aplicación web simple como punto de partida y crearemos un pipeline de CI que active el monitoreo de calidad del código. Realizaremos un ciclo completo de desarrollo, comenzando desde la codificación en el IDE y abriendo una Pull Request, y te mostraré cómo puedes controlar la calidad en esas etapas. Al final de la masterclass, estarás listo para habilitar esta integración en tus propios proyectos.