¡Ejecuto Código de Internet!

Rate this content
Bookmark

¿Es prudente ejecutar código de extraños? Bueno, lo hacemos todo el tiempo y no hay vuelta atrás.

Echemos un vistazo a cómo un proyecto JavaScript podría ser hackeado y luego defenderse de los ataques de la cadena de suministro.


¿Limitar el acceso a globales para cada paquete? Claro. ¿Controlar si un paquete puede acceder a la red o al sistema de archivos? Sí, eso también. Y no más scripts de instalación o contaminación de prototipos.

FAQ

Los paquetes npm son archivos tar.gz que se descargan de internet y se integran en aplicaciones sin una revisión detallada, lo que puede introducir código malicioso sin que el usuario sea consciente.

Puedes utilizar 'npm audit' o herramientas que analizan informes CVE para detectar paquetes maliciosos en tus dependencias.

SocketDev es una herramienta que analiza automáticamente paquetes npm y ofrece recomendaciones sobre posibles problemas poco después de su publicación, ayudando a identificar paquetes riesgosos rápidamente.

Lavamote genera una política de seguridad durante la ejecución del proceso de construcción y asegura que esta política se aplique, limitando las acciones que cada paquete puede realizar según lo establecido en la política.

JavaScript Endurecido es un conjunto de medidas de seguridad que incluye el bloqueo, que elimina la flexibilidad de manipular objetos JavaScript, y el endurecimiento, que protege objetos específicos de manipulaciones no autorizadas.

El plugin de webpack de Lavamote permite integrar las políticas de seguridad de Lavamote en el proceso de empaquetado de aplicaciones, ayudando a proteger contra código malicioso en tiempo de construcción y ejecución.

Puedes participar en la beta de Lavamote contactando a través del canal de beta proporcionado. Durante la beta, recibirás soporte limitado y gratuito para configurar y resolver problemas con Lavamote en tu proyecto.

Zbyszek Tenerowicz
Zbyszek Tenerowicz
20 min
23 Oct, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Los paquetes npm son entradas no sanitizadas de internet que ejecutamos sin mucho escrutinio, por lo que necesitamos abordar el problema de los paquetes maliciosos. Lavamote ofrece protecciones de tiempo de ejecución proactivas para detectar y mitigar amenazas automáticamente. Lava Mode utiliza JavaScript endurecido para proporcionar aislamiento y hacer cumplir una política para el proceso de construcción de su aplicación. La charla introduce un plugin de webpack para aquellos que no quieren usar el ecosistema de browserify. Se explora el comportamiento de Lavamote, mostrando cómo restringe el acceso del paquete a ciertas propiedades. La prueba beta está abierta para recopilar comentarios y mejorar Lava Mode.

Available in English: I Run Code From the Internet!

1. Introducción a los paquetes npm

Short description:

Imagina que te doy un poco de código JavaScript y te pido que lo ejecutes en tu aplicación. ¿Lo harías sin verificarlo? Probablemente no. Pero si ofreciera ponerlo en un archivo tar.gz, algunas personas estarían más dispuestas. Eso es porque los paquetes npm son solo archivos tar.gz que extraes de internet e instalas en tu aplicación. Sin embargo, debemos reconocer que estos son entradas no saneadas de internet que ejecutamos sin mucho escrutinio. Este es el tema que discutiremos hoy.

🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐜🐟🐟🐜🐟🐜🐟🐜🐟🐜🐟🐟🐜🐟🐜🐟🐜🐜🐟🐜🐟🐜🐟🐜🐟🐜🐟🐜🐟🐜🐟🐜🐟🐜🐟🐜🐟🐜🐟🐜🐟 Bueno, imagina que te doy un poco de texto y te digo que es JavaScript, que hace algo, solo ponlo en tu aplicación y ejecútalo. ¿Lo pondrías en tu aplicación y lo ejecutarías en producción para tus usuarios? Bueno, he hecho esto antes, he hecho esta pregunta y nadie quiere ejecutar mi código sin verificar qué es, pero si ofreciera ponerlo en un archivo tar.gz, ¿eso ayudaría? Y ahora, algunas personas de repente están más dispuestas a ejecutar mi código. ¿Por qué es eso? Bueno, eso es porque los paquetes npm son solo archivos tar.gz que extraes de internet, no lees su contenido y los pones en tu aplicación. Y no me malinterpretes, esto es genial, uso paquetes npm todo el tiempo, pero tenemos que admitir que estas son entradas no saneadas de internet que pones en tu aplicación y ejecutas sin mucho escrutinio, ¿verdad? Así que esto es de lo que vamos a hablar hoy.

