Telegram resolvió una vulnerabilidad de día cero en su aplicación de escritorio para Windows, que permitía eludir las advertencias de seguridad y ejecutar automáticamente scripts de Python. La brecha se debió a un error tipográfico en la definición de una extensión de archivo.
Los rumores sobre una vulnerabilidad de Zero-Click
En los últimos días, se habían estado circulando rumores en X y foros de hacking sobre una supuesta vulnerabilidad de ejecución remota de código (RCE) en Telegram para Windows. Algunas publicaciones afirmaron que se trataba de una falla de Zero-Click, pero los videos que demostraban la supuesta brecha mostraban claramente a alguien haciendo clic en un medio compartido para iniciar la calculadora de Windows.
Telegram rápidamente cuestionó estas afirmaciones, diciendo que «no pueden confirmar que exista tal vulnerabilidad y que el video probablemente sea un engaño».
Una prueba de concepto revela el error tipográfico
Al día siguiente se compartió una prueba de concepto en el foro XSS, explicando que un error tipográfico en el código fuente de Telegram para Windows podría explotarse para enviar archivos Python con extensión .pyzw, los cuales omiten las advertencias de seguridad al hacer clic.
Esto provoca que Python ejecute automáticamente el archivo sin una advertencia de Telegram, como lo hace con otros ejecutables. La prueba de concepto disfrazó el archivo Python como un video compartido, junto con una miniatura, para engañar a los usuarios y hacerles clic en el video falso.
Telegram confirma la corrección del error
Telegram negó con razón que el error fuera una falla de Zero-Click, pero confirmó que solucionaron el «problema» en Telegram para Windows para evitar que los scripts de Python se inicien automáticamente al hacer clic.
Los rumores sobre la existencia de vulnerabilidades de Zero-Click en Telegram Desktop son inexactos. Algunos expertos recomendaron deshabilitar las descargas automáticas en Telegram, pero no hubo problemas que pudieran haber sido provocados por las descargas automáticas.
En Telegram Desktop había un problema que requería que el usuario hiciera clic en un archivo malicioso mientras tenía instalado el intérprete de Python. Esta no fue una vulnerabilidad sin hacer clic y podría afectar solo a una pequeña fracción de la base de usuarios: menos del 0,01% de los usuarios tienen Python instalado y usan la versión relevante de Telegram para escritorio.
Se ha aplicado una solución del lado del servidor para garantizar que incluso este problema ya no se reproduzca. Por lo tanto, todas las versiones de Telegram Desktop (incluidas las anteriores) ya no tienen este problema.
El mecanismo de la vulnerabilidad
El cliente Telegram Desktop realiza un seguimiento de una lista de extensiones de archivos asociadas con archivos riesgosos, como archivos ejecutables. Cuando alguien envía uno de estos tipos de archivos en Telegram y un usuario hace clic en el archivo, en lugar de iniciar automáticamente el programa asociado en Windows, Telegram primero muestra una advertencia de seguridad.
Los tipos de archivos desconocidos compartidos en Telegram se iniciarán automáticamente en Windows, lo que permitirá que el sistema operativo decida qué programa usar. Cuando se instala Python para Windows, asocia la extensión .pyzw con el ejecutable de Python, lo que hará que Python ejecute los scripts automáticamente cuando se haga doble clic en el archivo.
Los desarrolladores de Telegram eran conscientes de que este tipo de ejecutables debían considerarse riesgosos y los agregaron a la lista de extensiones de archivos ejecutables. Desafortunadamente, cometieron un error tipográfico al ingresar la extensión como pywz, en lugar de la ortografía correcta de pyzw.
Cuando esos archivos se enviaron a través de Telegram y se hizo clic en ellos, Python los inició automáticamente si estaba instalado en Windows. Esto permitió a los atacantes eludir las advertencias de seguridad y ejecutar código de forma remota en el dispositivo Windows de un objetivo si pueden engañarlos para que abran el archivo.
Para enmascarar el archivo, los investigadores idearon el uso de un bot de Telegram para enviar el archivo con un tipo MIME de video/mp4, lo que provocó que Telegram mostrara el archivo como un video compartido. Si un usuario hace clic en el vídeo para verlo, el script se iniciará automáticamente a través de Python para Windows.
BleepingComputer probó este exploit con el investigador de ciberseguridad AabyssZG, quien también compartió demostraciones en X. Este archivo simplemente contiene código Python para abrir un símbolo del sistema. Cuando hace clic en el video para verlo, Python ejecuta automáticamente el script.
Telegram utilizó una solución del lado del servidor que agrega la extensión .untrusted a los archivos pyzw, lo cual hará que Windows le pregunte qué programa desea usar para abrirlos en lugar de iniciarlos automáticamente en Python. Las versiones futuras de la aplicación Telegram Desktop deberían incluir el mensaje de advertencia de seguridad en lugar de agregar la extensión «.untrusted», agregando un poco más de seguridad al proceso.