Controles de seguridad en la cadena de suministro de JavaScript

Rate this content
Bookmark

La omnipresencia del software de código abierto y la baja barrera de entrada en npmjs están sirviendo como catalizador para los incidentes de seguridad en la cadena de suministro que están impactando continuamente a los desarrolladores de JavaScript. ¿Qué podemos hacer para protegernos?

This talk has been presented at JSNation 2022, check out the latest edition of this JavaScript Conference.

FAQ

Los desarrolladores desempeñan un papel clave en la seguridad del ecosistema de JavaScript, ya que están involucrados en todo el proceso de construcción de software, desde la elección de dependencias hasta la implementación de medidas de seguridad.

La seguridad de la cadena de suministro en el código abierto se refiere a la protección de los software y paquetes frente a la inserción de código malicioso en cualquier punto del proceso de desarrollo, desde el control de código fuente hasta la compilación y distribución.

Ken Thompson demostró cómo la confianza puede ser explotada en la tecnología mediante su famoso experimento en el que agregó una puerta trasera en el compilador de Unix, lo que revela la importancia de verificar todas las etapas del proceso de compilación.

La instalación de un paquete promedio de npm involucra confiar en aproximadamente 79 dependencias de terceros, lo que subraya la complejidad y los riesgos de seguridad asociados.

Se puede mejorar la seguridad utilizando herramientas que analizan y aplican políticas específicas sobre los archivos de bloqueo, como evitar fuentes no seguras y revisar cuidadosamente todas las contribuciones, especialmente las relacionadas con cambios en archivos de bloqueo.

Es crucial no permitir ni recibir contribuciones a los archivos de bloqueo sin una revisión exhaustiva, ya que estos archivos pueden ser manipulados para introducir código malicioso sin ser detectado fácilmente.

Un ataque de confusión de dependencias ocurre cuando se suplantan paquetes privados con otros maliciosos en registros públicos. Se puede prevenir asegurando una configuración adecuada de los registros de paquetes y utilizando herramientas de seguridad que monitorean las dependencias.

Liran Tal
Liran Tal
28 min
16 Jun, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla analiza los desafíos de seguridad en el ecosistema de JavaScript, incluida la seguridad en la cadena de suministro, la manipulación de archivos de bloqueo y la ejecución arbitraria de comandos. Destaca los riesgos de las actualizaciones ciegas y los comentarios ocultos en el código. La charla también aborda los ataques de confusión de dependencias y la importancia de establecer un modelo de amenazas para las aplicaciones de Node.

1. Introducción a la seguridad del ecosistema de JavaScript

Short description:

Gracias por acompañarme hoy. Soy Yaron Tal, un defensor del desarrollo en Snyk. Compartiré historias del mundo real sobre el papel de los desarrolladores en el ecosistema de seguridad y el estado de la seguridad en el ecosistema de JavaScript. Cuando haces un npm install, es normal sentir preocupación. Proporcionaré controles de seguridad para mitigar los riesgos. Instalar un paquete promedio de npm implica confiar en numerosos mantenedores y dependencias. Esta preocupación no es nueva y se ha discutido durante décadas, como se demuestra en el ensayo de Ken Thompson sobre la confianza en la confianza.

Y ahora... Bueno, gracias a todos por acompañarme hoy. Mi nombre es Yaron Tal y soy un defensor del desarrollo en Snyk. Voy a hablar sobre varias historias que ocurren en el ecosistema de JavaScript, en el cual estoy involucrado en varias partes a través de mi trabajo en Snyk, tratando de ayudar a los desarrolladores, a ti y a mí, a todos nosotros, a construir software seguro, enviarlo, ya sea en tu CI o IDE o lo que sea.

Es una forma realmente genial de interactuar y comprometer a los desarrolladores. Pero a través de ese trabajo, también hago muchas cosas con una comunidad, que es a través del proyecto de seguridad de OS, o tal vez a través de cosas como la seguridad de la fundación de Node, triaje de vulnerabilidades y mucho trabajo en torno al código abierto. Y eso me ayuda a tener una imagen clara de lo que está sucediendo, hacia dónde van las cosas.

Entonces, dicho esto, hoy me gustaría compartir con ustedes algunas historias del mundo real y contarles cómo los desarrolladores como ustedes desempeñan un papel fundamental y clave en el ecosistema de seguridad e incluso en los incidentes de seguridad que han ocurrido recientemente. También, cuál es el estado actual de la seguridad y la seguridad de la cadena de suministro en el código abierto y el ecosistema de JavaScript.

Ahora, me doy cuenta de que esto probablemente todos lo relacionan de una manera muy emocional, ¿verdad, cuando haces un npm install? ¿Sí? Así que estoy aquí para decirles que está bien. Estás sintiendo algo que todos nosotros sentimos antes de hacer un npm install, y esta charla en su conjunto básicamente tratará sobre por qué te sientes así, pero también te dará algunas medidas preventivas, algunos controles de seguridad que puedes tener y agregar mañana en tu equipo para poder mitigar los riesgos en torno a las cosas que suceden allí.

Así que ese sentimiento que tienes, si puedes relacionarte con eso, se basa en una investigación científica fundamental. Uno de esos casos hace un par de años nos mostró cómo cuando instalamos el paquete promedio de npm, depositamos mucha confianza en los mantenedores y las dependencias de terceros que estamos trayendo. Al instalar el paquete promedio de npm, probablemente estás confiando en alrededor de 79 dependencias de terceros y 39 mantenedores. Eso es mucho. Eso significa que probablemente habrá mucho ruido y potencialmente dolor para tal vez también remediar algunas de estas cosas. Pero esta es la verdad de las cosas.

