5 de noviembre de 2017

Sistemas de comunicación marítima con vulnerabilidades típicas de hace una década

La empresa de seguridad IOActive ha descubierto dos vulnerabilidades críticas en AmosConnect 8, un software de comunicaciones marítimas. Estas vulnerabilidades permiten comprometer el servidor del barco que contiene este software.
AmosConnect 8 es un sistema de comunicaciones marítimas enfocado a barcos. Optimizado para trabajar con el recurso costoso que es una conexión satélite a Internet, permite el envío de correos, la navegación por Internet, reportar la posición del barco, mensajería instantánea... Este software se instala en un servidor conectado a un terminal de comunicación de datos via satélite.
IOActive, que lleva unos años analizando la seguridad de este tipo de sistemas, ha encontrado dos vulnerabilidades en el panel web de acceso al servidor de AmosConnect. Ambas vulnerabilidades llaman la atención, pues una de ellas usa una variante sofisticada del ataque de inyección SQL, y otra permite ejecutar código arbitrario con privilegios de administrador gracias a una cuenta oculta de administración con contraseña fácilmente calculable.
La primera de las vulnerabilidades es de la familia de las inyecciones SQL (concretamente la variante a ciegas, blind). La variante básica de este ataque está a punto de cumplir 20 años (se considera que la primera mención pública fue en 1998), y la solución simplemente consiste en usar una librería muy fácil de usar (habrá cientos de ellas, y para cualquier plataforma). Es por esto que llama la atención esta vulnerabilidad a estas alturas de la película. La variante blind complica la extracción de información, pero no la hace imposible.
En este caso, el nombre de usuario y la contraseña de los usuarios en el servidor de AmosConnect se almacena en texto plano en la base de datos, con lo que es trivial extraer esa información con las herramientas adecuadas. Concretamente, la URL vulnerable es aquella que recibe la petición de autorización en el panel de acceso web (en su parámetro 'data[MailUser][emailAddress]'):
La segunda vulnerabilidad es más grave todavía, combinación de dos errores clásicos: la existencia de una cuenta de administración oculta, y que una contraseña se genere usando información pública. Los investigadores se dieron cuenta de la existencia de código dentro del sistema de autenticación que manejaba la posibilidad de autenticarse con una cuenta oculta que además poseía privilegios de administración, con nombre SysAdmin. Y dentro de ese código, vieron cómo la contraseña de esa cuenta se generaba únicamente usando la ID de soporte del producto, que aparece públicamente en el panel web de acceso...
Una vez dentro de esta cuenta de administración, es posible crear tareas desde el panel para que se ejecuten a nivel de sistema operativo con  privilegios de administrador, con lo que se puede ejecutar código arbitrario y comprometer completamente el servidor.
La pregunta clave es: ¿Cómo de grave es esto?
Pues bien, la respuesta es que bastante, pero no como para causar un escándalo. La vulnerabilidad no se puede explotar desde fuera de la red del barco, pero comprometer desde cero un servidor local no es ninguna tontería. Y además, está el problema de que la red no esté bien aislada y se pueda saltar a otros servidores, o que incluso en el mismo servidor estén instalados otros servicios críticos de navegación... En cualquier caso, la versión a la que afecta dejó de ser soportada hace meses. Los servidores proporcionados por la empresa del software están cerrados para la versión afectada, para forzar a sus usuarios a que cambien de versión.
Más información:
Fuente: Hispasec.com