Securing NPM Packages

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

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.

3. Evaluating and Analyzing JavaScript Malware

Short description:

Estamos evaluando la evaluación de desempaquetar y ejecutar malware de JavaScript en Node.js. Al negar el acceso a referencias requeridas, exploramos el comportamiento y aprendemos sobre la funcionalidad del malware, como acceder al proceso y leer datos del sistema. Todo esto sin desofuscar el paquete.

Esto es solo JavaScript, ¿verdad? Lo que ves a la izquierda. Ejecutando esto. Solo comprobando si estoy seguro. Y luego, obviamente es una demo, así que voy a hacer trampa. Este es un historial de lo que ejecuto. Y lo que estamos haciendo ahora es pasar por la evaluación de lo que desempaqueta y convierte este lío que ves a la izquierda en algo que realmente se puede ejecutar como JavaScript. Así que necesitamos permitirlo mediante prueba y error. Necesitamos permitirle algunas llamadas a eval para que realmente empiece a funcionar. Y luego, después de algunos eval, regex y parsint, el código realmente comienza a hacer cosas.

Así que este es un malware dedicado a ejecutarse en Node.js. Eso es lo que aprendimos al ver requirefs, ¿de acuerdo? También requiere HTTPS. No vamos a dejar que requiera las cosas reales. Así que lo que ves arriba es una lista de cosas a las que estaba tratando de acceder. Y luego estoy tomando decisiones aquí sincrónicamente mientras el programa está en pausa, si quiero darle esa referencia o no. ¿No es divertido? Así que le negamos el acceso a todo lo que quiere requerir y en su lugar le damos falsos.

Y ahora se nos pregunta qué deberíamos darle al programa como tipo process.exec, ¿de acuerdo? Así que vamos a darle una función falsa. Ahora requiere algunas cosas más y alcanza el proceso. Eso es bastante común. Otro proxy. De acuerdo. Process.env. Sí, eso fue fácil de predecir. De acuerdo. Y ahora podemos ver que está leyendo la variable de datos de la aplicación local. Así es como aprendemos que este es un malware de Windows, ¿de acuerdo? Y estamos devolviendo una cadena que será fácil de reconocer en otros lugares en lugar del valor real. Y luego vemos que intenta leer el directorio y pasa esa cadena reconocible a read your sink. De acuerdo. Estamos aprendiendo cómo funciona sin nunca desofuscar el paquete, ¿verdad? Así que ahora itera sobre las carpetas y recopila alguna información. Luego, otra indicación de que este es un malware de Windows, ejecuta task list. Genial.

4. Malware, Compiled Bytecode, and Defenses

Short description:

El malware puede publicar datos capturados en Discord sin configurar una infraestructura de servidor. El malware puede entregarse como bytecode precompilado, explotando una vulnerabilidad en el almacenamiento en caché de bytecode de Node.js. Un ejemplo de bytecode compilado demuestra el acceso a URLs, la lectura de archivos y el uso de eval. Las defensas contra el malware implican herramientas como npm audit para verificar problemas conocidos en las dependencias.

Y luego publica en un webhook de Discord para que los adolescentes que realmente escribieron ese malware puedan recopilar los datos que capturaron en su plataforma en línea favorita sin tener que configurar ninguna infraestructura de servidor. ¿No es conveniente? Y eso es lo que hace el malware. Divertido, ¿verdad?

Bien. Entonces, ¿por qué detenerse en la ofuscación? ¿Sabías que algún malware puede entregarse como bytecode precompilado? El código en pantalla te muestra cómo. El script de VM en Node.js no verifica realmente si el código que estamos tratando de compilar coincide específicamente con la caché. Solo verifica si la longitud del código parece coincidir con los bytes en caché del bytecode, lo que facilita entregar una carga útil de bytecode sin tener que entregar el código legible para eso. Bien. Así que, sí. Puedo... Nota al margen, no publiques malware en NPM incluso si tienes buenas razones y estás haciendo white hat y todo eso.

Pero antes de llegar allí, echemos un vistazo a otro pequeño ejemplo de algún código que luego compilé. Y ahora puedo ejecutarlo con Lava Lab C, que es un Lava Lab que puede manejar bytecode compilado. Así que la plataforma tiene que coincidir y todo, por lo que no es tan fácil obtener bytecode compilado de alguien y ejecutarlo en tu plataforma. Pero podemos ver que realmente funciona desde el archivo compilado. Este es bytecode de JavaScript, y me va a preguntar si quiero darle console. Como puedes ver, esto coincide con el código a la izquierda. Y luego está accediendo a URL. Y hay algunos artefactos de la propia compilación, por lo que hay un mapeo interno. Eso es interesante, ¿verdad?

