El Estado de la Seguridad de JavaScript en 2024

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Mientras React continúa dominando el panorama del desarrollo web, asegurar el vasto ecosistema de dependencias de código abierto nunca ha sido más crítico. En 2024, los desafíos en torno a React y la seguridad de JavaScript han evolucionado, y los riesgos asociados con los ataques a la cadena de suministro de software son más pronunciados que nunca.

En esta charla, exploraremos el estado actual de la seguridad de JavaScript, destacando recientes ataques a la cadena de suministro de alto perfil y su impacto en la comunidad de desarrollo. Discutiremos las últimas tendencias, herramientas y mejores prácticas para gestionar y asegurar tus dependencias de JavaScript.

Los temas clave incluirán:
•        Una visión general de los recientes ataques a la cadena de suministro y las lecciones aprendidas
•        Estrategias efectivas para mitigar riesgos de dependencias maliciosas
•        Cómo las herramientas y estándares modernos están mejorando el panorama de la seguridad
•        El papel de los desarrolladores y organizaciones en fomentar un ecosistema de código abierto seguro

Únete a Feross Aboukhadijeh, un experimentado mantenedor de código abierto y experto en seguridad, mientras comparte ideas y consejos prácticos sobre cómo navegar el complejo mundo de la seguridad de JavaScript en 2024. Esta sesión es esencial para desarrolladores, profesionales de seguridad y cualquier persona interesada en mantener una cadena de suministro de software segura y resiliente.

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

Feross Aboukhadijeh
Feross Aboukhadijeh
32 min
19 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Soy Firas, un desarrollador experimentado de código abierto con un enfoque en la seguridad web. La seguridad de JavaScript es un desafío debido al concepto de dependency hell y la dependencia de dependencias de código abierto. Los componentes vulnerables y desactualizados representan un riesgo, y ejemplos recientes destacan los peligros en NPM. Los paquetes maliciosos pueden permanecer sin ser detectados durante mucho tiempo, y las herramientas actuales para la seguridad de JavaScript son inadecuadas. El orador comenzó Socket como una empresa después de un interesante ataque a NPM en 2017. Se discuten los peligros de instalar código no verificado y se explora el impacto de la IA en la seguridad. Socket tiene como objetivo abordar el problema del ruido en las alertas de seguridad al enfocarse en las vulnerabilidades más severas.

1. Introduction

Short description:

Soy Firas, un desarrollador experimentado de código abierto con un enfoque en la seguridad web. He escrito numerosos paquetes npm, incluidos Web torrent y standard JS. Ahora, estoy combinando mi experiencia en código abierto y seguridad con Socket, una herramienta que ayuda a proteger tu código verificando vulnerabilidades y dependencias maliciosas. Tenemos una amplia gama de organizaciones y repositorios que utilizan Socket, y estamos orgullosos del impacto positivo que hemos logrado.

Soy Firas, he estado trabajando en código abierto durante unos 10 años, he escrito alrededor de cien paquetes npm diferentes, tal vez algunos de los cuales hayas oído hablar. Web torrent y standard JS, hice algo de trabajo en algunos polyfills que se usaron en Browserify y Webpack y algunos otros empaquetadores también. Luego me moví hacia la seguridad, me interesé mucho en la seguridad web, enseñé un curso en Stanford, y ahora estoy tomando mi interés en código abierto y seguridad e intentando unir los dos con Socket. Así que haré solo unos rápidos 10-20 segundos sobre Socket. Así que ayudamos a proteger tu código, si necesitas obtener una herramienta para verificar vulnerabilidades y dependencias maliciosas, echa un vistazo a Socket, podríamos ayudarte. Tenemos un montón de organizaciones que nos usan, un montón de repos que estamos protegiendo, y luego algunos de nuestros clientes aquí. Así que estoy realmente feliz con cómo hemos podido ayudar a mucha gente con nuestro producto.

2. JavaScript Security Challenges

Short description:

La seguridad en JavaScript es una tarea desafiante debido a la naturaleza compleja e interconectada de las aplicaciones web modernas. Los navegadores web deben permitir que los sitios web descarguen y ejecuten código mientras garantizan la seguridad del usuario. A pesar de su reputación, la web ha desarrollado medidas de seguridad robustas a lo largo de los años. Como desarrolladores, es crucial entender estas complejidades para construir sitios web y aplicaciones seguras. Esta charla tiene como objetivo aumentar la conciencia y resaltar consideraciones importantes para la seguridad de JavaScript en 2024.

