El Lado Oscuro del Open Source

Rate this content
Bookmark

Únete a Feross, CEO de Socket, en un emocionante viaje al lado oscuro del software de código abierto. Acompáñanos mientras exploramos los riesgos invisibles que acechan en las dependencias de software cotidianas. Observa de primera mano cómo las soluciones impulsadas por IA, específicamente los modelos de lenguaje grandes, nos ayudan a combatir las dependencias maliciosas dentro del ecosistema npm. Equípate con el conocimiento y las herramientas para proteger tu base de código en esta batalla en constante evolución.

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

Feross Aboukhadijeh
Feross Aboukhadijeh
37 min
04 Apr, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla explora el lado oscuro del código abierto, centrándose en los ataques a la cadena de suministro y la necesidad de mejorar las medidas de seguridad. Destaca los peligros de cargar código externo y la importancia de mitigar los riesgos de la cadena de suministro. La charla también discute el uso de IA y LLMs en el análisis de código para mejorar la seguridad. Enfatiza los desafíos de mantener proyectos de código abierto mantenidos por IC y el futuro de la seguridad de la cadena de suministro. Por último, se mencionan las variaciones en las definiciones de código abierto y el empoderamiento de la comunidad de código abierto.
Available in English: The Dark Side of Open Source

1. The Dark Side of Open Source

Short description:

Bienvenidos a la charla sobre el lado oscuro del código abierto. Exploraremos el código malicioso y las amenazas en los ecosistemas de NPM y JavaScript. Tengo experiencia en código abierto y ciberseguridad, y ahora trabajo en seguridad de código abierto en Socket. Socket ayuda a los desarrolladores y equipos de seguridad a encontrar, auditar y gestionar software de código abierto. Hoy en día, más del 90% de las aplicaciones dependen de dependencias de código abierto, lo que hace que la seguridad de la cadena de suministro sea crucial. El ecosistema de código abierto está bajo ataque, con ataques a la cadena de suministro de software que afectan a empresas de todo tipo.

♪♪ ♪♪ Hola a todos. Soy Firas, y bienvenidos a esta charla sobre el lado oscuro del código abierto. Estoy muy emocionado de compartir con ustedes algunas de las partes menos exploradas del código abierto. Vamos a profundizar en algunos ejemplos de code malicioso y les daremos una idea de algunas de las amenazas que existen en los ecosistemas de NPM y JavaScript. Así que empecemos.

Primero, un poco sobre mí. Comencé en el código abierto. Trabajé en algunos paquetes bastante populares, incluyendo WebTorrent y StandardJS, y también fui miembro de la junta directiva de la Fundación Node.js. Así que realmente pude ver un aumento masivo en el uso de código abierto dentro de las empresas y en la community. Luego me centré más en la security. Enseñé el curso de web security en Stanford, y ahora estoy trabajando en seguridad de código abierto en Socket.

Muy rápido, solo unas palabras sobre Socket. Socket es una herramienta que ayuda a proteger tu code del de los demás, y ayudamos a los desarrolladores y a los equipos de security a enviar más rápido y pasar menos tiempo en el trabajo ocupado de la security ayudándoles a encontrar, auditar y gestionar software de código abierto de forma segura. Tenemos un montón de empresas que nos utilizan. Muchas de ellas son proyectos de código abierto, y hoy en día protegemos más de un cuarto de millón de repositorios. Así que estoy muy contento de haber podido ayudar a proteger a la community en este grado.

Bien, hablemos un poco sobre nuestras aplicaciones. En los últimos cinco años, la forma en que escribimos software ha cambiado mucho. Ha experimentado un cambio realmente masivo. Hoy en día es muy común ver aplicaciones en las que más del 90% del code proviene de dependencias de código abierto. Esto significa code que tus desarrolladores, tú sabes, tú y tus compañeros de equipo no escribieron. La dependencia promedio de código abierto en realidad tiene 79 dependencias transitorias. Así que en este mundo donde tu aplicación se basa en, ya sabes, miles de dependencias, la security del software no se trata solo de tu code. Se trata de cada pieza de code en la que dependes. Y en esta charla vamos a hablar de las dependencias de código abierto porque somos desarrolladores de JavaScript, pero, ya sabes, esto es en realidad un problema más amplio. Si piensas en el término cadena de suministro de software, eso incluye realmente todo el código de terceros en el que dependes, ya sean APIs, servicios en la cloud, e incluso dependencias como tu sistema operativo, realmente todas las partes y piezas que componen nuestro software es de lo que hablamos aquí cuando hablamos de security de la cadena de suministro. Y desafortunadamente, ya sabes, el ecosistema de código abierto está bajo ataque. Hemos visto un aumento en los ataques a la cadena de suministro de software en los últimos años. Hay titulares con bastante regularidad sobre diferentes violaciones y ataques, y estos ataques afectan a todo tipo de empresas. Ya sabes, realmente cualquier persona que dependa de código abierto, y sé que tú dependes de código abierto, en algún momento se verá afectada por uno de estos ataques solo por la scale de NPM.

