Vulnerabilidad sin parchar en Pling permite ataques a la cadena de suministro en Linux
Una vulnerabilidad de seguridad de secuencia de comandos entre sitios (XSS) almacenada sin parches está afectando Linux. Según los investigadores, la mencionada vulnerabilidad podría permitir ataques a la cadena de suministro y ataques con gusanos.
Los investigadores de Positive Security descubrieron que la vulnerabilidad afectaba las tiendas basadas en Pling, incluidos AppImage Hub, Gnome-Look, KDE Discover App Store, Pling.com y XFCE-Look.
Para iniciar, la aplicación PlingStore se ve afectada por una vulnerabilidad de ejecución remota de código (RCE) sin parches. Según los investigadores, la vulnerabilidad se puede activar desde cualquier sitio web mientras la aplicación se está ejecutando, lo que permite ataques drive-by (descargas no autorizadas).
PlingStore es una aplicación de instalación y administración de contenido que actúa como un escaparate digital consolidado para los diversos sitios antes mencionados. Estos sitios ofrecen software y complementos de Linux. PlingStore permite a los usuarios descargar, instalar y aplicar temas de escritorio, iconos, fondos de pantalla, cursores del mouse, etc. directamente usando el botón “Instalar”.
Según Fabian Bräunlein de Positive Security no pudieron contactar al equipo de seguridad para informarles sobre la vulnerabilidad descubierta. Por ello, los investigadores decidieron publicar estas vulnerabilidades sin parche para advertir a los usuarios.
Vulnerabilidad XSS en Linux
La vulnerabilidad de XSS almacenado la descubrieron por primera vez afectando a KDE Discover. El XSS almacenado, también conocido como XSS persistente, se produce cuando un script malicioso se inyecta directamente en una aplicación web vulnerable. A diferencia de XSS reflejado, un ataque almacenado solo requiere que la víctima visite una página web comprometida.
“Mientras creaba mi propia lista para probar el manejo de URI de Discover, me topé con un campo que parecía XSS por diseño. Si bien un payload simple XSS no funcionó, fue suficiente agregar primero un iframe y luego el payload malicioso de JavaScript en una línea separada”.
Después de agregar un payload XSS en la sección de código HTML, descubrió que el XSS podría activarse al visitar una lista maliciosa en el sitio afectado.
Los atacantes podrían aprovechar la vulnerabilidad para modificar los listados activos o publicar nuevos listados en las tiendas basadas en Pling. Ellos podrían realizarlo en el contexto de otros usuarios, lo que daría como resultado un XSS con gusanos
Además de las implicaciones típicas de XSS, esto permitiría desplegar un gusano XSS para realizar un ataque a la cadena de suministro. Para lograr el objetivo se tiene que utilizar un payload de JavaScript que realice dos pasos. En primer lugar, cargar una nueva versión (con puerta trasera) del software. Y, en segundo lugar, cambiar los metadatos de los listados de las víctimas para que ellos mismos incluyan este payload.
Esencialmente, cualquiera de los activos descargables podría verse comprometido, por lo que se debe advertir a los usuarios del peligro. Deben saber que cualquier listado en cualquiera de los sitios afectados podría secuestrar la cuenta de un usuario en la plataforma a través de XSS.
PlingStore vulnerable a ataques de ejecución remota de código (RCE)
Mientras tanto, la aplicación PlingStore también permite que se active la vulnerabilidad XSS, según Bräunlein, pero el daño también se puede escalar a RCE. Eso es porque la aplicación por diseño puede instalar otras aplicaciones, con un mecanismo incorporado para ejecutar código en el nivel del sistema operativo.
“Resulta que ese mecanismo puede ser aprovechado por cualquier sitio web para ejecutar código nativo arbitrario mientras la aplicación PlingStore está abierta en segundo plano”
Cuando el XSS se activa dentro de la aplicación, el payload puede establecer una conexión con el servidor WebSocket local. Además, el payload puede enviar mensajes para ejecutar código nativo arbitrario (descargando y ejecutando un archivo AppImage).
Cuando se inicia la aplicación PlingStore, también inicia ocs-manager, un servidor WebSocket local que escucha los mensajes de [la aplicación]. Ocs-manager implementa varias funciones, que pueden ser invocadas por la [aplicación] para recuperar información o desencadenar acciones.
Los investigadores descubrieron que, al combinar las siguientes tres llamadas a funciones, es posible ejecutar código arbitrario:
- Llamar a “
ItemHandler::getItem
” para descargar una AppImage desde cualquier URL como tipo bin. - Llamar a “
ConfigHandler::getAppConfigInstallTypes
” para filtrar la ruta completa del directorio bin. La ruta de forma predeterminada en el directorio de inicio, por lo tanto, depende del nombre de usuario - Llamar a “
SystemHandler::openUrl
” con la ruta AppImage como argumento. Esta implementa un manejo especial para que los archivos AppImage los ejecuten en lugar de iniciarlos con la aplicación predeterminada
Los navegadores no implementan la política del mismo origen para las conexiones WebSocket. Por lo tanto, es importante validar el servidor de origen o implementar autenticación adicional a través de la conexión WebSocket. Con ocs-manager, este no es el caso, lo que significa que cualquier sitio web en cualquier navegador puede iniciar una conexión con el servidor WebSocket. Esto significa que ocs-manager aceptará felizmente cualquier comando enviado.
El investigador publicó un exploit de prueba de concepto (PoC). El PoC muestra que el ataque se puede llevar a cabo visitando un sitio web malicioso en cualquier navegador.
Sin parches a la vista
Bräunlein dijo que intentó contactarse con Pling por primera vez en febrero, pero después de meses de probar varias vías decidió revelar públicamente los problemas. Él intento contactarse por correo electrónico a la dirección de “contacto”, chats, llamadas telefónicas a la organización y su director ejecutivo y no tuvo éxito.
Sin embargo, uno de los sitios, KDE Discover, respondió de inmediato y publicó un parche y un aviso en marzo.
Los mercados de aplicaciones se encuentran en la intersección de dos mundos. El contenido proporcionado por el usuario, en su mayoría presentado al usuario con tecnología web; y la gestión e instalación de aplicaciones nativas. Si bien el # 1 generalmente se considera muy poco confiable y con un gran espacio aislado, las integraciones de App Store crean un puente hacia el # 2, un área que requiere un alto nivel de confianza.
En este entorno, incluso las vulnerabilidades relativamente pequeñas (comprobación de origen faltante) pueden tener consecuencias graves. Por ejemplo, ejecución remota de código desde cualquier navegador con la aplicación vulnerable ejecutándose en segundo plano. Por lo tanto, los desarrolladores de tales aplicaciones deben someterse a un alto nivel de escrutinio para garantizar su seguridad.
El investigador instó a los usuarios de los sitios basados en Pling a evitar el uso de las aplicaciones de PlingStore. Además, sugirió cerrar la sesión de sus cuentas para los sitios web afectados hasta que se hayan solucionado los problemas.