Se ha descubierto una vulnerabilidad (CVE-2025-49091) en el emulador de terminal Konsole desarrollado por el proyecto KDE, que permite ejecutar código en el sistema cuando se abre una página especialmente diseñada en el navegador.
Para Konsole, el servicio KTelnetService (ktelnetservice6.desktop) está registrado por defecto en KDE y conecta los controladores para los esquemas de URL telnet://, rlogin:// y ssh:// abiertos en el navegador. Al procesar estos esquemas, se ejecutan las utilidades telnet, rlogin y ssh en el emulador de terminal y se les pasa la ruta especificada en el enlace.
La vulnerabilidad se debe a que, cuando las utilidades telnet, rlogin o ssh no están instaladas en el sistema, Konsole ejecuta el intérprete de comandos bash al llamar al controlador de URL correspondiente. Por ejemplo, si telnet no está instalado, al abrir el enlace "telnet:///proc/self/cwd/Downloads/evil" en el navegador, Konsole ejecuta "/bin/bash /proc/self/cwd/Downloads/evil". De forma similar, se puede realizar un ataque a los controladores rlogin:// y ssh:// cuando las utilidades rlogin y ssh no están instaladas en el sistema.
La explotación de vulnerabilidades se debe a que, en la configuración predeterminada, las versiones modernas de Firefox y Chrome guardan automáticamente los archivos iniciados para su descarga, sin avisar al usuario, solo mostrando una notificación sobre la descarga realizada. En Firefox, este comportamiento se puede desactivar activando la opción "Preguntar siempre dónde guardar los archivos" en la página del configurador "General > Archivos y aplicaciones". Normalmente, los archivos se guardan en el directorio ~/Descargas, al que se puede acceder mediante la ruta "/proc/self/cwd/Descargas/" sin conocer el nombre del usuario actual.
A continuación se muestra un ejemplo de código JavaScript que, al ejecutarse en un navegador en entornos KDE con Konsole, ejecutará los comandos "echo "Hello world"; touch /tmp/foobar" (en el ejemplo, están codificados en la cadena "data:;base64,ZWNobyAiSGVsbG8gd29ybGQiCnRvdWNoIC90bXAvZm9vYmFyCg=="). El código propuesto crea un enlace con datos integrados, simula un clic en él y redirige al usuario a la URL "telnet://…". Para que funcione en Chrome, debe cambiar el nombre del archivo del enlace a "evil.txt", ya que Chrome añade automáticamente la extensión .txt. function downloadAndRedirect() { const anchor = document.createElement(‘a’); anchor.href = «data:;base64,ZWNobyAiSGVsbG8gd29ybGQiCnRvdWNoIC90bXAvZm9vYmFyCg==»; anchor.download = ‘evil’; document.body.appendChild(anchor); anchor.click(); document.body.removeChild(anchor); setTimeout(() => { window.location.href = «telnet:///proc/self/cwd/Downloads/evil»; }, 1000); }
En Firefox y Chrome, al intentar acceder a un enlace "telnet://", se le solicitará al usuario que confirme la operación por defecto. Si el usuario acepta, KTelnetService ejecutará el comando: /usr/bin/konsole —noclose -e telnet /proc/self/cwd/Downloads/evil
Si el sistema no tiene la utilidad telnet, Konsole recurrirá a ejecutar bash en lugar de telnet, pasando el argumento especificado originalmente en la línea de comando.
El problema se ha solucionado en Konsole 25.04.2, que se incluyó en la actualización de KDE Gear 25.04.2. Puede consultar el estado de los parches para sus distribuciones en las siguientes páginas: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Arch, FreeBSD. Como solución alternativa para bloquear la vulnerabilidad, puede instalar las utilidades telnet, rlogin y ssh o eliminar el archivo /usr/share/applications/ktelnetservice6.desktop.
Fuente: opennet.ru