2. Supply Chain Attacks and the Problem of Trust

Short description:

El hackeo de SolarWinds fue un sofisticado ataque a la cadena de suministro que comprometió a SolarWinds y afectó a miles de redes. Los paquetes de NPM, a menudo mantenidos por individuos o equipos pequeños, también pueden ser vulnerables a ataques a la cadena de suministro. Presentaré un ejemplo real de un ataque reciente que exfiltró variables de entorno. Como desarrolladores, confiamos en el código abierto, pero lleva demasiado tiempo detectar paquetes maliciosos y a menudo no se catalogan para futuras referencias.

¿Cuántos de ustedes han oído hablar del hackeo de SolarWinds? Fue una noticia bastante grande hace unos años. Fue un sofisticado ataque a la cadena de suministro que comprometió a un proveedor llamado SolarWinds, y la forma en que funcionó fue que un atacante agregó código malicioso a uno de los productos de software de SolarWinds, y lo hicieron básicamente ingresando a la red de SolarWinds y agregando su código de ataque al producto de SolarWinds. Y luego, aguas abajo de eso, pudieron ingresar a miles de redes de clientes de SolarWinds, incluidas agencias gubernamentales de EE. UU. y grandes corporaciones. Si bien es bastante difícil determinar los daños monetarios exactos de este ataque, los costos asociados con la investigación, la remediación y las medidas de ciberseguridad aumentadas como resultado de esto probablemente estuvieron en miles de millones de dólares. Eso es SolarWinds. Es una empresa que tiene un equipo de seguridad y mucho esfuerzo para defender sus productos. Ahora hablemos de los paquetes de NPM, que a menudo son mantenidos por individuos o pequeños equipos de voluntarios. A veces, la seguridad de la cadena de suministro de software puede ser algo abstracta, ¿verdad? Es como, ¿de qué estamos hablando aquí? Quería hacer esto realmente concreto para todos y mostrarles realmente cómo se ve un ataque a la cadena de suministro. Aquí hay un ejemplo real. Este es un ataque que detectamos hace unos días. Vamos a discutir, ¿qué está pasando aquí? Permítanme ayudarles un poco. Resaltaré algunas partes del código aquí. ¿Eso ayuda? Ahora, si miras esto, puedes ver que si un desarrollador instala este paquete, este código malicioso se ejecutará inmediatamente en un script de instalación y exfiltrará o robará sus variables de entorno, que pueden incluir, obviamente, secretos, tokens, claves, y luego lo enviará a un servidor controlado por el atacante. Puedes ver esas tres partes allí. Está adquiriendo el paquete de red, está accediendo a las variables de entorno y luego tiene esta solicitud de red obfuscada o oculta en esa tercera línea. Y así es como un ataque a la cadena de suministro de software puede llevar a una violación en una empresa.

Ahora, este paquete probablemente estaba dirigido a Airbnb, dado el nombre del paquete, pero honestamente no tenemos todos los detalles sobre cuál era el objetivo de este paquete, pero el nombre es muy sospechoso, solo diré eso. Y fundamentalmente, el problema aquí es que, como desarrolladores, estamos usando tantos paquetes, pero simplemente no tenemos tiempo para leer cada línea de código en nuestras dependencias. Siempre estamos confiando en otras personas fundamentalmente, y el código abierto se basa en la confianza. Y en su mayor parte, esta confianza está bien colocada. La mayoría de las personas son buenas. Pero hay algunas manzanas podridas. Y desafortunadamente, como comunidad, nos lleva un poco demasiado tiempo encontrar este tipo de paquetes maliciosos hoy en día. En este momento, estamos viendo más de 200 días para detectar un paquete malicioso como comunidad. Y así, ya sabes, esto es bastante malo. Esto es de un artículo de investigación publicado en 2021. Y el otro gran problema es que cuando encontramos estos paquetes maliciosos como comunidad, los informamos y los eliminan, pero a menudo no se catalogan ni se guardan de ninguna manera. No entran en los sistemas típicos de seguimiento de vulnerabilidades como la Base de Datos Nacional de Vulnerabilidades. Simplemente los eliminan y luego nadie sabe si han instalado ese paquete en el pasado.

