Una falla lógica entre el sistema de sugerencias de paquetes ‘command-not-found’ de Ubuntu y el repositorio de paquetes Snap podría permitir a los atacantes promover paquetes de Linux maliciosos a usuarios desprevenidos.
El problema surge de la capacidad de la utilidad para sugerir paquetes Snap para la instalación cuando están ausentes, sin un mecanismo de validación para garantizar que los paquetes sean auténticos y seguros.
La brecha fue identificada por investigadores de Aqua Nautilus, quienes descubrieron que aproximadamente el 26% de los comandos de paquetes de Advanced Package Tool (APT) están en riesgo de ser suplantados por paquetes Snap maliciosos, lo que representa un riesgo significativo para la cadena de suministro de usuarios de Linux y Windows Subsystem for Linux (WSL).
Es importante destacar que, aunque el informe de Aqua Nautilus se enfoca en Ubuntu, el problema tiene implicaciones más amplias que van más allá de esta distribución de Linux.
Por ejemplo, cualquier bifurcación de Ubuntu o distribución de Linux que utilice la utilidad ‘command-not-found’ por defecto, junto con el sistema de paquetes Snap, también podría ser vulnerable.
Falta de verificaciones en todos los pasos
La herramienta ‘command-not-found’ es un script en Python que sugiere la instalación de paquetes y facilita la ejecución de un programa específico que no está instalado actualmente.
Por ejemplo, si deseas ejecutar el comando «mojo» pero el programa no está instalado, el script ‘command-not-found’ te ofrecerá sugerencias de paquetes para su instalación, permitiéndote utilizar el comando de manera efectiva.
No obstante, su seguridad se fundamenta en la premisa de haber realizado una diligencia adecuada en los niveles más básicos de la cadena de suministro para garantizar la idoneidad de los paquetes sugeridos por la utilidad.
El mecanismo de sugerencia de la herramienta se apoya en una base de datos interna para paquetes APT y en una base de datos de la Snap Store, que se actualiza periódicamente, para paquetes Snap.
Esto permite correlacionar comandos con los respectivos paquetes.
Como lo expone Aqua Nautilus, resulta relativamente sencillo para los atacantes publicar snaps maliciosos en la Snap Store, dado la ausencia de procesos de revisión rigurosos en comparación con los paquetes APT.
Los paquetes Snap pueden ser clasificados como «strict» o «classic», siendo los primeros limitados al software en un entorno aislado, mientras que los segundos tienen acceso no restringido, similar a los paquetes APT.
Aunque los atacantes pueden asumir el riesgo de publicar aplicaciones maliciosas como «classic», estas requieren una revisión manual antes de ser aprobadas.
Las posibilidades de superar estas revisiones son elevadas si la funcionalidad maliciosa está oculta de manera efectiva.
Los investigadores destacan que incluso los snaps «strict» representan un riesgo considerable, ya que pueden abusar de la opción de utilizar «interfaces» para interactuar extensivamente con recursos externos o el servidor de pantalla del sistema anfitrión, especialmente cuando se utiliza X11.
Esto podría posibilitar el espionaje de otras aplicaciones y la realización de keylogging.
Adicionalmente, los analistas de Aqua resaltan la amenaza de aprovechar la función de actualización automática de los paquetes snap para introducir exploits «nuevos» en un sistema comprometido, dirigidos a vulnerabilidades recién descubiertas.
Un ejemplo concreto de este riesgo se relaciona con las vulnerabilidades en el kernel de Linux.
Dado que los paquetes snap comparten el mismo kernel del sistema que todo el software en ejecución, existe la posibilidad de explotar una vulnerabilidad para evadir el entorno aislado.
Riesgos de cyberocupación y suplantación
Todo lo anterior establece las condiciones para una situación potencialmente peligrosa, siempre y cuando los atacantes encuentren una manera de promover sus paquetes a través de la utilidad ‘command-not-found’.
No obstante, según explican los analistas, existe un amplio margen para llevar a cabo dicho proceso.
El primer y más sencillo método es asociar comandos con errores de escritura (por ejemplo, ‘ifconfigg’ en lugar de ‘ifconfig’) con paquetes snap maliciosos.
Esto ocasiona que la utilidad ‘command-not-found’ sugiera la instalación de malware al usuario, quien es poco probable que se dé cuenta de su error tipográfico en ese momento.
El segundo método implica que los atacantes identifiquen y registren nombres de snaps no reclamados que los usuarios podrían esperar que existan, a menudo porque corresponden a comandos o alias conocidos.
«Si un desarrollador desea que su snap ejecute un comando que se desvíe del formato <nombre del snap>.<nombre de la aplicación> y no sea simplemente <nombre del snap>, deben solicitar un alias», explican los investigadores.
«Dicha solicitud inicia un proceso de revisión manual en el que se vota sobre el alias solicitado para asegurarse de que se alinee con la aplicación«.
Sin embargo, si los desarrolladores no registran un snap real bajo este alias, un actor amenazante puede cargar sus propios paquetes con ese nombre, que luego serán sugeridos por la herramienta ‘command-not-found’.
Este enfoque explota un vacío en el sistema de nombres y alias de snaps, permitiendo la suplantación de software legítimo sin la necesidad de solicitudes de alias, aprovechando nombres no reservados pero predecibles.
El tercer método de ataque implica registrar paquetes snap maliciosos para paquetes APT legítimos, de modo que la utilidad ‘command-not-found’ sugiera ambos.
Aqua Nautilus afirma que el 26% de los comandos pueden ser explotados de esta manera, ya que muchos editores de software legítimo no han reclamado el alias de paquete snap correspondiente para su proyecto, lo que permite a los atacantes un margen para la explotación.
Los analistas de seguridad señalan que actualmente se desconoce el volumen de explotación de los problemas mencionados, pero al menos han surgido dos casos (caso 1, caso 2).
Algunas medidas que se pueden tomar para mitigar los riesgos incluyen que los usuarios verifiquen la autenticidad de los paquetes que están a punto de instalar, que los desarrolladores de Snap mantengan un registro de alias que sean similares a sus aplicaciones, y que los mantenedores de paquetes APT registren el nombre de Snap asociado para sus comandos.