Ejecución remota de código en el editor Atom

El investigador Lukas Reschke (@LukasReschke), ha publicado un reciente análisis de seguridad sobre Atom, el editor de texto y código para desarrolladores creado por Github. En el mismo, se revelan graves vulnerabilidades que pueden provocar ejecución remota de código.
Dado que el editor Atom está basado en Electron, un popular framework de desarrollo de aplicaciones, muchas de las vulnerabilidades que afectan a éste, también son heredables a los desarrollos derivados de su uso.
Si a eso le añadimos incorrectas políticas de seguridad, en la incorporación de “parsers” o librerías complementarias para mostrar contenido, como es el caso de las utilizadas por Atom para procesar Markdown, la combinación de estas incidencias puede provocar una cadena de vulnerabilidades de mayor impacto.
Vulnerabilidad en el parser Markdown
Según el estudio realizado por Reschke, el componente encargado de procesar documentos HTML, permitiría ejecutar código Javascript al cargar ficheros Markdown (.md, .markdown). La función encargada de evitarlo puede ser fácilmente evadida, utilizando ficheros locales mediante el URI file://, saltándose así las políticas CSP (Políticas de Seguridad de Contenido) y ejecutando código Javascript (XSS).
Investigando la posibilidad de simplificar y saltar restricciones utilizando esta vulnerabilidad, descubrió que en la carpeta /Applications/Atom.app/Contents, existían documentos vulnerables que permitirían ir más allá y provocar la ejecución de ficheros locales.
Un simple fichero Markdown con un iframe al documento HTML “test-apart-ctx.html” :

<iframe src=”file:///Applications/Atom.app/Contents/Resources/app/apm/node_modules/clone/test-apart-ctx.html?foo&%77%69%6e%64%6f%77%2e%74%6f%70%2e%72%65%71%75%69%72%65%28%27%63%68%69%6c%64%5f%70%72%6f%63%65%73%73%27%29%2e%65%78%65%63%46%69%6c%65%28%27%2f%41%70%70%6c%69%63%61%74%69%6f%6e%73%2f%43%61%6c%63%75%6c%61%74%6f%72%2e%61%70%70%2f%43%6f%6e%74%65%6e%74%73%2f%4d%61%63%4f%53%2f%43%61%6c%63%75%6c%61%74%6f%72%27%2c%66%75%6e%63%74%69%6f%6e%28%29%7b%7d%29%3b%0a”></iframe>

permitiría ejecutar código arbitrario de manera local, como se puede ver en la imagen:

Ejecución de la calculadora, mediante un Markdown especialmente manipulado. Fuente: statuscode.ch
Por tanto, sería fácil modificar este comportamiento para utilizarlo en la distribución de ficheros Markdown maliciosos como por ejemplo, alguna variante de troyano.
Repositorios externos maliciosos
Yendo más allá en sus pruebas y buscando una manera remota de explotar esta vulnerabilidad, pudo observar que el parser Markdown carga contenido externo gracias al módulo “Packages”.

Un atacante remoto sólo tendría que crear y distribuir en los repositorios paquetes maliciosos que se asemejaran a los más descargados por los usuarios, y conseguiría ejecutar código sin tener siquiera que instalar el paquete, ya que una característica principal de este apartado es la previsualición de información sobre el paquete seleccionado, momento en el cual se ejecutaría el código malicioso.

La distribución de paquetes fraudulentos en repositorios no es algo novedoso ni baladí, ya que éste comportamiento se pudo ver hace pocos meses en las incidencias sufridas por Python y PyPI. 

GitHub ha mitigado el efecto de esta vulnerabilidad, eliminando los HTML innecesarios de la aplicación y utilizando una nueva librería (DOMPurify) para evadir este tipo de ataques.

José Mesa

@jsmesa

Más información:

From Markdown to RCE in Atom:

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

Social Media Auto Publish Powered By : XYZScripts.com