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.

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
Esta charla presenta la nueva convención Flat Routes que probablemente será la predeterminada en una futura versión de Remix. Simplifica la convención existente y también te brinda nuevas capacidades.
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
Nunca ha sido tan fácil hacer tu propio juego web, pero sigue siendo extremadamente difícil. ¿Qué juego deberías hacer? ¿Qué motor deberías elegir? Vamos a discutir cómo responder a estos problemas y formas de aprovechar la plataforma única que es la web.
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
Todos usamos proyectos de código abierto todos los días, como paquetes de npm, editores, aplicaciones web e incluso sistemas operativos... ¿Alguna vez has pensado en construir uno propio? En esta charla, compartiré mi experiencia construyendo jest-preview, desde cuando era solo una idea vaga, hasta convertirse en una biblioteca ampliamente adoptada para ayudar a los ingenieros frontend a escribir pruebas más rápido. Compartiré contigo cómo encontrar una idea para un proyecto en el que trabajar, cuáles son los desafíos que debes superar como autor de un proyecto de código abierto, cómo administrar el tiempo de manera eficiente y cómo llamar la atención de los ingenieros de todo el mundo.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
Desplegar una aplicación no es un proceso fácil. Te encontrarás con muchos problemas y puntos de dolor que resolver para que funcione correctamente. Lo peor es: ahora que puedes desplegar tu aplicación en producción, ¿cómo no vas a poder desplegar también todas las ramas del proyecto para tener acceso a vistas previas en vivo? ¿Y poder hacer un revert rápido a pedido?Afortunadamente, el clásico conjunto de herramientas de DevOps tiene todo lo que necesitas para lograrlo sin comprometer tu salud mental. Al mezclar expertamente Git, herramientas de Unix y llamadas a API, y orquestar todo ello con JavaScript, dominarás el secreto de los despliegues atómicos seguros.No necesitarás depender de servicios comerciales: ¡conviértete en el maestro perfecto de las herramientas y netlifica tu aplicación desde casa!
Tu Ritmo con GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Tu Ritmo con GraphQL
Construir con GraphQL por primera vez puede ser desde desafiante hasta pan comido. Comprender qué características buscar en tus herramientas de cliente y servidor y adoptar los hábitos correctos (y deshacerte de los viejos hábitos) es la clave para tener éxito con un equipo de cualquier tamaño en GraphQL.

Esta charla ofrece una visión general de los desafíos comunes que he visto en numerosos equipos al construir con GraphQL, cómo superaron las fuentes comunes de frustración y la mentalidad que finalmente adoptaron, y las lecciones aprendidas, para que puedas adoptar y seguir confiando en GraphQL con confianza.
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
¿Por qué estamos los desarrolladores tan obsesionados con desacoplar cosas que son de naturaleza acoplada? tRPC es una biblioteca que reemplaza la necesidad de GraphQL o REST para APIs internas. Al usarla, simplemente escribes funciones de backend cuyas formas de entrada y salida se infieren instantáneamente en tu frontend sin ninguna generación de código; haciendo que la escritura de esquemas de API sea cosa del pasado. Es ligera, no está vinculada a React, se puede almacenar en caché HTTP y se puede adoptar de forma incremental. En esta charla, daré un vistazo a la DX que puedes obtener de tRPC y cómo (y por qué) empezar.

Workshops on related topic

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