2. Lidiando con Paquetes npm Maliciosos

Short description:

Necesitamos abordar el problema de los paquetes npm maliciosos. Herramientas reactivas como npm audit y SocketDev pueden ayudar a identificar paquetes potencialmente maliciosos, pero requieren una revisión manual. Alternativamente, Lavamote ofrece protecciones de tiempo de ejecución proactivas para tu aplicación. Imagina un escenario en el que un desarrollador instala una herramienta de construcción, y un hacker malicioso inserta código en una dependencia. Este código puede comprometer información sensible. Para mitigar este riesgo, necesitamos una aplicación que pueda detectar automáticamente estas amenazas.

Sabes, estamos instalando paquetes npm, estamos instalando muchos de ellos. Pero, ¿qué pasa si algunos de ellos no son buenos? Y con no buenos, no me refiero a paquetes malos, he publicado un montón de paquetes malos en mi tiempo. No pasó nada malo, pero me refiero a paquetes realmente maliciosos. Esta masterclass va a ser estrictamente sobre paquetes maliciosos.

¿Cómo manejamos esa situación? Bueno, hay herramientas que yo llamo herramientas reactivas. Puedes usar npm audit o cualquier cosa que pase por informes CVE, etc., y te dice que, hey, este paquete en tus dependencias que ha estado en producción durante dos meses, alguien lo revisó y encontró un problema con él. Ese paquete es realmente malicioso. ¿Es eso suficientemente bueno? Probablemente no. Luego está SocketDev. SocketDev es esta nueva cosa donde ellos usan varias formas de analizar los paquetes automáticamente y vienen con sugerencias de que, hey, este paquete, parece que algo anda mal con él. Deberías buscarlo, deberías revisar qué está haciendo este paquete. Parece arriesgado. Así que SocketDev puede decirte eso incluso horas después de que el paquete ha sido publicado, porque ya está analizado. Eso es una gran mejora. Aunque tienes que hacer la revisión tú mismo. ¿Tienes tiempo para eso? Bueno, ahora tienes que tenerlo. ¿Cuáles son las otras opciones? Bueno, puedes ser proactivo en lugar de reactivo. Y aquí es donde entra Lavamote. Voy a contarte sobre Lavamote. Lavamote es un conjunto de herramientas que juntas proporcionan protecciones para tu aplicación. Pero esas protecciones ocurren en runtime en lugar de cuando estás buscando paquetes que deseas instalar. ¿De acuerdo? Entonces, ¿cómo funciona? Bueno, vamos a repasar los conceptos básicos aquí. Así que imagina a este tipo desarrollador. Quiere instalar una herramienta de construcción para la aplicación. Lo que sucede es que una de las dependencias de desarrollo de su aplicación, en algún lugar del árbol de dependencias de esta herramienta de construcción está controlada por un hacker malicioso representado por un sombrero negro y una sudadera con capucha, obviamente. Y lo que hace el hacker, ponen un poco de código en un paquete existente que ya se confiaba en él. Ese código toma tu token de GitHub y lo envía a algún lugar. ¿Es eso agradable? Eso no es agradable. ¿Lo detectarías? Bueno, es poco probable que leas todo lo que pones en tus dependencias. Así que en su lugar, usemos una aplicación para eso.

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

