RCE en Visual Studio Code a través de su extensión de Python

  • 0 Respuestas
  • 426 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado K A I L

  • *
  • Ex-Staff
  • *****
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil


El equipo de Doyensec ha encontrado una vulnerabilidad en la popular extensión para Python de Visual Studio Code que permitiría la ejecución remota de código.

La extensión de Python, con aproximadamente 16.5 millones de instalaciones, cuenta con un fallo de diseño que permite ejecutar el código encontrado en el ‘virtualenv‘ de un proyecto sin notificar al usuario. Este comportamiento es utilizado para tareas como reestructuración de código, autocompletado, etcétera. Sin embargo, el diseño inseguro de esta extensión permitiría a un atacante ejecutar código arbitrario en el sistema de una víctima que clone un repositorio malicioso basado en Python.

En una de sus auditorías a una aplicación web basada en Python, un ingeniero de Doyensec se dio cuenta de que Visual Studio había seleccionado automaticamente el ‘virtualenv‘ del proyecto que estaba auditando y que estaba tratando de ejecutar el componente ‘pylint‘ sin ningún tipo de confirmación del usuario. Esto le hizo sospechar que sería posible una ejecución de código: procedió a añadir la línea os.exec(«/Applications/Calculator.app») en el código fuente del componente ‘pylint‘ y tras instalar el componente y forzar su ejecución abriendo un fichero de tipo Python, la calculadora del sistema se abrió y sus sospechas se confirmaron.

Bastaría con crear un proyecto con un fichero ‘settings.json’ que seleccionase el entorno malicioso por defecto para poder explotar la vulnerabilidad cuando la víctima clone y abra alguno de los ficheros del proyecto.

Doyensec ha publicado una prueba de concepto en su repositorio de Github que ejecuta la calculadora de macOS:

  • Primero hay que clonar el proyecto: git clone [email protected]:doyensec/VSCode_PoC_Oct2019.git
  • Añadirlo al entorno de trabajo de Visual Studio
  • Abrir el fichero test.py desde Visual Studio

Este repositorio contiene un fichero ‘settings.json’ «malicioso» que selecciona el ‘virtualenv‘ situado en la carpeta ‘totally_innocuous_folder/no_seriously_nothing_to_see_here’.



La extensión vulnerable no está instalada por defecto y el fallo ya ha sido revelado de forma responsable a sus desarrolladores quienes han estimado que estará resuelto a mediados de abril de 2020.

Más información:
Tweak settings to prevent accidental execution of code from within a workspace. Issue #7805

FUENTE