Falla de ejecución de código remoto en FrameWork Electron



Una falla crítica se ha descubierto en el Framework de Electron la cual permite ejecución de código remoto en la victima.

Electron es un framework de código libre que ayuda a potenciar una amplia gama de aplicaciones de escritorio, como Whatsapp, Skype, Signal, Wordpress, Slack, GitHub, Atom, Visual Studio Code y Discord. Electron permite a los desarrolladores crear aplicaciones híbridas de escritorio mediante la integración con Chrominium y Node.js a través de API.

Como Node.js es un marco robusto para las aplicaciones del lado del servidor, tener acceso a sus API indirectamente, da a las aplicaciones basadas en Electron mayor control sobre el sistema operativo instalado en el servidor.

Para evitar el acceso no autorizado o innecesario a las API de Node.js, Electron framework establece de forma predeterminada el valor de "webviewTag" en falso dentro de su archivo de configuración "webPreferences", que luego establece "nodeIngration" en falso.

Además, si un desarrollador de aplicaciones se salta u olvida declarar "webviewTag: false" en el archivo de configuración, incluso entonces el framework por defecto considera el valor de "nodeIntegration" como falso, para tomar una medida preventiva.



Sin embargo el investigador de Seguridad Brendan Scarvell ha liberado una prueba de concepto en la cual un atacante puede inyectar código en aplicaciones donde no se tenga la variable "webviewTag" declarada, logrando realizar una explotación XSS, y posteriormente ejecutar un RCE.

Se detecta que si el desarrollador utilizo una de las siguientes opciones el exploit no funciona:

  • nativeWindowsOption habilitado en webPreferences
  • Interceptar eventos de "nueva ventana", y anular event.newGuest.
La vulnerabilidad fue identificada con el CVE-2018-1000136 y afectaba a todas las versiones de Electron, cuando la vulnerabilidad fue descubierta. Hoy en día los desarroladores liberaron un parche en Marzo de este año donde se soluciona esta vulnerabilidad en versiones 1.7.13, 1.8.4 y 2.0.0-beta.4