QnA

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

Remix Flat Routes – Una Evolución en el Enrutamiento
Remix Conf Europe 2022Remix Conf Europe 2022
16 min
Remix Flat Routes – Una Evolución en el Enrutamiento
Top Content
Remix Flat Routes is a new convention that aims to make it easier to see and organize the routes in your app. It allows for the co-location of support files with routes, decreases refactor and redesign friction, and helps apps migrate to Remix. Flat Folders convention supports co-location and allows importing assets as relative imports. To migrate existing apps to Flat Routes, use the Remix Flat Routes package's migration tool.
Cómo hacer un juego web tú solo
JS GameDev Summit 2023JS GameDev Summit 2023
27 min
Cómo hacer un juego web tú solo
This talk guides you on how to make a web game by yourself, emphasizing the importance of focusing on tasks that interest you and outsourcing the rest. It suggests choosing a game engine that allows distribution on the web and aligns with your understanding and enjoyment. The talk also highlights the significance of finding fun in the creative process, managing scope, cutting features that don't align with the game's direction, and iterating to the finish line. It concludes by discussing the options for publishing the game on the web and leveraging unique web features.
Cómo Construir Tu Propio Proyecto de Código Abierto
React Advanced Conference 2022React Advanced Conference 2022
16 min
Cómo Construir Tu Propio Proyecto de Código Abierto
Hello my friend, in this talk, I wanna share with you how to build your own open source project. Building an open source software project can be challenging. I receive a lot of things randomly in a day, like thank you messages for making my life easier, which motivates me. To choose an open source project to work on, pick one you use every day. Your software is being used when people report issues and send pull requests.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
This Talk discusses atomic deployment for JavaScript and TypeScript, focusing on automated deployment processes, Git hooks, and using hard links to copy changes. The speaker demonstrates setting up a bare repository, configuring deployment variables, and using the post-receive hook to push changes to production. They also cover environment setup, branch configuration, and the build process. The Talk concludes with tips on real use cases, webhooks, and wrapping the deployment process.
Tu Ritmo con GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Tu Ritmo con GraphQL
The Talk discusses the value proposition of GraphQL and its ability to solve common pain points in API development. It highlights the importance of making informed decisions when choosing GraphQL clients, servers, and schema builders. The Talk also emphasizes the need to focus on the best developer experience in the present rather than seeking a perfect long-term solution. Additionally, it mentions the future of the Urkel GraphQL client and the reasons for dropping ReScript support. Overall, the Talk provides insights into the current state and future trends of GraphQL development.
Aplicaciones React (+Native) full-stack y seguras con tRPC.io
React Advanced Conference 2021React Advanced Conference 2021
6 min
Aplicaciones React (+Native) full-stack y seguras con tRPC.io
Top Content
Alex introduces tRPC, a toolkit for making end-to-end type-safe APIs easily, with auto-completion of API endpoints and inferred data from backend to frontend. tRPC works the same way in React Native and can be adopted incrementally. The example showcases backend communication with a database using queries and validators, with types inferred to the frontend and data retrieval done using Prisma ORM.

Workshops on related topic

Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Node.js: Aterrizando tu primera contribución de código abierto y cómo funciona el proyecto Node.js
Node Congress 2023Node Congress 2023
85 min
Node.js: Aterrizando tu primera contribución de código abierto y cómo funciona el proyecto Node.js
Workshop
 Claudio Wunder
Claudio Wunder
Esta masterclass tiene como objetivo brindarte un módulo introductorio sobre los aspectos generales del código abierto. Sigue a Claudio Wunder de la Fundación OpenJS para que te guíe sobre cómo funciona el modelo de gobierno de Node.js, cómo se toman decisiones de alto nivel y cómo hacer tu primera contribución. Al final de la masterclass, tendrás una comprensión general de todos los tipos de trabajo que hace el proyecto Node.js (desde la clasificación de errores hasta decidir los próximos 10 años de Node.js) y cómo puedes formar parte del panorama más amplio del ecosistema JavaScript.