No resuelvas problemas, elimínalos
React Advanced Conference 2021React Advanced Conference 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Los humanos son solucionadores de problemas naturales y somos lo suficientemente buenos en eso que hemos sobrevivido a lo largo de los siglos y nos hemos convertido en la especie dominante del planeta. Debido a que somos tan buenos en eso, a veces también nos convertimos en buscadores de problemas, buscando problemas que podemos resolver. Aquellos que logran sus objetivos de la manera más exitosa son los eliminadores de problemas. Hablemos de la distinción entre resolver y eliminar problemas con ejemplos de dentro y fuera del mundo de la codificación.
Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
¿Tienes un producto grande construido por muchos equipos? ¿Estás luchando para lanzar a menudo? ¿Se convirtió tu frontend en un monolito inmantenible masivo? Si, como yo, has respondido sí a cualquiera de esas preguntas, ¡esta charla es para ti! Te mostraré exactamente cómo puedes construir una arquitectura de micro frontend con Remix para resolver esos desafíos.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
Remix es un marco de trabajo web que te ofrece el modelo mental simple de una aplicación de múltiples páginas (MPA) pero el poder y las capacidades de una aplicación de una sola página (SPA). Uno de los grandes desafíos de las SPA es la gestión de la red que resulta en una gran cantidad de indirecciones y código defectuoso. Esto es especialmente notable en el estado de la aplicación que Remix elimina por completo, pero también es un problema en los componentes individuales que se comunican con un punto final de backend de un solo propósito (como una búsqueda de combobox, por ejemplo).
En esta charla, Kent demostrará cómo Remix te permite construir componentes de interfaz de usuario complejos que están conectados a un backend de la manera más simple y poderosa que hayas visto. Dejándote tiempo para relajarte con tu familia o lo que sea que hagas para divertirte.
Los Átomos de Jotai Son Simplemente Funciones
React Day Berlin 2022React Day Berlin 2022
22 min
Los Átomos de Jotai Son Simplemente Funciones
Top Content
Jotai es una biblioteca de gestión de estado. La hemos estado desarrollando principalmente para React, pero conceptualmente no está vinculada a React. En esta charla, veremos cómo funcionan los átomos de Jotai y aprenderemos sobre el modelo mental que deberíamos tener. Los átomos son una abstracción agnóstica del marco para representar estados, y básicamente son solo funciones. Comprender la abstracción de átomo ayudará a diseñar e implementar estados en sus aplicaciones con Jotai
Haciendo JavaScript en WebAssembly Rápido
JSNation Live 2021JSNation Live 2021
29 min
Haciendo JavaScript en WebAssembly Rápido
Top Content
JavaScript en el navegador se ejecuta muchas veces más rápido de lo que lo hacía hace dos décadas. Y eso sucedió porque los proveedores de navegadores pasaron ese tiempo trabajando en intensivas optimizaciones de rendimiento en sus motores JavaScript.Debido a este trabajo de optimización, JavaScript ahora se está ejecutando en muchos lugares además del navegador. Pero todavía hay algunos entornos donde los motores JS no pueden aplicar esas optimizaciones de la manera correcta para hacer las cosas rápidas.Estamos trabajando para resolver esto, comenzando una nueva ola de trabajo de optimización de JavaScript. Estamos mejorando el rendimiento de JavaScript para entornos completamente diferentes, donde se aplican reglas diferentes. Y esto es posible gracias a WebAssembly. En esta charla, explicaré cómo funciona todo esto y qué vendrá a continuación.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Como desarrolladores, pasamos gran parte de nuestro tiempo depurando aplicaciones, a menudo código que ni siquiera escribimos. Lamentablemente, a pocos desarrolladores se les ha enseñado cómo abordar la depuración, es algo que la mayoría de nosotros aprendemos a través de la experiencia dolorosa. La buena noticia es que _puedes_ aprender a depurar de manera efectiva, y hay varias técnicas y herramientas clave que puedes usar para depurar aplicaciones de JS y React.

Workshops on related topic