Y luego se accede a require. Ejecutamos read file sync en una carga útil. Devolvemos un falso, y luego eval es una función. Y ahora la carga útil que devolvimos se convierte en JSON, aunque no es visible en el código. Pero esa es la operación a la que se compiló este código, curiosamente. ¿Divertido, no? Y luego ejecutamos el resultado de eso, al que le di un objeto con un proxy para ver si hay otros métodos siendo llamados en él. Y eso es todo. Así que eval de algo vacío no hizo mucho. Bien, pero esto también funciona en bytecode compilado. Pasando a las defensas, porque en realidad estoy del lado de la defensa. Así que no vamos a hablar sobre las defensas que se basan en información existente sobre paquetes. Así que hay npm audit que va a verificar si tus dependencias tienen problemas conocidos y te lo hará saber.

5. Hardin JavaScript and Lavamote

Short description:

Hardin JavaScript proporciona aislamiento de alcance y previene la contaminación de prototipos para hacer las aplicaciones de JavaScript más seguras. Lavamote es una herramienta de seguridad de la cadena de suministro que aplica Hardin JavaScript para proteger las dependencias.

Y eso es dos meses después de que esa dependencia existiera que algunos humanos pasaron por el proceso de informar sobre ello. Hay socket que puede hacerlo en cuestión de horas con algunas heurísticas, pero luego tienes que verificar si las advertencias son correctas. Lo que buscamos es que después de que hayas ignorado o no hayas aplicado todas esas protecciones, y el código malicioso ya esté en tu aplicación ejecutándose en producción, queremos detener eso.

Y como viste, puedo hacerlo, ¿verdad? Si podemos controlar el código malicioso en tiempo de ejecución, usemos la tecnología detrás de ello para hacer nuestras aplicaciones más seguras. Y ahí es donde entra Hardin JavaScript. Puedes ir a hardenjs.org y ver un hermoso video sobre ello donde mi mago de código abierto favorito está explicando lo que está sucediendo. En resumen, JavaScript resulta estar bien diseñado para la seguridad. Es una declaración inesperada, sí. Mira cómo se está estandarizando. Hay ECMA que trabaja en el lenguaje en sí, que apenas tiene APIs poderosas en él. Y luego cada API poderosa proviene ya sea del navegador o de node o de cualquier entorno host en el que estés ejecutando. Así que eso se estandariza en otro lugar. Así que toma la Ley de Conway que dice que la infraestructura de comunicación de las personas que construyen software va a dar forma al software en sí. Terminamos con una muy buena separación entre el lenguaje en sí y las APIs poderosas. El poder solo es alcanzable a través del alcance. Puedes alcanzar un global o requerir/importar algo. Y Hardin JavaScript está ahí para controlar el alcance y los mecanismos de importación. Y eso ya está implementado como SESS-SHIM. Así que podemos usarlo mientras esperamos que se estandarice. Sí, hay un proceso en marcha para eventualmente incluirlo en el estándar de JavaScript. Así que Hardin JavaScript proporciona dos cosas que vale la pena explicar aquí.

Una es el compartimento, que ofrece un aislamiento de alcance que podemos aplicar a cualquier código. La otra es el bloqueo que previene cualquier tipo de contaminación de prototipos y refuerza los intrínsecos de JavaScript en sí mismos. Así que cualquier cosa global en JavaScript, como el prototipo de objeto y el prototipo de array, no puedes romper más. Así que este es el bloqueo muy simple. El bloqueo real es como 5,000 líneas de código o así. Y eso es lo que usamos detrás de escena en Lavamote. Así que Lavamote es la herramienta en la que estoy trabajando que toma Hardin JavaScript y lo aplica en tu stack tecnológico para hacer tu tiempo de ejecución más seguro de paquetes maliciosos. Y lo aplicamos específicamente a tus dependencias. Así que esta es una herramienta de seguridad de la cadena de suministro que funciona en tiempo de ejecución.

6. Lafamote y Protección Contra Paquetes Maliciosos

Short description:

Lafamote coloca cada paquete en su propio compartimento, controlando la estructura de las dependencias y permitiéndoles llamarse entre sí. Proporciona herramientas para crear políticas de acceso. En la demostración final, se utiliza un paquete malicioso llamado CookieMonster para demostrar la necesidad de Lafamote. Un plugin de Lafamote extiende la construcción habitual de Webpack, protegiendo la aplicación de paquetes maliciosos.

¿Qué hace? Toma cada paquete y lo coloca en su propio compartimento. Así que todos los archivos de un paquete van a compartir un global, pero no van a compartir la referencia global con ningún otro paquete o el código de tu aplicación. ¿Suena imposible? Sí, a mí también me sonaba imposible. Se puede hacer. Y también controlamos la estructura de la dependencia y permitimos que las dependencias se llamen entre sí. Todo sucede en el mismo hilo, en la misma ventana, en cualquier plataforma que estés usando. Y también entregamos herramientas para ayudarte a crear una política para decidir qué paquete puede acceder a qué. Podría explicarlo y agitar mis manos aún más, pero prefiero mostrarte. Así que es hora de la demostración final.