Así que hablemos de la seguridad en JavaScript. Entonces, ¿por qué es difícil la seguridad en JavaScript? Creo que la cita que ilustra esto es de Michael Zalewski, quien es el autor de The Tangled Web, que es uno de los primeros libros de seguridad web que leí alguna vez. Y él dice, las aplicaciones web modernas están construidas sobre un enredo de tecnologías que han sido desarrolladas con el tiempo y ensambladas de manera desordenada. Así que cada pieza de la pila de aplicaciones web, desde HTTP hasta los scripts del lado del navegador, viene con consecuencias de seguridad importantes pero sutiles. Y para mantener a los usuarios seguros, realmente tenemos que entender y navegar este panorama. Y si piensas en el trabajo del navegador web, en realidad es una tarea aparentemente imposible. Los sitios, incluso los sitios web maliciosos que visitas, pueden descargar y ejecutar código desde cualquier dirección IP o origen. Pueden generar procesos de trabajo en tu sistema operativo. Pueden abrir sockets, mostrar medios en cualquier cantidad de formatos diferentes, ejecutar código en tu GPU, por el amor de Dios, y guardar y leer datos de tu sistema de archivos. Ahora, ¿dejarías que un sitio web malicioso hiciera esto en tu computadora? Bueno, eso es lo que un navegador web tiene que hacer. Tiene que permitir que eso suceda de manera segura. Así que es realmente asombroso lo robusta que es la web a pesar de la reputación que a veces tiene, especialmente de los detractores. Y así, puede que no tenga un diseño limpio, pero realmente ha evolucionado muchas medidas de seguridad para hacerla realmente robusta a lo largo de los años. Y así, ya sabes, es muy fácil criticar, lamentar y crear escenarios paranoicos sobre los fundamentos de seguridad poco sólidos de la web. Pero la verdad es que toda esa crítica es cierta, y sin embargo, la web ha demostrado ser increíblemente robusta como plataforma. La cuestión es que, como desarrolladores, realmente tenemos que entender todas esas complejidades a menudo para construir sitios web seguros y aplicaciones seguras. Y eso es parte de lo que, ya sabes, el propósito de esta charla es, es solo para aumentar la conciencia. No tengo mucho tiempo. Pero solo para destacar algunas cosas que han cambiado en 2024 y algunas cosas a tener en cuenta para ti.

3. Dependency Hell and NPM

Short description:

La seguridad en JavaScript es desafiante debido al concepto de dependency hell. Dependency hell se refiere al problema de gestionar dependencias transitivas, donde diferentes paquetes dependen de diferentes versiones del mismo paquete. Este fue un problema significativo en la programación antes de NPM. Otros ecosistemas tenían árboles de dependencias pequeños para evitar conflictos, pero NPM resolvió este problema permitiendo la instalación de múltiples versiones del mismo paquete.

Entonces, ¿por qué es difícil la seguridad en JavaScript? Nuevamente, haré esa pregunta. Voy a señalar una razón quizás sorprendente, que es que NPM resolvió dependency hell. Entonces, ¿qué es dependency hell? Esta es una imagen que probablemente hayas visto antes. Levanta la mano si has visto esto antes. Es como el meme favorito de todos, ¿verdad? Pero, ya sabes, cuando hablamos de dependency hell, no estamos hablando del montón de paquetes que terminan en tu carpeta de node modules, aunque eso es a menudo lo que la gente quiere decir cuando lo dicen hoy. Pero la definición original era en realidad muy diferente. Y así, para explicar eso, primero voy a, repasemos rápidamente qué son las dependencias transitivas.

Entonces, las dependencias transitivas son cuando instalas un paquete y luego ese paquete depende directamente de otro paquete y así sucesivamente. Y así decimos que el paquete A depende transitivamente del paquete C si hay un camino de dependencias directas a través del árbol. Entonces, ¿por qué es esto importante? Bueno, la definición original de dependency hell que si has estado programando digamos 10 años o más, definitivamente tal vez estés familiarizado con la definición original, que es que ocurre cuando pones tu aplicación en un estado donde no puedes instalar las dependencias. Estás simplemente atascado. Entonces, ¿cómo sucede esto? Bueno, sucede en este ejemplo aquí. Tenemos una aplicación que depende de foo client y bar client. Y cada uno de esos depende de requests, pero de diferentes versiones de requests. Y esto es en realidad cómo funciona Python. Así es como prácticamente todo antes de NPM funcionaba. Entonces, en esta situación, no podemos instalar este árbol de dependencias. El gestor de paquetes simplemente se rendirá. Simplemente levantará las manos y dirá, oh, quieres dos versiones de requests. ¿Cómo podría posiblemente instalar dos versiones del mismo paquete? Esto probablemente te sorprenda mucho si alguna vez has mirado en tu carpeta de node modules. Verás el mismo paquete allí a veces decenas, cientos de veces. No es realmente un problema para NPM. Pero prácticamente todo lo que vino antes de NPM no podía manejar esta situación. Y así, lo que eso significaba era que se volvía muy costoso para un paquete agregar dependencias. Porque si agregas una dependencia ahora en requests, has creado una situación donde ninguno de tus usuarios puede usar requests en una versión diferente en cualquier parte de su aplicación. Y así pensarías como cien veces antes de agregar una dependencia a tu proyecto. Y por eso estos otros ecosistemas que vinieron antes de NPM tenían árboles de dependencias muy pequeños. Muy pocas dependencias en general. Así que NPM simplemente dijo, hey, vamos a instalar todo. Como si quisieras la versión dos, la versión tres, no me importa si quieres cien versiones, simplemente las instalaré todas.

4. The Impact of Open Source Dependencies

Short description:

En los últimos años, la forma en que escribimos software ha cambiado significativamente. Las aplicaciones ahora dependen en gran medida de las dependencias de código abierto, con más del 90% del código proveniente de estas dependencias. La complejidad de las dependencias se representa mediante herramientas como Express y npm.onvaca.com, mostrando las capas de paquetes y archivos dentro de cada dependencia. La seguridad de nuestras aplicaciones depende no solo de las dependencias, sino también de otros componentes como el sistema operativo y las API de terceros. Desafortunadamente, el ecosistema enfrenta numerosos ataques, con paquetes siendo secuestrados o infectados con malware.

Y eso es realmente genial para la experiencia del desarrollador, porque nunca te encuentras en una situación donde no puedes continuar. Pero terminó realmente, realmente cambiando la forma en que escribimos software. Puedes verlo realmente en los últimos cinco años más o menos, donde hoy es súper común ver aplicaciones donde más del 90% del código en tu aplicación proviene de tus dependencias de código abierto y no del código que escribiste.

Y así... Quiero decir, supongo que debería explicar esa imagen antes de continuar. Pero esto es básicamente Express. Esta es una dependencia. Y cada caja gris es un paquete. Y cada caja morada es un archivo. Y básicamente está desglosando las capas de cada uno de estos paquetes. Un nivel del árbol a la vez. Y puedes ver dentro de cada paquete cuántos más paquetes y cuántos más archivos hay. Es una imagen un poco hipnotizante. Pero esta es solo una dependencia.

Así que aquí hay otra forma de ver esto. Esta es otra herramienta. Me encanta esta herramienta si no la has revisado. Npm.onvaca.com. Esto te muestra el árbol de dependencias. Y es como si las estuviera cargando progresivamente allí. Y esto es, nuevamente, una dependencia. Vemos que la dependencia promedio tiene 79 transitivas. Y cuando hablamos de la seguridad de nuestra cadena de suministro, lo que realmente queremos decir no es solo dependencias, sino en realidad todo de lo que dependes. Podría ser tu sistema operativo, API de terceros, servicios en la nube. Todos estos están involucrados en la seguridad de tu aplicación. Pero nos vamos a centrar en las dependencias aquí, porque es con lo que estoy más familiarizado.

Así que sí, y luego el repositorio promedio de GitHub tiene cientos de dependencias. Vemos algunos clientes nuestros que tienen 10, 20, 50,000 dependencias en toda la organización. Y desafortunadamente, el ecosistema está bajo ataque. Hay una gran cantidad de paquetes siendo secuestrados o teniendo malware añadido a ellos.

5. JavaScript Security Challenges Continued

Short description:

La seguridad en JavaScript es difícil debido a los cambios constantes en las diez principales vulnerabilidades web. El control de acceso roto, las referencias directas a objetos inseguras y el CORS inseguro son problemas comunes. Los desarrolladores deben asegurar verificaciones en el backend, una validación adecuada y una política de denegación por defecto para mejorar la seguridad. Además, se debe evitar servir la carpeta .git para prevenir el acceso no autorizado al código fuente.

Y hemos visto un aumento del 700% en el último año. Y así que este es un problema. Así que esa es una razón. ¿Cuál es otra razón por la que la seguridad en JavaScript es difícil? Bueno, las diez principales vulnerabilidades web están cambiando constantemente. Así que echemos un vistazo a las diez principales de OWASP. Esta es una lista publicada frecuentemente de las diez principales vulnerabilidades web. Y vale la pena mirarla, especialmente porque está cambiando con el tiempo. La versión de 2025 de esto aún no se ha publicado. Pero podemos ver aquí los cambios de 2017 a 2021. Y solo señalaré algunas actualizaciones interesantes.

Así que el número uno, el control de acceso roto ha subido de la quinta posición a ser el primero.

Fallos criptográficos anteriormente se conocían como exposición de datos sensibles. Y eso fue renombrado y ahora se enfoca más en la causa raíz, que suele ser algún tipo de fallo criptográfico. La inyección ha bajado del número uno al número tres. Eso es principalmente, creo, debido a la adopción de frameworks. Cosas como React hacen que este problema desaparezca, prácticamente. A menos que te esfuerces por meterte en problemas. Y luego hay algunos nuevos.

6. Additional JavaScript Security Challenges

Short description:

Diseño inseguro, componentes vulnerables y desactualizados, control de acceso roto, referencias directas a objetos inseguras, CORS inseguro, servir la carpeta .git, registrar fallos de control de acceso, fallos criptográficos, no usar fuentes de entropía seguras, funciones hash obsoletas, contratar a un pen tester, y la efectividad de React en solucionar problemas de inyección y XSS.

Como el diseño inseguro es uno nuevo. Y los componentes vulnerables y desactualizados fueron renombrados para reflejar que no solo nos importan las vulnerabilidades. En realidad nos importa la salud de todo nuestro árbol de dependencias. Y creo que eso está apareciendo como número seis ahora mismo.

Así que en interés del tiempo, voy a repasar algunos puntos interesantes sobre estos bastante rápido, porque quiero asegurarme de que dejemos tiempo para las cosas divertidas que tengo al final. Pero el control de acceso roto, esto es cuando, ya sabes, piensa en cosas como tal vez tienes un botón de administrador en el cliente, y realmente no estás implementando una verificación en el backend para asegurar que solo los usuarios autorizados puedan acceder a él. Tenemos cosas como referencias directas a objetos inseguras, que son cuando no estás validando en el lado del servidor que los permisos son correctos. Si cosas como, ya sabes, manipulación de cookies, manipulación de JWT, necesitas asegurarte de que los usuarios no puedan entrar y cambiar esas cosas. Incluso en cores, asegúrate de no aceptar solicitudes de API de cualquier interfaz web en la web, lo cual, ya sabes, mucha gente pone la estrella, la estrella de cores allí para resolver sus problemas, pero, ya sabes, hay implicaciones para eso. Así que, ya sabes, revisa tus puntos finales de API, asegúrate de negar por defecto, asegúrate de que las cosas estén, ya sabes, autenticadas correctamente. Otro consejo, asegúrate de no servir tu carpeta .git. En realidad hay algunas cosas interesantes que puedes hacer rastreando las carpetas .git de las personas y extrayendo todo su código fuente. Así que podrías querer verificar que no estás haciendo eso.

