Vulnerabilidad día cero de ejecución remota de código en marketplace PlingStore de Linux

El equipo de investigadores KDE Discover ha publicado contantes informes sobre cómo las aplicaciones de escritorio populares manejan URI proporcionados por los usuarios, lo que en casos determinados permite la explotación de algunas vulnerabilidades en sitios web Linux PlingStore. Durante la investigación, se detectó una falla de scripts entre sitios (XSS) en sitios web de e-commerce basados en Pling, y una falla de ejecución remota de código (RCE) en PlingStore. Estas fallas recién fueron corregidas en junio de 2021.

Como algunos usuarios ya sabrán, Pling es una aplicación de instalación y administración de contenido para sitios web compatibles con OCS como pling.com, gnome-look.org y appimagehub.com, entre otros. Permite descargar, instalar y aplicar temas de escritorio, temas de iconos, fondos de pantalla o cursores de mouse directamente en varios entornos de escritorio utilizando el botón “Instalar”.

Vulnerabilidad XSS

Los expertos recuperaron y mostraron datos de https://store.kde.org. Mientras creaban su propia lista para analizar el manejo de URI de Discover, se detectó una falla XSS.

Si bien una primera carga útil XSS simple no funcionó, fue suficiente agregar primero un iframe y luego la carga útil maliciosa de JavaScript en una línea separada para explotar esta falla:

Este error XSS podría usarse para modificar listados activos o publicar nuevos listados en la tienda Pling en el contexto de otros usuarios, lo que da como resultado una condición XSS.

Ejecución remota de código

Todas las tiendas basadas en Pling anuncian el uso de la aplicación nativa PlingStore, una aplicación de Electron que puede mostrar los diferentes sitios web y permite una fácil instalación de la aplicación con 1 clic.

Cuando se inicia la aplicación PlingStore, también inicia ocs-manager, un servidor WebSocket local que escucha los mensajes de electron.ocs-manager implementa varias funciones que serán invocadas por la aplicación Electron para recuperar información o desencadenar acciones. Los expertos descubrieron que, combinando tres llamadas a estas funciones, es posible ejecutar código arbitrario.

Durante las pruebas, los expertos lograron desencadenar tres acciones:

  • Llamar a ItemHandler::getItem para descargar una AppImage desde cualquier URL como type bin
  • Llamar a ConfigHandler::getAppConfigInstallTypes para filtrar la ruta completa del directorio bin
  • Llamar a SystemHandler::openUrl con la ruta AppImage como argumento

Si se activa el error XSS dentro de la aplicación Electron, la carga útil puede establecer una conexión con el servidor WebSocket local y enviar mensajes para ejecutar código nativo arbitrario.

Abuso de navegadores web

Debido a que los navegadores web no implementan la política del mismo origen para conexiones WebSocket, es importante validar el servidor de origen o implementar un mecanismo de autenticación adicional mediante WebSocket.

Tal situación no se aplica en ocs-manager, por lo que cualquier sitio web en cualquier navegador puede iniciar una conexión al servidor WebSocket, y ocs-manager aceptará cualquier comando enviado sin realizar mayores comprobaciones.

El ataque se completa dirigiendo a los usuarios a un sitio web malicioso, lo que es posible hacer desde cualquier navegador con PlingStore ejecutándose en segundo plano. En su prueba de concepto (PoC), los expertos emplearon una carga útil a través de un archivo AppImage para lanzar un xmessage con una cadena personalizada como argumento para completar la ejecución de código.

Los expertos demostraron la explotación de múltiples vulnerabilidades que representan severos riesgos de seguridad para los operadores de sitios web de e-commerce. Como recomendación, los desarrolladores de los productos afectados deben realizar análisis estrictos para abordar todas las posibles fallas detectadas.

Para conocer más sobre riesgos de seguridad informática, malware, vulnerabilidades y tecnologías de la información, no dude en ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS).