¿Qué es una Vulnerabilidad y Qué No lo Es? Entendiendo los Modelos de Amenazas de Node.js y Express

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
Slides
Rate this content

La seguridad no se trata solo de corregir errores; se trata de entender las suposiciones que hacemos (y evitar el pánico innecesario). En esta charla, profundizaremos en los modelos de amenazas de Node.js y Express, que coautoré, para desglosar en qué confían, en qué no, y por qué eso realmente importa para los desarrolladores e investigadores de seguridad.

Examinaremos vulnerabilidades del mundo real que encajan dentro de estos modelos, aclararemos algunos de los conceptos erróneos de seguridad más comunes (porque no todo es un colapso crítico), y exploraremos cómo estas suposiciones de seguridad influyen en las recompensas por errores, la explotabilidad y las soluciones a largo plazo. Al final, los asistentes se irán con una mejor comprensión de lo que es un riesgo de seguridad real, lo que no lo es, y cómo construir aplicaciones que no les quiten el sueño.

This talk has been presented at Node Congress 2025, check out the latest edition of this JavaScript Conference.

Ulises Gascón
Ulises Gascón
17 min
17 Apr, 2025

Comments

Sign in or register to post your comment.
  • Costanza
    Costanza
    Bromley web works. Founder
    👍
Video Summary and Transcription
En esta charla, discutiremos la seguridad, las vulnerabilidades y cómo mejorar su seguridad general. Exploraremos varias vulnerabilidades y la diferencia entre errores de desarrollador y configuraciones incorrectas. Entender los modelos de amenazas es crucial para determinar la responsabilidad de las vulnerabilidades. Los desarrolladores tienen la responsabilidad última de manejar la entrada del usuario, los datos de la red y otros factores. Entender los modelos de amenazas, las mejores prácticas y asumir la responsabilidad de las dependencias son clave para mejorar la seguridad. La seguridad es un proceso continuo que requiere dedicación y comprensión.

1. Introduction to Security and Vulnerabilities

Short description:

En esta charla, discutiremos sobre seguridad, vulnerabilidades y cómo mejorar tu seguridad en general. Una vulnerabilidad es un defecto, una mala configuración de seguridad o un punto débil en nuestro sistema que puede ser explotado por terceros. Hoy, exploraremos varias vulnerabilidades.

Hola, soy Ulisses Gascon, y en esta charla vamos a hablar mucho sobre seguridad. Vamos a profundizar en la comprensión de qué es una vulnerabilidad y qué no lo es, mientras usas tus herramientas más queridas como Node.js o Express, ¿verdad?

Así que básicamente, quién soy. Soy ingeniero de software en NodeSource. También soy parte del equipo central de Yeoman, Node.js y Express, y estoy tratando de ayudar mucho en el ecosistema sobre seguridad. Estoy participando en muchos espacios de colaboración y grupos de trabajo, etcétera. Y la idea de hoy es discutir sobre qué es una vulnerabilidad y qué no lo es, y cómo puedes mejorar tu propia seguridad en general.

Entonces, básicamente, ¿qué es una vulnerabilidad? En términos muy simples, y si usamos la Wikipedia, entenderemos que una vulnerabilidad es básicamente un defecto, una mala configuración de seguridad o un punto débil en nuestro sistema. Así que básicamente, son defectos. La cuestión es que estos defectos pueden ser utilizados por terceros para explotar nuestros sistemas, ¿verdad? Y hacer que funcionen de maneras que no anticipamos. Eso es lo que consideramos un problema de seguridad. Y básicamente hoy vamos a descubrir muchos de estos defectos.

2. Understanding Vulnerabilities and Threat Models

Short description:

En los ejemplos dados, uno es un caso claro de error del desarrollador con una inyección SQL, mientras que el otro es una mala configuración que expone una vulnerabilidad. Entender la diferencia entre estos dos escenarios es crucial para determinar la responsabilidad de las vulnerabilidades. La charla se centrará en los modelos de amenazas, un enfoque estructurado para comprender los riesgos de seguridad, identificar amenazas potenciales y discutir mitigaciones. Explora qué necesita ser protegido, problemas potenciales y límites, y proporciona recomendaciones para mejorar la seguridad.

Lo primero es como, cuando enfrentamos cualquier tipo de desafío de seguridad, por ejemplo, aquí tenemos dos ejemplos que son en realidad código débil, digamos. Así que en el primer ejemplo, vemos claramente que hay una inyección SQL aquí, ¿verdad? No estamos haciendo ningún tipo de validación en este data.name, básicamente. Así que eso es algo que puede ser malo. Y en el segundo ejemplo, no vemos nada especialmente raro aparte de este gran límite que decimos en uno de los argumentos cuando hicimos la configuración para el body parser. Pero sí, básicamente estamos usando Express, nada súper raro y body parser, ¿verdad? Así que en el primer ejemplo, es muy claro para nosotros que tal vez a quién podemos culpar, básicamente podría ser el desarrollador.

Y en el segundo caso, no es muy claro, ¿verdad? Porque dependiendo de cómo estés manejando esto, tienes dos perspectivas aquí. Así que una es como, si tienes una inyección SQL, es cómo estás usando la herramienta y la estás usando incorrectamente. Así que en este caso, por ejemplo, es culpar al desarrollador, ¿verdad?, por cometer el error de incluir la inyección SQL. Pero en el otro caso, no es tan simple. Es mayormente nuestra vulnerabilidad, ¿verdad? Así que definimos cómo debería funcionar el framework, cómo deberían funcionar las bibliotecas en este caso. Y hay una mala configuración de la decisión que tomamos en el proyecto que hace que este punto débil sea posible de explotar, ¿verdad? Así que obtuvimos un CVE el año pasado y podemos ver claramente que esto puede terminar en una denegación de servicio porque hay algunas opciones para hacer, ya sabes, cargas útiles elaboradas que podrían, ya sabes, sobrecargar el servidor. Así que este es el tipo de escenarios con los que lidiamos.

Vamos a discutir mucho hoy sobre cuáles son las dos principales diferencias entre estos tipos de cosas y cómo podemos entender y esperar qué se considera una vulnerabilidad en los ojos del desarrollador y qué se considera una vulnerabilidad en los ojos de los mantenedores de las bibliotecas o el runtime que te encanta usar, ¿verdad? Así que básicamente, lo más importante hoy, la introducción de esta charla va a ser sobre los modelos de amenazas. Así que básicamente, ¿qué es un modelo de amenazas? Para nosotros, un modelo de amenazas es un documento simple. Quiero decir, el resultado final es un documento, pero principalmente es un enfoque estructurado para entender el riesgo de seguridad, posibles mitigaciones, tratamos de identificar a los atacantes y los actores y qué puede salir mal. Así que básicamente, es un ejercicio que hacemos como parte del proyecto y tratamos de responder a algunas de estas preguntas, ¿verdad? Como qué estamos tratando de proteger, ya sabes, qué puede salir mal? ¿Cuáles son los problemas que podríamos ver alrededor de esto? ¿Cuáles son las amenazas potenciales que estamos viendo aquí? Es algo que puede ser causado por un malentendido, puede ser un bot, puede ser, ya sabes, atacantes, puede ser lo que sea, ¿verdad? ¿Cuáles son los límites? Esa es una pregunta muy importante que deberíamos hacer cuando construimos una biblioteca, cuando construimos un runtime, ¿verdad? Como cuáles son las cosas que consideramos confiables o no confiables para que podamos entender eso. Y también discutimos mucho sobre las mitigaciones, ¿verdad? Qué, qué necesitamos hacer, quiero decir, cómo son los escenarios y qué pueden hacer los usuarios de nuestros propios entornos para mejorar la seguridad, ¿verdad?

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

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