React, TypeScript y TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Masterclass Web3 - Construyendo Tu Primer Dapp
React Advanced Conference 2021React Advanced Conference 2021
145 min
Masterclass Web3 - Construyendo Tu Primer Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
En esta masterclass, aprenderás cómo construir tu primer dapp de pila completa en la blockchain de Ethereum, leyendo y escribiendo datos en la red, y conectando una aplicación de front end al contrato que has desplegado. Al final de la masterclass, entenderás cómo configurar un entorno de desarrollo de pila completa, ejecutar un nodo local e interactuar con cualquier contrato inteligente usando React, HardHat y Ethers.js.
Fundamentos de Remix
React Summit 2022React Summit 2022
136 min
Fundamentos de Remix
Top Content
Featured WorkshopFree
Kent C. Dodds
Kent C. Dodds
Construir aplicaciones web modernas está lleno de complejidad. Y eso solo si te molestas en lidiar con los problemas
¿Cansado de conectar onSubmit a las API del backend y asegurarte de que tu caché del lado del cliente se mantenga actualizada? ¿No sería genial poder utilizar la naturaleza global de CSS en tu beneficio, en lugar de buscar herramientas o convenciones para evitarla o trabajar alrededor de ella? ¿Y qué te parecería tener diseños anidados con una gestión de datos inteligente y optimizada para el rendimiento que simplemente funciona™?
Remix resuelve algunos de estos problemas y elimina completamente el resto. Ni siquiera tienes que pensar en la gestión de la caché del servidor o en los conflictos del espacio de nombres global de CSS. No es que Remix tenga APIs para evitar estos problemas, simplemente no existen cuando estás usando Remix. Ah, y no necesitas ese enorme y complejo cliente graphql cuando estás usando Remix. Ellos te tienen cubierto. ¿Listo para construir aplicaciones más rápidas de manera más rápida?
Al final de esta masterclass, sabrás cómo:- Crear Rutas de Remix- Estilizar aplicaciones de Remix- Cargar datos en los cargadores de Remix- Mutar datos con formularios y acciones
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Top Content
Featured WorkshopFree
Mikhail Kuznetcov
Mikhail Kuznetcov
Vue3 fue lanzado a mediados de 2020. Además de muchas mejoras y optimizaciones, la principal característica que trae Vue3 es la API de Composición, una nueva forma de escribir y reutilizar código reactivo. Aprendamos más sobre cómo usar la API de Composición de manera eficiente.

Además de las características principales de Vue3, explicaremos ejemplos de cómo usar bibliotecas populares con Vue3.

Tabla de contenidos:
- Introducción a Vue3
- API de Composición
- Bibliotecas principales
- Ecosistema Vue3

Requisitos previos:
IDE de elección (Inellij o VSC) instalado
Nodejs + NPM
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
JSNation 2023JSNation 2023
174 min
Desarrollando Blogs Dinámicos con SvelteKit & Storyblok: Una Masterclass Práctica
Top Content
Featured WorkshopFree
Alba Silvente Fuentes
Roberto Butti
2 authors
Esta masterclass de SvelteKit explora la integración de servicios de terceros, como Storyblok, en un proyecto SvelteKit. Los participantes aprenderán cómo crear un proyecto SvelteKit, aprovechar los componentes de Svelte y conectarse a APIs externas. La masterclass cubre conceptos importantes incluyendo SSR, CSR, generación de sitios estáticos y despliegue de la aplicación usando adaptadores. Al final de la masterclass, los asistentes tendrán una sólida comprensión de la construcción de aplicaciones SvelteKit con integraciones de API y estarán preparados para el despliegue.
De vuelta a las raíces con Remix
React Summit 2023React Summit 2023
106 min
De vuelta a las raíces con Remix
Featured Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
La web moderna sería diferente sin aplicaciones ricas del lado del cliente respaldadas por potentes frameworks: React, Angular, Vue, Lit y muchos otros. Estos frameworks se basan en JavaScript del lado del cliente, que es su núcleo. Sin embargo, existen otros enfoques para el renderizado. Uno de ellos (bastante antiguo, por cierto) es el renderizado del lado del servidor completamente sin JavaScript. Descubramos si esta es una buena idea y cómo Remix puede ayudarnos con ello?
Prerrequisitos- Buen entendimiento de JavaScript o TypeScript- Sería útil tener experiencia con React, Redux, Node.js y escribir aplicaciones FrontEnd y BackEnd- Preinstalar Node.js, npm- Preferimos usar VSCode, pero también se pueden utilizar IDE en la nube como codesandbox (otros IDE también están bien)