Un investigador de seguridad ha publicado código de exploit para una vulnerabilidad de día cero en Visual Studio Code (VS Code) que permite a los atacantes robar tokens de autenticación de GitHub engañando a los usuarios para que hagan clic en un enlace. Microsoft clasifica una falla de software como día cero si se divulga públicamente y/o se explota activamente sin que exista un parche oficial disponible.
Según explicó el investigador Ammar Askar en una publicación de blog el martes, esta vulnerabilidad de VS Code permite a los atacantes instalar extensiones maliciosas que roban los tokens OAuth de GitHub cuando se pasan a github.dev (una versión basada en navegador de Visual Studio Code utilizada para trabajar en repositorios de GitHub) al explotar el sistema de paso de mensajes de webview aislado de VS Code.
El exploit de prueba de concepto que también publicó el martes abusa de este sistema ejecutando JavaScript malicioso dentro de un webview para simular pulsaciones de teclas en el editor principal e instalar una extensión que extrae el token OAuth de GitHub enviado a github.dev y consulta la API de GitHub para enumerar todos los repositorios privados a los que la víctima tiene acceso.
"Esta funcionalidad se logra porque github.com envía mediante POST un token OAuth a github.dev que le permite interactuar con GitHub en tu nombre," dijo Askar. "El token no está limitado al repositorio particular con el que interactuaste, lo que significa que tiene acceso completo a todos los demás repositorios a los que tienes acceso."
Si bien la vulnerabilidad aún no está parcheada y no se le ha asignado un identificador CVE, los usuarios de VS Code pueden protegerse borrando las cookies y los datos del sitio local de github.dev en su navegador haciendo clic en el icono de Configuración en la barra de URL, y luego yendo a Cookies y datos del sitio > Gestionar datos del sitio en el dispositivo. Esto asegurará que reciban una advertencia de "La extensión 'GitHub Repositories' quiere iniciar sesión usando GitHub" al hacer clic en enlaces que intenten explotar esta falla.
Askar dijo que notificó a GitHub una hora antes de divulgar el error y señaló que optó por la divulgación pública inmediata debido a una experiencia negativa previa con el proceso de respuesta de seguridad de Microsoft, en la que un error de VS Code reportado anteriormente fue corregido silenciosamente sin crédito ni reconocimiento del impacto de seguridad.
"Eso fue principalmente un gesto de cortesía hacia GitHub, la intención aquí era la divulgación pública completa. En mi experiencia previa reportando errores de github.dev, me decían que estaba fuera del alcance y que lo reportara a MSRC. Y como señalé en el artículo, realmente no quiero lidiar con MSRC por errores de VSCode," agregó. "Para resumir la última vez que interactué con MSRC para reportar un error de VSCode, fue una experiencia horrible donde corrigieron silenciosamente el error que señalé sin ningún crédito. También lo marcaron como sin impacto de seguridad. Como mencioné en esa publicación, en adelante haría divulgación pública completa para cualquier error de seguridad que encontrara en VSCode."
Esto sigue a otra serie de vulnerabilidades de día cero en varios productos de Microsoft divulgadas por un investigador de seguridad anónimo que usa el alias 'Nightmare Eclipse', quien también expresó su descontento con la forma en que el Microsoft Security Response Center (MSRC) maneja el proceso de divulgación. En los últimos meses, Nightmare Eclipse divulgó las fallas de día cero de escalada de privilegios BlueHammer, RedSun, GreenPlasma y MiniPlasma (las dos primeras ahora explotadas en ataques), YellowKey (un día cero de Windows BitLocker que otorga acceso a unidades protegidas) y UnDefend (otro día cero que puede explotarse para bloquear las actualizaciones de definiciones de Microsoft Defender).
Inicialmente, Microsoft reaccionó a las filtraciones de día cero de Nightmare Eclipse con amenazas de acciones legales, seguidas de un tuit en el que afirmaba que trabajaría "con las autoridades policiales según corresponda" cuando "un individuo infringe la ley y se involucra en actividades maliciosas que causan daños reales a nuestros clientes".
"Valoramos el papel fundamental que la comunidad de investigación de seguridad desempeña en fortalecer la seguridad de nuestros productos, servicios y el ecosistema tecnológico en general," dijo un portavoz de Microsoft a BleepingComputer cuando se le solicitó una declaración sobre el día cero de VS Code. "Si bien los investigadores independientes determinan cuándo y cómo publicar sus hallazgos, seguimos comprometidos a evaluar rápidamente los problemas reportados, movilizar los recursos adecuados de ingeniería y respuesta de seguridad, y ofrecer mitigaciones, orientación y protecciones lo antes posible para ayudar a proteger a nuestros clientes."
El miércoles, Microsoft también dijo a BleepingComputer que "Este problema se ha mitigado para nuestros servicios y no se requiere ninguna acción del cliente."