Fallo de seguridad afecta las aplicaciones basadas en ElectronJS como Skype, Signal, Discord y muchos más

Fallo de seguridad afecta las aplicaciones basadas en ElectronJS como Skype, Signal, Discord y muchos más

Los investigadores de seguridad han encontrado un fallo de seguridad en Electron, un framework que se ha utilizado en la última media década para construir una gran cantidad de aplicaciones de escritorio populares.

Las aplicaciones creadas por Electron y potencialmente afectadas por este error recientemente encontrado incluyen el código fuente de Skype y Visual Studio de Microsoft, el editor de código Atom de GitHub, el navegador Brave, junto con aplicaciones de escritorio oficiales para servicios como Signal, Twitch, Discord, Basecamp, Slack, Ghost, WordPress y muchos más.

El framework ElectonJS se ha vuelto muy popular entre la comunidad actual de desarrollo de software porque permite a los desarrolladores realizar fácilmente un puente entre las aplicaciones web codificadas en HTML, JS y CSS para que se ejecuten en el escritorio. Este framework es una API personalizada que se ajusta al servidor de JavaScript del lado del servidor Node.js.

Electron y sus peligrosas APIs y módulos de Node.js

Al construir aplicaciones basadas en Electron, los desarrolladores tienen la opción de usar un entorno limitado al usar principalmente la API de Electron, pero también pueden acceder a las API de Node.js y sus módulos.

Debido a que el proyecto Node.js es un proyecto más maduro, las API y los módulos incorporados de Node proporcionan una integración más profunda con el sistema operativo subyacente y permiten que el desarrollador y la aplicación accedan a más funciones del sistema operativo.

El equipo de Electron era consciente de este problema y creó un mecanismo que evita que los ataques en aplicaciones basadas en Electrón aprovechen estas API para dañar el sistema operativo subyacente.

Para las aplicaciones que solo quieren ejecutar códigos HTML y JS en el escritorio, la opción "nodeIntegration: false" está activada de manera predeterminada, lo que significa que el acceso a las API y módulos de Node.js está deshabilitado de manera predeterminada.

Incrustar estas aplicaciones puras basadas en la web dentro de una aplicación Electron se realiza a través de un componente llamado WebView.

Aumento de XSS a RCE

Todas las aplicaciones basadas en electrón funcionan con un archivo de configuración de preferencias web. Si el webviewTag se configura como false en esta configuración, entonces nodeIngration también se establece en false. Si los desarrolladores no han declarado en absoluto "webviewTag", entonces la aplicación considera que "nodeIntegration" aún está configurado como "false".

Aquí es donde radica el problema, según el investigador de Trustwave, Brendan Scarvell, quien descubrió un mecanismo que los actores maliciosos podrían usar para convertir la opción nodeIntegration en "true" y otorgarse acceso a las API y módulos más poderosos de Node.js.

Scarvell dice que si los desarrolladores de una aplicación basada en Electron no declararon específicamente la opción "webviewTag:false" dentro del archivo de configuración de preferencias web de una aplicación, un atacante puede usar cualquier vulnerabilidad para usar cross-site scripting (XSS) dentro de una aplicación Electron para crear una nueva ventana usando el componente WebView donde controlan la configuración, y podría establecer el indicador nodeIngration en "true".

Recuérda que las aplicaciones basadas en Electron son HTML empaquetado y código JS, lo que significa que encontrar una aplicación XSS para explotar este fallo no es tan difícil como parece, ya que la mayoría de las aplicaciones web están plagadas de estos errores.

Scarvell publicó un código de prueba de concepto que puede permitir a un atacante explotar cualquier defecto de XSS y extender su acceso al sistema operativo subyacente. Él dice que este fallo "puede permitir la ejecución remota de código siempre que la aplicación esté utilizando una versión vulnerable de Electron (versión <1.7.13, <1.8.4 o <2.0.0-beta.3)".

El investigador de seguridad informó en privado sobre el error y el equipo de Electron lanzó las correcciones a mediados de marzo. Sin embargo, no está claro cuántas de las aplicaciones basadas en Electron han integrado los parches. Este error ha recibido el identificador CVE (no oficial) de CVE-2018-1000136.

Más información: Trustwave