Cada mes, el director de seguridad de MetaMask, Luker, informa sobre los últimos ataques cripto y los riesgos emergentes que necesitas conocer.
La edición de mayo de 2022 cubrió el lanzamiento del programa de recompensas por errores de MetaMask en HackerOne, la implementación de import.meta y __dirname por parte de Endo para mejorar la compatibilidad de dependencias de MetaMask, y un prototipo de snap de generación de claves distribuidas que demuestra la firma mediante computación multipartita en MetaMask Flask. Explora los detalles a continuación, pero primero...
Pionera STEM destacada: Adi Shamir, co-inventor del RSA y creador del secreto compartido
Adi Shamir es un criptógrafo israelí que co-inventó el algoritmo RSA en 1977 junto a Ron Rivest y Leonard Adleman —el primer criptosistema de clave pública práctico, lo que le valió al trío el Premio Turing en 2002. En 1979, publicó "How to Share a Secret", introduciendo el Secreto Compartido de Shamir: un esquema que divide un secreto en partes donde solo se necesita un número umbral de ellas para reconstruir el original. Esta propiedad es fundamental para el trabajo de generación de claves distribuidas que se aborda en este informe.
MetaMask lanza el programa de recompensas por errores en HackerOne
MetaMask lanzó su programa de recompensas por errores en HackerOne en junio de 2022, abriendo un canal formal para que los investigadores de seguridad reporten vulnerabilidades en los productos de MetaMask.
Endo implementa import.meta y __dirname, avanzando en la compatibilidad de dependencias de MetaMask
Con el progreso de abril de 2022 en el soporte CommonJS de Endo, los resultados de las pruebas de extremo a extremo mostraron que los principales obstáculos restantes para ejecutar módulos populares eran el soporte de import.meta.url y __dirname.
Una reunión entre Agoric, MetaMask y Moddable el 3 de mayo de 2022 resultó en un acuerdo sobre en qué momento del proceso de importación de módulos debe procesarse import.meta. El concepto importMetaHook fue introducido en la especificación de Compartment. El hook solo se invoca si el análisis estático indica que el módulo accede a import.meta —dado que Node.js adjunta allí una función resolve cuya creación es costosa, es preferible invocar el hook únicamente cuando sus resultados puedan utilizarse.
La implementación de import.meta está completa (issue de especificación, PR de implementación). Lo que queda es implementar el paso de import.meta.url a los módulos en Endo por defecto. La implementación de __dirname también está completa (PR), tras múltiples iteraciones para garantizar la corrección y el soporte de rutas en Windows.
Además, se añadió soporte para archivos package.json anidados que cambian la suposición predeterminada del tipo de módulo para archivos .js, de modo que el compartment-mapper gestione paquetes con estructuras complejas destinadas a soportar tanto las especificaciones CommonJS como ES module (fuente).
El soporte del comportamiento __esModule está en pausa. Dos intentos de implementación resultaron en peores puntuaciones en las pruebas de extremo a extremo. Un tercer enfoque —colocar la lógica de soporte en ThirdPartyModuleInstance dentro de SES— se considera controvertido. La funcionalidad se rastrea en el issue #927.
El prototipo de snap de generación de claves distribuidas demuestra la firma MPC en MetaMask Flask
Se han realizado avances en las capacidades de computación multipartita (MPC). Nuestro equipo tomó los bindings WebAssembly (WASM) de prueba de concepto anteriores y creó un prototipo de snap, utilizable en MetaMask Flask, que demuestra la generación de claves distribuidas (DKG) y la firma de mensajes. El snap admite la exportación e importación de fragmentos de claves, además de la generación de claves y el guardado de pruebas para la firma de mensajes.
Internamente, el paquete aprovecha una implementación de GG2020 (Gennaro y Goldfeder 2020, artículo), un protocolo que admite una fase en línea no interactiva que permite a los participantes colaborar de forma asíncrona sin necesidad de estar conectados simultáneamente, y permite la detección eficiente de partes que abandonan el proceso.
Los próximos pasos incluyen añadir soporte de cifrado para snap_manageState con el fin de eliminar el cifrado manual de fragmentos de claves en el código del snap, seguido de la incorporación de soporte para la firma de transacciones. El prototipo se rastrea en el repositorio tss-snap (publicado originalmente como ecdsa-wasm).
El Informe de Seguridad Cripto de MetaMask de mayo de 2022 cubrió la implementación de import.meta y __dirname por parte de Endo para la cadena de compatibilidad de módulos de MetaMask, y el prototipo de snap de generación de claves distribuidas que demuestra la firma mediante computación multipartita en MetaMask Flask. Consulta las ediciones anteriores del informe de seguridad cripto de MetaMask para conocer más amenazas, tendencias y consejos para mantenerte seguro en todo el ecosistema.