Registrar fallos de control de acceso y notar cuando los usuarios han estado intentando iniciar sesión en la misma cuenta cientos o millones de veces, eso será una forma de saber que, ya sabes, podrías necesitar agregar un límite de tasa. Fallos criptográficos. Así que estas son cosas como, ya sabes, ¿estás usando HTTPS? ¿Estás usando algoritmos criptográficos seguros? Asegúrate de no registrar tus claves de API en tus repositorios. No envíes claves de API por Slack u otros mecanismos. Asegúrate de no usar math.random como una fuente segura de entropía. No lo es. Math.random no es seguro. Y obviamente, ya sabes, no uses funciones hash obsoletas como SHA-1. Honestamente, probablemente ni siquiera deberías estar haciendo autenticación tú mismo, francamente. Podrías querer simplemente usar un proveedor para esto porque hay mucha sutileza para hacer esto correctamente. Y luego creo que el mayor consejo aquí es realmente contratar a un pen tester. Esto es como una persona de seguridad que vendrá y tratará de romper tu aplicación y te enviarán un informe al final con todos los problemas que necesitas arreglar. Esto puede costar entre 10 y 20K y es una muy buena inversión.

Inyección. Así que no tengo mucho que decir sobre esto. Creo que frameworks como React han solucionado prácticamente este problema para nosotros. XSS no es realmente algo de lo que debas preocuparte si no estás haciendo un esfuerzo por usar cosas como dangerously set inner HTML.

7. Best Practices for Secure Design

Short description:

Aprende del método de nombrado de React. Un diseño inseguro puede comprometer bibliotecas seguras. Prioriza el diseño seguro e integra la seguridad desde el principio. Empodera a los desarrolladores con herramientas e información.

Una de las cosas que diré es que si eres un autor de framework o un autor de biblioteca, deberías aprender del método de nombrado en React. Me encanta el nombre dangerously set inner HTML porque te hace cuestionar lo que estás haciendo 10 veces antes de hacerlo. En otras bibliotecas de plantillas que vinieron antes, como Pug o solía llamarse Jade, usan un hash para inyectar variables y un signo de exclamación para hacerlo de manera insegura, y es realmente fácil no notar la diferencia entre esos dos caracteres en una revisión de PR, pero es fácil notar algo que se llama peligroso. Un gran reconocimiento a esto. Si no has visto esto, esta es una variable en el código fuente de React o al menos solía ser, y de hecho, esto es bueno. Esto es realmente un buen nombrado. Realmente apoyo esto.

Así que diseño inseguro. Así que esto es un poco sobre las decisiones de diseño que tomamos a un nivel alto de cómo construimos nuestra aplicación. La clave aquí es que incluso si tienes bibliotecas seguras en cada etapa, si las juntas de una manera insegura, estás un poco perdido. Así que solo entiende que el diseño en sí mismo tiene que tener sentido. Un ejemplo sería hacer validación de formularios del lado del cliente. No importa qué tan buena sea la validación, es del lado del cliente. No vas a poder hacer eso seguro. Y luego, al pensar en este tipo de diseño seguro, solo te animaría a pensar en la seguridad desde el principio, tener conversaciones al respecto, asegurarte de que estás pensando en la experiencia del desarrollador dentro de tu empresa. Debería ser fácil para los desarrolladores hacer lo correcto. No deberían tener que recordar un montón de cosas. Lo fácil debería ser lo correcto. Y queremos herramientas que empoderen a los desarrolladores para ser autosuficientes y tomar sus propias decisiones. No queremos cosas que bloqueen al desarrollador o que desencadenen algo que el equipo de seguridad tenga que venir y revisar. Queremos construir herramientas que ayuden a los desarrolladores a hacer mejor su trabajo y poner información al alcance de sus manos.

8. Vulnerable and Outdated Components

Short description:

Los componentes vulnerables y desactualizados son un riesgo. Los fallos en las dependencias pueden ser accidentales o intencionales. Para prevenir problemas, mantén un inventario de dependencias, escanea en busca de vulnerabilidades y ten un plan para solucionarlas. Los desarrolladores no pueden leer todo el código en las dependencias de manera realista. Ejemplos recientes destacan los peligros en NPM.

Genial, y luego el último que voy a cubrir de OASP es solo componentes vulnerables y desactualizados. Y este es solo pensar básicamente en tus dependencias, tus dependencias de NPM. Los fallos en tus dependencias pueden ser de dos tipos. Son accidentales, lo que significa que hubo un error de codificación que crea un error de seguridad en tu aplicación, o podrían ser intencionales. Y estamos viendo muchos más de los intencionales en los últimos años.

Así que eso sería como algo así como una puerta trasera o algún código intencionalmente malicioso. Y voy a mostrarte algunos ejemplos aquí en un minuto que son, que podrían hacer que tus ojos se abran. Así que la forma de prevenir estos es que debes tener un inventario de qué dependencias estás usando.

Necesitas recopilar esta información de alguna manera. Obviamente, Socket puede ayudarte a hacer esto, pero necesitas saber qué estás usando y luego necesitas escanear ese inventario y entender cuáles de esas dependencias son vulnerables y cuáles son maliciosas, y necesitas tener algún plan para solucionar eso. Ahora, ups, presioné el botón equivocado. Bien, sí, solo para hacer esto realmente concreto, porque muchas veces cuando hablamos de seguridad de dependencias, puede ser realmente abstracto.

9. Vulnerabilities in Dependencies

Short description:

Los desarrolladores no pueden esperar leer cada línea de código en sus dependencias. Ejemplos recientes destacan los peligros en NPM. Un paquete envía claves API a un atacante, otro exfiltra datos a través de Discord, y un tercero descarga un virus. La ofuscación hace que la detección sea un desafío.

Así que solo voy a mostrarte algo que detectamos en las últimas semanas en Socket. Este es un código que se agregó a una dependencia, y solo voy a resaltar algunas partes para ti. Como puedes ver en la primera línea, estamos adquiriendo HTTPS para hacer una llamada de red. En la segunda línea, estamos obteniendo las variables de entorno, que son todas tus claves API, tus tokens, y luego en la tercera línea, este código las está enviando a este dominio que ha sido ofuscado aquí. Básicamente, si ejecutas esta dependencia, todas tus claves API se envían a un atacante tan pronto como ejecutas el paquete, buen trabajo.

Así que el problema fundamental aquí es que no se puede esperar que los desarrolladores lean cada línea de código en sus dependencias. Como, ninguno de nosotros está haciendo esto, aunque sentimos que tal vez, algunos de nosotros sentimos que deberíamos. Y así, esto es un problema. Solo quiero mostrarte algunos ejemplos en las últimas semanas de algunas dependencias interesantes que hemos identificado que solo te dan una idea del tipo de peligro que está ahí fuera en NPM si no tienes cuidado.

Así que este es uno divertido. Cuando instalas este paquete, hará curl a tu archivo de contraseñas a esa URL. Eso es agradable. Y esto es lo que nuestro herramienta, Socket, devolverá cuando analices este paquete. Te dirá que va a exfiltrar tus datos como ves allí. Pero usualmente no es tan simple. Usualmente es un poco más complicado. Así que aquí hay otro ejemplo de algo que detectamos recientemente. Esto es divertido. ¿Qué hace esto? Bueno, resulta que, a pesar de sus intentos de ofuscar el código, hay en realidad algunas cadenas aquí que son un poco sospechosas. Download.exe, eso no suena bien. Discord. No sé cuántos de ustedes usan Discord, pero déjenme decirles, si están usando un paquete y no tiene nada que ver con Discord y la cadena Discord aparece en el paquete, probablemente no es lo que quieres. Vemos a muchos atacantes básicamente robando datos y enviándolos a canales de Discord donde se reúnen. Así que usan la API de Discord para exfiltrar los datos. Y de todos modos, esto aquí, como puedes ver, está descargando un archivo ejecutable, ejecutándolo y luego es básicamente un virus que va a ejecutarse en tu máquina. Y luego te mostraré otro ejemplo aquí. Este es un nivel más profundo de ofuscación. Este realmente fue fascinante para mí cuando llegó. Así que este es un paquete donde miras esto, no parece tan raro, pero señalaré una cosa que es un poco interesante. Así que está haciendo HTTP y luego referenciando el resultado de esta función tipo.

10. Hidden Code in Type Function

Short description:

La función type tiene código oculto que construye una solicitud HTTP para eludir la detección. Nuestra herramienta lo detectó y encontró que variables de entorno sensibles están siendo enviadas a un atacante malicioso.

Y al principio pensé, ¿qué está haciendo? Quiero decir, eso parece realmente extraño. Así que miré la función type y la función type es realmente extraña. Tiene estos comentarios aleatorios como West, question, e Ireland. Así que lo rastreé y me llevó un tiempo. Pero básicamente lo que está haciendo es llamar a PropGetter con el primer número allí, cero. Eso llama a PropValue, pasando la función PropGetter. Así que es una función que se pasa a sí misma a PropValue. Y luego pasa a través del número. Y luego PropValue elimina las líneas de comentarios y luego extrae las palabras, West, question, e Ireland. Y luego usa estos índices para cortar caracteres de las palabras. Y entonces lo que está haciendo es que ves 2 a 4 es ST, y luego 0 a 3 es QUE, y 1 a 3 es RE. Y luego toma esos y los invierte y los une. ¿Y qué hace eso? ¿Alguien puede adivinar qué es eso? Request. Así que está formando la cadena request. Y básicamente está llamando a una solicitud HTTP. Todo eso solo para ocultar el hecho de que está haciendo una solicitud HTTP. Así que esto es para eludir algunas herramientas que están buscando este patrón específico. Y es bastante aterrador. Pero nuestra herramienta lo detectó. Así que escribió este buen resumen. Esto es generado por LLM. Esto es usando IA, para escribir estos resúmenes. Y descubrió que está enviando variables de entorno sensibles a un atacante malicioso. Así que sí.

11. Motivation from NPM Attack Incident

Short description:

Esta es la historia de un interesante ataque a NPM en 2017 que motivó al orador a iniciar Socket como empresa. Dominic Tarr, un prolífico autor temprano de NPM, tenía un paquete que no estaba bien mantenido. Un voluntario solicitó convertirse en mantenedor, y Dominic le cedió la propiedad. El paquete tenía un número significativo de descargas cada semana.

Así que me estoy quedando sin tiempo aquí. ¿Puedo pasarme un poco? ¿O tenemos un límite estricto aquí? ¿Pasarme? De acuerdo. La audiencia ha hablado. Sin embargo, no quiero afectar la transmisión. Está bien. De acuerdo. Genial. Increíble. Así que tal vez cuente una historia más aquí. Este es un incidente de 2017 que creo que es uno de los ataques más interesantes a NPM. Y es... Me gusta porque es lo que realmente me motivó a querer iniciar Socket como empresa. Así que lo contaré porque creo que es realmente interesante.