Y también estoy aquí para decirles que esta no es una preocupación nueva. De hecho, todo este asunto de dónde depositamos nuestra confianza como desarrolladores y cuánto debemos confiar, qué debemos confiar exactamente, es algo de lo que se ha hablado hace casi 40 años. Esta persona llamada Ken Thompson, es un desarrollador galardonado con el premio Turing, y en realidad fue a crear este ensayo llamado Reflexiones sobre la confianza en la confianza. Recomiendo encarecidamente leerlo, pero solo te daré la idea de lo que realmente significa.

Esta persona se fue y dijo: quiero mostrarte lo que significa confiar en las personas. Y luego agregó una puerta trasera al programa de inicio de sesión de Unix. Pero, por supuesto, la gente revisa el código, ¿verdad? En el código abierto. Entonces, continuó esta cadena agregando la puerta trasera al compilador que luego compila el programa de inicio de sesión y luego lo inyectará. Pero bueno, la gente también revisa el código del compilador. Bueno, ¿cómo se compilan los compiladores? Necesitas un punto de entrada para empezar. Y así que en realidad fue y agregó esa puerta trasera.

2. Información sobre Open Source y la seguridad de la cadena de suministro

Short description:

Eso es algo que Rojan quería mostrarnos como un experimento de cómo funciona esto. Lo agregó al compilador que luego compila el programa de inicio de sesión de Unix. Revela por qué la confianza es importante y cuánto más debemos avanzar. El Open Source es genial y usarlo es una herramienta de productividad. Necesitamos entender el regalo del Open Source y la historia de la seguridad de la cadena de suministro. No se trata solo de las dependencias de NPM, sino también de todo el proceso de construcción de software y los puntos de integración.

Eso es algo que Rojan quería mostrarnos como un experimento de cómo funciona esto. Lo agregó al compilador que luego compila el programa de inicio de sesión de Unix. Entonces, si revisas el programa de inicio de sesión de Unix y si revisas el compilador, en ese punto ya no lo verás. Porque aún necesitas un compilador binario para luego compilar todo eso. Y ahí es donde ocurren las cosas. Ahí es donde se inserta la puerta trasera.

Una visión muy interesante que revela cómo el software tiene características y cómo las transmite a otros programas específicos de los que se genera. Así que recomiendo encarecidamente leer esto. Pero nos muestra por qué la confianza es importante y cuánto más debemos avanzar para depositar esa confianza en algún lugar.

Aún así, el Open Source es genial. Y no podemos negar el hecho de que para construir software hoy en día, necesitamos usar software de Open Source, incluso cuando tal vez el programa que construimos no sea Open Source en sí mismo, tal vez la mitad de él o lo que sea. Pero esa es un poco la realidad. Y por supuesto, ¿por qué no? ¿Por qué no usar software de Open Source, verdad? Porque en realidad lo que realmente queremos no es reinventar la rueda. Queremos usar el trabajo que han hecho personas geniales, y luego podemos tomar ese trabajo y usarlo para practicar. Y esta es una gran herramienta de productividad.

Así que a estas alturas, estoy bastante seguro de que estamos alcanzando esa marca de dos millones en NPM. No sé. Es asombroso para nosotros, para todos ustedes aquí, ayudándonos a promover el software de Open Source. Pero al mismo tiempo, debemos entender y reconocer este regalo que se nos ha dado, que el Open Source ha sido dado al mundo, y lo que realmente significa. Entonces, todos esos paquetes, son esencialmente el suministro. Esto es parte de la historia de la seguridad de la cadena de suministro. Y es relativamente fácil pensar para nosotros que todas esas seguridades de la cadena de suministro pueden ser dependencias de NPM. Pero en realidad no es solo eso. De hecho, si retrocedemos hasta los conceptos básicos de cómo se construye el software, podemos ver que tenemos varios puntos de conexión a lo largo del camino. Entonces, eres un desarrollador, estás construyendo algo, tal vez lo estás subiendo a GitHub. Esa es básicamente tu control de origen, luego se desencadena una compilación, luego hay alguna salida de eso. Tal vez eso es esencialmente un paquete o tal vez se está lanzando a algún CDN o lo que sea. Y estás usando algún software de Open Source a través del proceso de compilación. Entonces, todo eso es básicamente cómo estamos construyendo software. Pero aquí están los puntos de integración de lo que la seguridad de la cadena de suministro significa en el nivel más básico.

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

Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
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.
La filosofía de Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
La filosofía de Yarn
Let's talk about React and TypeScript, Yarn's philosophy and long-term relevance, stability and error handling in Yarn, Yarn's behavior and open source sustainability, investing in maintenance and future contributors, contributing to the JavaScript ecosystem, open-source contribution experience, maintaining naming consistency in large projects, version consistency and strictness in Yarn, and Yarn 4 experiments for performance improvement.
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.

Workshops on related topic

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
WorkshopFree
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
WorkshopFree
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.
Construye aplicaciones Web3 con React
React Summit 2022React Summit 2022
51 min
Construye aplicaciones Web3 con React
WorkshopFree
Shain Dholakiya
Shain Dholakiya
El masterclass está diseñado para ayudar a los desarrolladores Web2 a comenzar a construir para Web3 utilizando el Hyperverse. El Hyperverse es un mercado abierto de módulos inteligentes construidos por la comunidad, auditados y fáciles de descubrir. Nuestro objetivo es hacer que sea fácil para los desarrolladores de React construir aplicaciones Web3 sin escribir una sola línea de código de contrato inteligente. Piensa en 'npm para contratos inteligentes'.
Aprende más sobre el Hyperverse aquí.
Repasaremos todos los conceptos básicos de blockchain/crypto que necesitas saber para comenzar a construir en el Hyperverse, por lo que no necesitas tener ningún conocimiento previo sobre el espacio Web3. Solo necesitas tener experiencia en React.