Las siguientes tecnologías y habilidades suaves podrían ser necesarias:
- Comprensión básica de Git e interfaz de GitHub
- Conocimiento de inglés profesional/intermedio para la comunicación y para permitirte contribuir a la organización Node.js (ya que todas las contribuciones requieren comunicación dentro de los problemas y solicitudes de GitHub)
- La masterclass requiere que tengas una computadora (de lo contrario, se vuelve difícil colaborar, pero las tabletas también están bien) con una configuración de IDE, y recomendamos VS Code y recomendamos la extensión GitHub Pull Requests & Issues para colaborar con problemas y solicitudes directamente desde el IDE.

Se cubrirán los siguientes temas durante la masterclass:
- Un repaso de algunas características de la interfaz de GitHub, como los proyectos de GitHub y los problemas de GitHub
- Repasaremos los conceptos básicos del código abierto y seguiremos la Guía de código abierto
- Repasaremos Markdown
- Cubriremos el gobierno del código abierto y cómo funciona el proyecto Node.js y hablaremos sobre la Fundación OpenJS
- Incluyendo todas las formas en que uno puede contribuir al proyecto Node.js y cómo se pueden valorar sus contribuciones
- Durante esta masterclass, cubriremos problemas de nodejs/nodejs.dev, ya que la mayoría de ellos son de nivel básico y no requieren conocimientos profundos de C++ o de Node.js.
- Dicho esto, aún recomendamos a los asistentes entusiastas que deseen desafiarse a sí mismos a los "Good First Issues" de nodejs/node (repositorio principal) si lo desean.
- Permitiremos a cada asistente elegir un problema o trabajar junto con otros asistentes para abordar problemas juntos mediante la función de Pair Programming a través de la característica de VS Code Live Share
- También podemos hacer salas de descanso en Zoom para las personas que deseen colaborar juntas
- Claudio estará allí para brindar apoyo a todos los asistentes y, por supuesto, responder cualquier pregunta sobre problemas y desafíos técnicos que puedan enfrentar
- Las tecnologías utilizadas en nodejs/nodejs.dev son React/JSX, Markdown, MDX y Gatsby. (No se necesita ningún conocimiento de Gatsby, ya que la mayoría de los problemas son agnósticos a la plataforma)
- Al final de la masterclass, recopilaremos todos los colaboradores que hayan abierto con éxito una solicitud de extracción (incluso si es un borrador) y reconoceremos su participación en las redes sociales.
Managers Are From Mars, Devs Are From Venus
TechLead Conference 2024TechLead Conference 2024
111 min
Managers Are From Mars, Devs Are From Venus
Workshop
Mo Khazali
Mo Khazali
Una Guía para Desarrolladores sobre Cómo Comunicar, Convencer y Colaborar Efectivamente con los Stakeholders
Es una historia tan antigua como el tiempo: la colaboración entre desarrolladores y stakeholders de negocios ha sido durante mucho tiempo un desafío, con una falta de comunicación clara que a menudo deja a ambas partes frustradas. Los mejores desarrolladores pueden comprender profundamente las necesidades de sus contrapartes de negocios, comunicar efectivamente la estrategia técnica sin perder a la audiencia no técnica y convencer al negocio de tomar las decisiones correctas. Trabajando en una consultoría, he fallado y tenido éxito en arquitectar y “vender” visiones técnicas, aprendiendo muchas lecciones en el camino.Ya sea que trabajes en una empresa de productos, seas consultor/freelancer, o quieras aventurarte más allá de ser solo un desarrollador, la capacidad de convencer y comunicar claramente con los stakeholders puede diferenciarte en la industria tecnológica. Esto se vuelve aún más importante con el auge de GenAI y el mercado de desarrolladores cada vez más competitivo, ya que la resolución de problemas y la comunicación efectiva son clave para posicionarte.En esta masterclass, compartiré ejemplos del mundo real, tanto buenos como malos, y te guiaré a través de poner la teoría en práctica mediante dojos.
Cómo crear experiencias de edición que tu equipo amará
React Advanced Conference 2021React Advanced Conference 2021
168 min
Cómo crear experiencias de edición que tu equipo amará
Workshop
Lauren Etheridge
Knut Melvær
2 authors
El contenido es una parte crucial de lo que construyes en la web. Las tecnologías web modernas aportan mucho a la experiencia del desarrollador en términos de construir sitios impulsados por contenido, pero ¿cómo podemos mejorar las cosas para los editores y creadores de contenido? En este masterclass aprenderás cómo usar Sanity.io para abordar la modelización de contenido estructurado, y cómo construir, iterar y configurar tu propio CMS para unificar los modelos de datos con experiencias de edición eficientes y agradables. Está dirigido a desarrolladores web que desean ofrecer mejores experiencias de contenido para sus equipos de contenido y clientes.