Hay un mantenedor llamado Dominic Tarr. Fue un prolífico autor temprano de NPM. Publicó más de 500 paquetes, de hecho. Y muchos de ellos no estaban tan bien mantenidos, porque era tan prolífico. Y uno de sus paquetes recibió una solicitud de función. No es tan raro. Esto sucede todo el tiempo. Y entonces... Y luego un mantenedor se ofreció... Lo siento. Básicamente, un voluntario se ofreció y dijo, oye, sabes, realmente no estás aceptando ningún PR en los últimos dos años. ¿Puedo ser mantenedor de este proyecto? Y Dominic dijo, claro. Ni siquiera estoy trabajando en esto más. Puedes quedarte con el paquete. Y le cedió la propiedad a esta persona al azar que le envió un correo electrónico. Esto tenía, como, 600,000 descargas cada semana. Así que era realmente popular.

12. NPM Attack and Cryptocurrency Theft

Short description:

Una advertencia de deprecación en una biblioteca llevó al descubrimiento de un fragmento de código que contenía código encriptado. El código fue desencriptado usando el campo de descripción en la aplicación de nivel superior. Este paquete fue diseñado específicamente para atacar una aplicación de Electron y robar criptomonedas de sus usuarios.

Y lo que sucedió fue que... Pasó como un mes, y luego alguien notó una advertencia de deprecación que comenzaba a imprimirse por esta biblioteca. Y lo rastrearon hasta esta función, que estaba deprecada en Node. Y este fragmento de código que fue añadido al paquete. Ahora, todo esto está minificado. Es difícil ver lo que está haciendo. Pero si lo desminificas, puedes ver que hay... Hay como una carga útil de código encriptado que se está desencriptando usando una cadena. Y la cadena que está usando es el campo de descripción en la aplicación de nivel superior. Eso es lo que se está usando para desencriptar esta cadena y luego ejecutar esa cadena. Y lo que eso significa es que cuando este paquete se ejecuta dentro de una aplicación específica, esta aplicación aquí esa cadena, una billetera de Bitcoin segura, se usaría para desencriptar ese código y luego ejecutar ese código. Pero en las aplicaciones de todos los demás, tu aplicación, mi aplicación, todas nuestras diferentes aplicaciones, eso fallaría al desencriptar, porque no es esa cadena. Y así, esto solo estaba atacando esta aplicación de Electron. Y en las aplicaciones de todos los demás, no haría nada. Así que fue muy sigiloso, nadie realmente lo notó. Este módulo se integró en su producto, se envió a todos sus usuarios, y comenzó a robar criptomonedas de las personas. Directamente de la billetera. Así que realmente fue un desastre.

13. Challenges in JavaScript Security

Short description:

Los paquetes maliciosos tardan mucho tiempo en ser descubiertos y pueden permanecer sin ser detectados durante más de 400 días. Las herramientas actuales para la seguridad de JavaScript son inadecuadas y generan demasiadas alertas falsas. También fallan en detectar los peores ataques. El riesgo del código abierto se extiende más allá de las vulnerabilidades a la calidad del paquete, mantenimiento, estabilidad y fiabilidad. La seguridad en JavaScript es desafiante por varias razones, por lo que se debe priorizar la seguridad en las primeras etapas del diseño.

Así que, como pueden ver aquí, finalmente lo descubrieron. Esta fue la respuesta de Dominic, con la cual simpatizo totalmente. Básicamente dijo, mira, este tipo me envió un correo electrónico, quería mantenerlo, se lo di. No obtengo nada de mantener esto, ni siquiera lo uso, no lo he usado durante años, así que eso fue lo que hice. Así que eso es lo que puede pasar. Entonces, los paquetes maliciosos, realmente le toma mucho tiempo a la comunidad encontrarlos hoy en día. 209 días hasta que se descubren los paquetes. Y el 20% de estos duran más de 400 días. Así que estamos encontrando alrededor de cien de estos tipos de ataques cada semana con el escáner que hemos desarrollado. Así que es bastante.

Así que sí, creo que básicamente, ya sabes, la seguridad es, la seguridad de JavaScript es muy, muy difícil. Y una gran razón es que las herramientas que estamos usando simplemente no están diseñadas para detectar este tipo de cosas, y sin embargo nos están ahogando en alertas. Así que tenemos a muchas personas que simplemente, ya sabes, miran NPM audit, ven esto, ¿cuántos de ustedes han visto la salida de NPM audit y simplemente han dicho lo que sea? Como que no me importa, ¿verdad? Todos hacemos eso. Ya sabes, hay esta cosa famosa de Dan Abramov donde llamó a NPM audit una mancha en todo el ecosistema de NPM porque la forma en que fue diseñado está rota, y estoy totalmente de acuerdo con él. Creo que el problema con estos tipos de escáneres es doble. Uno, nos envían demasiadas alertas, más del 80% son falsos positivos o no son problemas reales. Y muchas veces el código vulnerable ni siquiera se ejecuta. O hay problemas en las dependencias de los desarrolladores que tampoco se ejecutarán en producción. Así que un problema es que es solo ruido. Y el otro problema es que ni siquiera detectan los peores ataques reales. No detectan las cosas que acabamos de repasar juntos, esos ejemplos de código malicioso. Ni siquiera tienen un mecanismo para encontrar eso. Así que todo el asunto está un poco desordenado, en mi opinión. La imagen del riesgo del código abierto es en realidad muy amplia y no se trata solo de vulnerabilidades. En realidad se trata de todos estos otros aspectos de si un paquete es bueno, si un paquete está mantenido, si es estable, si es fiable, y así sucesivamente.

Así que sí, en interés del tiempo, voy a adelantarme porque estoy yendo un poco más allá aquí. Pero solo terminaría con que la seguridad de JavaScript es difícil por un montón de razones. Y mi consejo final para ustedes es pensar en la seguridad desde el principio en su diseño. Tengan conversaciones al respecto. Cuanto antes puedan detectar problemas, les ahorrará mucho más tiempo que intentar añadirlo más tarde.

14. Best Practices for JavaScript Security

Short description:

Utiliza frameworks y bibliotecas para tareas sensibles a la seguridad, estudia el OWASP top 10 y comprende tus dependencias de código abierto. Usa herramientas modernas para escanear dependencias y asegura una experiencia positiva para el desarrollador. Gracias por tu tiempo y mantente seguro.

Utiliza frameworks y bibliotecas para cualquier cosa que sea sensible a la seguridad o asegúrate de que realmente sabes lo que estás haciendo. Sugiero cualquier cosa con auth o crypto o código de escape, cosas así. Usa una biblioteca. Y asegúrate de estudiar el OWASP top 10. Son solo 10 vulnerabilidades. Como, puedes leerlo en una hora y simplemente entender que las 10 principales vulnerabilidades web, serás un desarrollador mucho mejor si puedes entender las 10 principales. Y también, a medida que estas cambian con los años, estarás por encima de tus compañeros y podrás ayudarlos a mejorar.

Y luego, ya sabes, asegúrate de entender tus dependencias de código abierto. Usa algún tipo de herramienta moderna para escanearlas. Y asegúrate de que lo que sea que estés haciendo en tu empresa no esté destruyendo completamente la experiencia del desarrollador y haciendo que no sea divertido escribir código en tu empresa usando herramientas realmente malas que, ya sabes, te van a ralentizar. Así que, ese es mi consejo para ti. Gracias por tu tiempo y mantente seguro. Gracias.

Bien. Quiero decir, están llegando. Así que, voy a esperar hasta que se llene un poco más. Así que, comenzaste esto en 2017. 2020, en realidad. Bien. Pensé que tú... Bien. 2020. Fue cuando tuve la idea. Fue ese ataque de 2017, pero en realidad me tomó unos años para comenzar. Así que, te inspiraste en 2017, podría decir. Sí, exactamente. En tus viajes desde 2017 y especialmente desde 2020, ¿miras hacia atrás a un pre-2017, sabes, algunos momentos en los que piensas, oh, probablemente hice esto mal y hice aquello mal o algo así? ¿Tienes algún tipo de recuerdos? Sí. Eso es interesante. Creo que lo más importante es que siempre me importaron mis dependencias, probablemente más que a la mayoría de las personas. Siempre abría mi carpeta de Node modules y la miraba y pensaba, ¿qué es todo esto? Así que creo que probablemente soy raro en ese sentido.

15. The Hazards of Installing Unverified Code

Short description:

Instalar código aleatorio de internet sin verificación es una práctica común, pero en realidad es una locura. Aunque la mayoría del código funciona bien, hay algunas excepciones que pueden causar problemas. Dependabot sirve como una buena base, pero carece de detección avanzada de ataques a la cadena de suministro de software. Se centra principalmente en vulnerabilidades y puede pasar por alto paquetes secuestrados con malware añadido. Para abordar esto, analizamos cada dependencia, examinando el código y el comportamiento usando IA. Tuvimos un cliente que usó Dependabot y Socket, donde Socket detectó un PR como malicioso que Dependabot no detectó, provocando una batalla de bots.

Pero creo que lo que me asombra de la forma en que todos hacemos las cosas, y ciertamente cómo lo hacía antes de involucrarme realmente en este tema, es que todos simplemente instalamos código aleatorio de internet que no leímos. Y simplemente lo ejecutamos. ¿Y funciona en su mayoría? ¿Qué tan loco es eso? Descargas cosas aleatorias que ni siquiera verificaste, es código ejecutable, y luego simplemente lo ejecutas. Es realmente una locura. Es simplemente una locura que hagamos eso constantemente. Y en su mayoría está bien. Solo hay unas pocas excepciones que lo arruinan para todos, pero la mayoría de las personas son buenas.

Bien. Tengo una pregunta muy popular aquí. Socket versus Dependabot. Quiero decir, realmente no hay comparación. Esto es... Puedo hablar de eso, sí. Probablemente estén pensando en cómo se comparan. Sí, eso es lo que estoy pensando. Sí, sí. Entonces, Dependabot es una especie de buena base. Lo que no hace es ningún tipo de detección avanzada de ataques a la cadena de suministro de software que cubrimos. Entonces, si tienes una dependencia que ha sido comprometida, que tiene malware, que va a robar tus claves y ese tipo de cosas, Dependabot realmente no tiene un mecanismo para detectar eso. Tiene menos cobertura. Y parte de la razón de eso es que, no estoy criticándolos, pero ellos y todas las otras herramientas que vinieron antes, incluyendo NPM Audit y todo lo demás, están muy enfocadas en vulnerabilidades. Y hemos dicho, mira, las vulnerabilidades son importantes, pero el problema es, como dije, hay demasiadas. Hay mucho con lo que la gente tiene que lidiar. Y además de eso, están perdiendo los ataques más aterradores. Como si tienes un paquete que has estado usando y ha sido secuestrado por alguien y se ha añadido malware y lo actualizas, Dependabot y todo lo demás realmente no pueden detectar eso. Así que, en realidad, lo que hacemos es, cada dependencia, la descargamos, abrimos el tarball, miramos dentro, miramos todo el código, averiguamos qué está haciendo. Incluso usamos IA para revisar cada línea de ese código y preguntarle, ¿qué está haciendo este código, a dónde va, y luego hacemos una determinación sobre el comportamiento del paquete. Así que, en realidad, tuvimos un cliente una vez que estaba usando Dependabot y Socket juntos y un PR fue abierto por Dependabot y decía, actualiza a esta nueva versión. Y luego Socket entra un minuto después y deja un comentario justo debajo del Dependabot y dice, espera un minuto, no fusiones este PR, en realidad es malicioso. Y así fue la batalla de los bots.

