El equipo de seguridad de CertiK descubrió una vulnerabilidad de ejecución remota de código en la billetera de escritorio de Symbol y envió la vulnerabilidad al programa de recompensas por errores de Symbol. Symbol le dio gran importancia al informe presentado por CertiK, inmediatamente tomó medidas de seguridad y actualizó el código a tiempo. Actualmente, este problema se ha solucionado en la versión v0.9.11. El informe de HackerOne aún no es público, pero con el permiso de Symbol, este artículo se publicará aquí para compartir el incidente. Aquí, CertiK quisiera agradecer a Symbol por el premio de recompensa y el permiso para compartir públicamente el descubrimiento de la vulnerabilidad. Symbol wallet es una aplicación de escritorio basada en Electron. La vulnerabilidad descubierta esta vez está relacionada con la configuración de Electron. ¿Electrón te suena familiar? Pero no es el electrón que aprendiste en la clase de química física. Antes de comenzar el análisis de vulnerabilidades, echemos un vistazo a lo que es Electron en este artículo y lo que vale la pena señalar en términos de seguridad. Electron es un marco de software de código abierto desarrollado y mantenido por GitHub que permite a los desarrolladores crear aplicaciones de escritorio multiplataforma utilizando tecnologías web como HTML, CSS y Javascript. Electron logra esto al combinar el motor Chromium y Node.js. Algunas aplicaciones conocidas de Electron incluyen el editor Atom, VisualStudio Code y Slack, entre otras. Ventajas de usar Electron: los desarrolladores web pueden usar las principales bibliotecas de marcos de Javascript (incluidas Angular, React y Vue) para crear aplicaciones de escritorio multiplataforma que pueden ejecutarse en diferentes sistemas operativos. Este proceso elimina la necesidad de dedicar tiempo a aprender un nuevo lenguaje de programación. La depuración de aplicaciones basadas en Electron es más fácil que la depuración de aplicaciones de escritorio tradicionales. La extensión DevTools en Chromium permite a los desarrolladores depurar sus aplicaciones basadas en Electron de la misma manera que las aplicaciones web. La seguridad de Electron y los peligros de Node.js Una aplicación basada en Electron es esencialmente una aplicación web, por lo que contiene vulnerabilidades web comunes, como secuencias de comandos entre sitios (XSS), inyección de SQL, vulnerabilidades de autenticación y autorización. Electron proporciona muchas API para ayudar en el desarrollo de aplicaciones de escritorio, además, también puede usar módulos Node.js. Node.js permite que las aplicaciones basadas en Electron admitan más funciones que una aplicación web que se ejecuta en un navegador web. Sin embargo, habilitar Node.js conlleva ciertos riesgos de seguridad. Si un atacante puede encontrar una manera de inyectar JavaScript en una aplicación, puede ejecutar comandos del sistema en la computadora del objetivo. Para verificar si una aplicación Electron se está ejecutando con Node.js habilitado, los usuarios pueden enviar la función de importación del módulo "requerir" en la consola de desarrollo. En macOS, la consola se puede abrir presionando "opción + comando + i" simultáneamente. Si no se inicia Node.js, la consola devolverá un mensaje de error "requerir no está definido": la cantidad de direcciones ETH distintas de cero supera los 90 millones: Jinse Finance informó que, según los datos de Glassnode, la cantidad de direcciones ETH distintas de cero las direcciones acaban de superar los 90.000.000. El valor actual es 90.000.555, otro récord. [2022/11/21 22:11:37] Si Node.js está habilitado, la consola devolverá información sobre "requerir": envíe el siguiente comando en la consola de desarrollo para que aparezca la calculadora en macOS: require( 39;child_process').exec('/System/Applications/Calculator.app/Contents/MacOS/Calculator') Para mitigar el riesgo de ejecución remota de código causado por la inyección de JavaScript, desde la versión Inicial a partir de 5.0.0, Electron deshabilita el acceso del programa a los módulos de Node.js de forma predeterminada. Los desarrolladores pueden habilitar el uso de módulos de Node.js configurando "nodeIntegration" en verdadero en el archivo de configuración, lo que no se recomienda desde una perspectiva de seguridad. Vale la pena señalar que en 2018, se descubrió que Electron tenía una vulnerabilidad grave que podría ser aprovechada por un atacante para acceder a los módulos de Node.js, incluso si estaban deshabilitados en la configuración. La Referencia 1 también explica esto en detalle, así que asegúrese de usar la última versión de Electron cuando desarrolle. Con una comprensión de las características asociadas con las aplicaciones basadas en Electron, ahora es posible sumergirse en las vulnerabilidades encontradas en la billetera de escritorio de Symbol. La billetera de escritorio de Symbol es de código abierto y el código fuente de la aplicación se puede encontrar en su Github (Referencia 2). build.js (referencia 3) es el archivo de configuración de compilación de Electron para su aplicación. El siguiente fragmento de código en Build.js verifica si el programa se ejecuta en "darwin" (macOS). De lo contrario, app.on utilizará la función "createWindow" para crear la ventana del navegador. ....código... si (proceso.plataforma === 'darwin') { aplicación.on('listo& #39;,createMac) } else { app.on('ready',createWindow) ....code.. . En la función "createwindow", la variable "windowOptions" dentro de la función contiene opciones de configuración de la ventana del navegador. Tenga en cuenta que las líneas que se muestran en rojo establecen la variable "nodeIntegration" en verdadero, lo que significa que esta aplicación está habilitada para Node.js. ...código... función createWindow(){ Hubei lanza concurso de innovación y emprendimiento de aplicaciones de tecnología Blockchain: Informe Golden Finance, 24 de septiembre por la tarde, Comisión Provincial de Desarrollo y Reforma de Hubei La conferencia de prensa del Concurso de Innovación y Emprendimiento de la Aplicación de Tecnología Blockchain Provincial de Hubei 2021, patrocinado conjuntamente por la Oficina de Información de la Red del Comité Provincial del Partido y realizada por el Gobierno Popular del Distrito de Jianghan de la ciudad de Wuhan, se llevó a cabo en Wuhan. La competencia se divide en dos grupos: universidades y empresas. El grupo empresarial está formado por la Comisión Provincial de Desarrollo y Reforma de Hubei, el Departamento Provincial de Justicia, el Departamento Provincial de Ecología y Medio Ambiente, el Departamento Provincial de Transporte, el Departamento Provincial de Agricultura y Asuntos Rurales, el Departamento de Emergencia Provincial, la Oficina de Supervisión del Mercado Provincial y el gobierno local provincial. Elija la dirección de la competencia de los 10 escenarios de aplicaciones de gobierno virtual proporcionados por la Oficina de Supervisión Financiera y proporcione soluciones blockchain; el grupo universitario se enfoca en resolviendo los puntos débiles del desarrollo económico y social y ejerciendo el valor de aplicación de la tecnología blockchain. (Hubei publicó la cuenta pública oficial) [2021/9/25 17:05:01] const windowOptions = { minWidth : ancho, altura, altura, altura : altura, titleBarStyle: 'hiddenInset', nodeIntegration: true, }, redimensionable: cierto, ) } Según el archivo de configuración build.js, puede saber si la aplicación se ejecuta en el sistema operativo Windows , Node.js estará habilitado. Para explotar la habilitación de Node.js, un atacante necesitaría inyectar JavaScript arbitrario en la aplicación. Los atacantes generalmente pueden explotar las vulnerabilidades XSS (cross-site scripting) o cargar cualquier sitio web que contenga JavaScript inyectado por el atacante en la ventana Electron actual. La billetera de escritorio Symbol (versión 9.7) brinda la función de navegar por "noticias", siempre que el usuario haga clic en el enlace de las noticias, la aplicación cargará el sitio web externo (se muestra Github en la imagen) desde la ventana de la billetera. Entonces, ¿cómo se explota la vulnerabilidad? Para demostrar el proceso de explotación de esta vulnerabilidad, el técnico alojó el siguiente fragmento de código en su sitio web personal. Es fácil colocar una URL que apunte a su sitio web en Github. Cuando "nodeIntegration" se establece en verdadero y Node.js está habilitado, la ejecución arbitraria de JavaScript se puede escalar a la ejecución remota de código con la ayuda del módulo "child_process". Después de que el usuario visite la página que contiene la carga útil y haga clic en el botón "Cerrar" en la página, aparecerá una calculadora en la computadora del usuario. Abrir una calculadora en un sistema de destino es una forma de demostrar una vulnerabilidad de ejecución de código exitosa. Prueba de concepto (video en la parte superior):<!DOCTYPEhtml> <h1>click me</h1> <button type="button" onClick="rce_calc() " ;>Enviar</button> <script> functionrce_calc(){ const{ exec } = require('child_process'); exec('calc' ; 39;); } </script> El símbolo estableció "nodeIntegration" en falso en la solución, lo que deshabilita el acceso de JavaScript a los módulos de Node.js. Este cambio se ha reflejado en su archivo build.js actual (Referencia 4). También actualizaron la función "Noticias" para dejar de cargar sitios web remotos en la ventana de Electron. Como investigadores de seguridad, cuando encontramos una vulnerabilidad en un programa, siempre tratamos de explorar si existe tal vulnerabilidad en otras aplicaciones. Buscando en Internet, el equipo de seguridad de CertiK encontró otra billetera de criptomonedas basada en Electron: MyCrypto. Durante las pruebas, los técnicos descubrieron que MyCrypto tenía la "integración de nodos" establecida en verdadero y Node.js habilitado. Sin embargo, no encontré una manera de atacar esta configuración. Pero no debemos dar a los atacantes la oportunidad de convertir "self-xss" en ejecución de código de comando. CertiK tiene como objetivo contribuir a la seguridad de la comunidad de cifrado y ayudar a las empresas a proteger los activos de los usuarios. El técnico envió un problema en el almacén de Github de la otra parte. MyCrypto le otorga gran importancia y respondió que esta vulnerabilidad se solucionará en la próxima versión. Electron en sí mismo es un marco de software muy bueno, pero los desarrolladores deben tener cuidado de no exponer el programa al peligro debido a errores de configuración. Tenga cuidado al utilizar nuevas tecnologías en su producto, tenga cuidado y sea consciente de los posibles riesgos de seguridad
Tags:
- Según un informe reciente de Chainalysis, la mayoría de los bitcoins que se han minado están en manos de inversores a largo plazo, y solo el 19% se comercializa.- El estudio también señaló que.
Jinse Finance Blockchain, noticias del 27 de junio A las 9:30 p. m. del 26 de junio de 2020, hora de Beijing, EBON International (EBON) aterrizó oficialmente en la bolsa estadounidense Nasdaq.
El 21 de junio de 2020, comenzó en Shenzhen el Foro de Aplicación de Innovación de Blockchain 2020 organizado por Golden Finance. Brendan Blumer, CEO de Block.one, y An Xinxin, CEO de Jinse Finance.
El equipo de seguridad de CertiK descubrió una vulnerabilidad de ejecución remota de código en la billetera de escritorio de Symbol y envió la vulnerabilidad al programa de recompensas por errores de Symbol.
Kiyosumi-kun ha estado prestando atención a los tokens en la cadena de bloques (originalmente la llamé moneda virtual), aunque no es continua.
El protocolo de alojamiento web y archivo descentralizado InterPlanetary File System (IPFS) ha lanzado la versión 0.6 de go-ipfs.
El Technology Weekly de esta semana contiene noticias técnicas relacionadas con las cuatro redes de Bitcoin, Ethereum, Polkadot y Filecoin.Bitcoin Core lanzó la versión 0.20.0El 17 de junio.