Uso de LavaMoat para resolver la seguridad en la cadena de suministro de software

LavaMoat es un conjunto de herramientas de seguridad para aplicaciones JavaScript que mitiga los riesgos de la cadena de suministro de software.

3 min de lectura
Uso de LavaMoat para resolver la seguridad en la cadena de suministro de software

LavaMoat es una herramienta gratuita y de código abierto para cualquier equipo de desarrollo JavaScript que se preocupe por la seguridad de la cadena de suministro. Esta iniciativa del cofundador de MetaMask, Kumavis, aborda simultáneamente las preocupaciones de seguridad en Web3 y los problemas estructurales de seguridad de larga data en el ecosistema de código abierto.

Si estás desarrollando con JavaScript (JS, para abreviar), necesitas comprender la situación de seguridad de este lenguaje y sus dependencias. Los ingenieros de JS raramente construyen una aplicación "desde cero"; generalmente importan fragmentos de código existentes, conocidos como "dependencias", en sus proyectos para usarlos como bloques de construcción. Eso es excelente para la colaboración y la velocidad de desarrollo, pero ¿qué pasa si se incluye código malicioso en una de esas dependencias?

La seguridad de la cadena de suministro de software abarca todo lo que interactúa con una aplicación (como las dependencias) o desempeña un papel en su desarrollo (como las herramientas de compilación o los sistemas de CI). JavaScript es el lenguaje más popular entre los desarrolladores por mucho y también es muy propenso a los ataques a la cadena de suministro. Esta línea de tiempo de vulnerabilidades de 2017 muestra que la mitad de los ataques se originaron en npm, una fuente popular de paquetes JS de código abierto:

Fuente: SonaType

JavaScript es un objetivo debido a:

  1. Su popularidad: Se utiliza tanto en el front-end como en el back-end

  2. Su autoridad ambiental: Si estás ejecutando JavaScript en algún lugar, tienes acceso a muchos recursos, como el acceso a la red

  3. Su mutabilidad: Todo es modificable por defecto

El hackeo de Copay Wallet de 2018 despertó el interés de Kumavis en resolver este problema y es el caso de estudio principal para el diseño de LavaMoat. Copay era una billetera de Bitcoin con autocustodia de BitPay que fue víctima de un hackeo a la cadena de suministro que resultó en el robo de fondos de usuarios. Una dependencia de npm utilizada por la billetera estaba controlada por un atacante, lo que le permitió ejecutar el ataque.

Entonces, ¿cuál es la solución? Se han planteado un par de argumentos para resolver este problema.

¿No usar dependencias nunca? No.

Si bien podría ser más seguro, ¿vas a renunciar al código abierto, esa riqueza colectiva que forma los cimientos sobre los que todos construimos? ¿A compartir y colaborar? Si estás intentando construir algo complejo, ¿de verdad quieres perder tiempo reinventando la rueda?

Nosotros tampoco.

¿Auditar todas las dependencias siempre? No.

Es una buena idea, pero ¿cuántas dependencias tienes? ¿Cientos? ¿Miles? ¿Decenas de miles? No es práctico, aunque si quieres realizar una auditoría manual, LavaMoat te ayudará a priorizar las más peligrosas (más sobre esto más adelante).

E incluso si tienes tiempo para revisar realmente el paquete de diferencias, ¿serás capaz de detectar una vulnerabilidad de seguridad?

Es difícil apostar por eso. Así que exploremos una solución diferente:

¿LavaMoat? Sí.

En lugar de no usar dependencias nunca o auditar todas tus dependencias siempre, echemos un vistazo al núcleo de seguridad de LavaMoat, que envuelve los paquetes en compartimentos y solo les otorga acceso a lo que necesitan.

Porque, recuerda, para que el código malicioso ataque tu sistema, necesita permiso para hacerlo. El núcleo de LavaMoat analiza el código de terceros que estás incorporando a tu proyecto, determina qué necesitan las dependencias para ejecutarse y les otorga únicamente eso**.**

LavaMoat protege actualmente a decenas de millones de usuarios en MetaMask y se ejecuta en tres momentos distintos durante cada proceso de desarrollo: instalación de dependencias, compilación y tiempo de ejecución.

Para poner las cosas en perspectiva, echa un vistazo a este panel de visualización del gráfico de dependencias:

La lista de tus dependencias aparece a la izquierda y el gráfico se representa como una red neuronal a la derecha. Los colores se basan en una heurística de peligrosidad: por ejemplo, los verdes no importan ninguna API de plataforma con permisos elevados.

La idea aquí es ayudarte a priorizar la auditoría de tus dependencias.

¿Cómo implementas esto?

Teniendo en cuenta las tres fases de desarrollo:

  1. Instalación: @lavamoat/allow-scripts

  2. Compilación: lavamoat-node

  3. Tiempo de ejecución: plugin lavamoat-x para tu bundler

Y eso debería actuar como un foso de protección contra el código malicioso.

Construyendo software a escala

Si te interesa ayudarnos, ¡LavaMoat es de código abierto! Estamos intentando conseguir plugins para la mayor cantidad de bundlers posible y queremos facilitar la revisión de políticas y añadir restricciones estrictas al otorgar acceso a la red a los paquetes. Puedes contribuir aquí.

¡Y suscríbete a nuestro boletín para desarrolladores para más actualizaciones! Feliz desarrollo.

Traducido por IA. Puede contener errores. Por favor, verifique siempre la información.

Califica la traducción
  • MetaMask
    MetaMask

    La billetera cripto autocustodiada líder y puerta de entrada a Web3, desarrollada por Consensys.

    Leer todos los artículos