QnA

The Impact of AI on Security

Short description:

La IA tendrá un gran impacto en la seguridad. La última iteración de LLMs permite el análisis y puede usarse como una fuerza laboral gratuita para automatizar tareas como escanear módulos Node en busca de posibles problemas. Sin embargo, existen riesgos al usar IA, ya que puede recomendar dependencias inseguras basadas en código obsoleto o popular pero vulnerable. Se necesitan capas adicionales de verificaciones de cordura. Socket aborda el problema del ruido en las alertas de seguridad al centrarse en los problemas más graves.

Fue bastante divertido.

Bien. Hablando de IA, acabas de mencionar, una pregunta aquí de Roger. ¿Qué piensas del impacto que tiene la IA en el campo de la seguridad? Quiero decir, va a tener un gran impacto. Creo que, ya sabes, por supuesto, hay mucho bombo en este espacio y durante la mayor parte de los últimos 10, 15, 20 años, cada vez que alguien ha dicho IA y seguridad, siempre ha sido humo y espejos y completamente exagerado y nunca real. Pero creo que eso está cambiando con la última iteración de LLMs. Ya sabes, hay todas las cosas obvias, la gente construyendo chatbots y cosas así, como, oh, puedes hablar con tu, ya sabes, repositorio y cosas así. Eso es interesante, pero creo que la verdadera pieza subestimada de los LLMs es que realmente pueden hacer, como, análisis. Así que pienso en ellos como, hoy están al nivel de un estudiante universitario, tal vez, ya sabes, tal vez un poco mejor, tal vez un poco peor. Pero puedes pensar en ellos como, como una fuerza laboral gratuita para enviar a hacer tu voluntad. Y para lo que lo usamos es, ya sabes, ninguno de nosotros está leyendo nuestra carpeta de módulos Node, Así que simplemente dejemos que los bots lean la carpeta de módulos Node y busquen cosas. Básicamente, esa es la forma de pensarlo. Es un ejército masivo de, como, trabajadores robot de bajo costo que simplemente pueden ir y hacer nuestra voluntad por nosotros. Y así, esa es, como, la única forma en que realmente, realmente está ayudando. El otro gran impacto que está teniendo es en todas estas herramientas de copilot que estamos usando para escribir código. Diría que el mayor riesgo al usarlas hoy es que han sido entrenadas en mucho código vulnerable, como todo en Stack Overflow y, ya sabes, estos viejos blogs. Y así estamos viendo casos donde, ya sabes, la IA está recomendando que instales dependencias que no son seguras en absoluto, como que no se han actualizado en cinco años. Simplemente son populares. Simplemente son populares, o eran populares hace cinco años en el blog en el que la IA fue entrenada. Sí. O incluso hemos visto casos donde alucina nombres de paquetes que no existen.

Así que estas son todas diferentes fuentes de riesgo al usar IA, donde queremos tener, como, al menos otra capa para verificar lo que está generando. Bien. Estamos 30 segundos por encima, pero quiero hacer esta última pregunta porque siento que fue una buena. ¿Cómo deberíamos... Oh, no, no, no. ¿Qué pasó con eso? Bien. ¿Qué está haciendo Socket para abordar el problema del ruido en las alertas de seguridad? Es una gran pregunta.

Addressing the Noise Problem

Short description:

Enfocarse en las vulnerabilidades más severas y priorizar los ataques a la cadena de suministro y los paquetes maliciosos puede ayudar a abordar el problema del ruido en las alertas de seguridad.

Creo que lo primero es simplemente enfocarse en las cosas que son más severas. Así que si, ya sabes, miras las cosas de las que estábamos hablando en esta presentación, casi todas esas cosas van a ser más altas que la, como, vulnerabilidad más alta. Me gusta pensar en ello como, ya sabes, una vulnerabilidad es como dejar tu puerta principal sin llave. Así que probablemente no sea una gran idea hacer eso para siempre, pero puedes hacerlo por un mes y estar bien, ya sabes. Si alguien no está probando tu puerta principal, vas a estar bien. Eso es lo que es una vulnerabilidad.

Mientras que un ataque a la cadena de suministro o un paquete malicioso, eso es como alguien irrumpiendo en tu puerta principal, ¿verdad? Y así, la mejor manera de abordar el problema del ruido es simplemente priorizar esos correctamente y decir, me voy a enfocar en las cosas más importantes primero. Y voy a despriorizar todo lo demás.

Genial. Genial. Muchas gracias. Hubo muchas preguntas. Así que voy a decir esto. Si quieres seguir en contacto con Frost, por favor, creo que va a, ya sabes, la sección de preguntas y respuestas en la sala junto al otro área en esa especie de estructura de vidrio.

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.