Primero echemos un vistazo a las fuentes. Así que tenemos una pequeña aplicación tonta aquí que necesito más espacio para mostrar. Así que esta es una pequeña aplicación donde establecemos una cookie para que tengamos algo valioso que proteger. Y este console log es solo para documentar que está ahí. Y luego llamamos a algunas dependencias. Y una de nuestras dependencias es un paquete llamado CookieMonster, que noto que no publiqué en NPM porque es un paquete malicioso. Y lo que está haciendo el CookieMonster es, sí, nos está dando una cita aleatoria de CookieMonster. Encantador. Pero también está robando nuestras cookies. Bueno, ¿qué esperabas? Es CookieMonster. Y ahora tenemos una construcción de Webpack que puede construir esta aplicación de dos maneras. Una es la construcción de Webpack más usual que puedas imaginar. La otra es la misma pero extendida con un plugin de Lafamote. Este es un plugin que actualmente está en beta. Para cuando lo escuches, podría ya estar en la versión 1.0. Definitivamente estamos lanzando la versión 1.0 antes de que termine el año en curso.

Y ahora App.js se construye y podemos ejecutarlo en el navegador. Así que echemos un vistazo a esta aplicación ejecutándose en el navegador. Así que esta es la construcción donde no se aplicó Lafamote. Así que lo que está sucediendo en la consola, si echas un vistazo, está el console log que dice localhost es nuestro dominio y name equals chocolate chip es nuestra cookie. Y luego obtenemos una cita de CookieMonster, la respuesta del archivo TypeScript que está ahí para probar que Webpack está haciendo lo suyo.

7. Lafamote in Action and Project Setup

Short description:

Lafamote previene que las cookies robadas sean enviadas y restringe el acceso a los globals sensibles. Se genera una política para revisar y permitir el uso de paquetes. Se puede crear un archivo de anulación de políticas para denegar el acceso selectivamente. Oferta por tiempo limitado para ayudar a configurar proyectos con Lafamote. Comienza con allowscripts para prevenir ataques de paquetes maliciosos conocidos. Explora todas las herramientas y características de Lafamote.

Y luego obtenemos errores al intentar enviar la cookie robada a example.com. Porque el origen cruzado lo impidió, pero es una cuestión de configuración del servidor, ¿verdad? Pero CookieMonster tenía acceso a nuestras cookies y a nuestro fetch y todo, lo cual no me gusta realmente. No quiero eso.

Así que aquí, puedes ver que en la misma situación con Lafamote aplicado, estamos recibiendo un error que dice que fetch no es una función. ¿Cómo sucedió eso? Te lo voy a mostrar. Así que tenemos una carpeta de Lafamote aquí donde hemos generado una política que dice que estas son las cosas que el paquete parece estar usando. Esto es solo para que lo revises y permitas o no. Y luego tenemos un archivo de anulación de políticas que puedes crear manualmente y denegar todo si quieres. O denegarlo selectivamente. Así que si todavía tenemos tiempo, podría intentar permitir esto y volver a ejecutar la construcción. Obtiene... Obtiene... No. Bien. Bien. Volviendo a ejecutar la construcción y ahora podemos ver la misma aplicación pero con fetch permitido. Así que fetch está permitido pero el acceso al global document no está permitido. Así que mientras fetch funciona, envía undefined slash undefined porque estos valores globales no existen para nuestro paquete CookieMonster. ¿No es divertido?

Bien. Y con eso, quiero decirte que oferta por tiempo limitado, puedo ayudar a algunas personas a configurar su proyecto con Lafamote. Hay un montón de herramientas allí. Pero deberías comenzar con allowscripts que es una pequeña cosa que puedes configurar en cinco minutos y prevenir la mayoría de los ataques de paquetes maliciosos que conocemos. Y sí, hay más en Lafamote. Puedes leer sobre ello y explorar todas las herramientas y características.

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.
Cómo se hackean las aplicaciones React en el mundo real
React Summit 2022React Summit 2022
7 min
Cómo se hackean las aplicaciones React en el mundo real
Top Content
How to hack a RealWorld live React application in seven minutes. Tips, best practices, and pitfalls when writing React code. XSS and cross-site scripting in React. React's secure by default, but not always. The first thing to discover: adding a link to a React application. React code vulnerability: cross-site scripting with Twitter link. React doesn't sanitize or output H ref attributes. Fix attempts: detect JavaScript, use dummy hashtag, transition to lowercase. Control corrector exploit. Best practices: avoid denialist approach, sanitize user inputs. React's lack of sanitization and output encoding for user inputs. Exploring XSS vulnerabilities and the need to pretty print JSON. The React JSON pretty package and its potential XSS risks. The importance of context encoding and secure coding practices.

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
Workshop
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
Workshop
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.