Nota:
Esta será una serie recurrente de publicaciones que mostrarán diferentes hallazgos de seguridad sobre SonarQube.
A estos hallazgos se le asignó un código CVE-2020-27986
Ante la adopción exorbitante que tienen las herramientas para los procesos DevSecOps en la actualidad, desde nuestro equipo de investigación plantemos la necesidad de escudriñar la seguridad que estas nos proveen y evitar la idea de que con solo tenerlo ya estoy seguro, pues, aunque es contradictorio pensar que algo que nos vende seguridad sea inseguro en sí mismo, siempre es necesario validarlo ya que lo encontraremos en muchas organizaciones.
La marca SonarQube nace como un servicio de evaluación y análisis estático de código, es software libre y permite obtener métricas para mejorar la calidad del código y a su vez, para evaluarlo con intensión de detectar posibles vulnerabilidades basadas en OWASP TOP 10, SAN 25 y las categorías CWE.
En esencia veremos que hay 2 formas de analizar el código, una de ellas es descargando y montando un servidor local con algunas de las opciones que nos provee SonarQube y la otra es haciendo uso directamente del servicio https://sonarcloud.io/ el cual no requiere ninguna configuración o instalación. Todos estos activos se verán en esta serie de publicaciones.
Hay que tener en cuenta que la versión actual (al momento de redactar esta entrada), es la 8.5.
¿Existen servidores públicos con SonarQube?
Validando de forma sencilla con la ayuda de shodan.io y Google dork’s, es posible responder rápidamente esta pregunta:
- El puerto por defecto de instalación es el 9000.
- Las credenciales por defecto de la cuenta administrativa son admin:admin
Ahora bien, para empezar esta seríe de publicaciones vamos a mostrar algo simple pero efectivo, con las siguientes características:
SonarQube ID information:
- Server ID: 32FADB56-AXRx4wuyUe_xmLIBDkFu
- Version: 8.4.2.36762
- Date: 2020-10-15
Con una instalación por defecto (que su gran mayoría conserva), es posible para un tercero sin autenticación poder recolectar las credenciales en texto claro de las siguientes integraciones que se dan con el SonarQube para la configuración con otras herramientas del proceso ágil:
- Gitlab
- SVN
- SMTP
Aplicando y guardando los datos de conexión para estas integraciones:
- Gitlab
- Aplication ID
- Secret
- SVN
- Username
- Password
- SMTP
- SMTP Host
- SMTP Port
- SMTP Username
- SMTP Password
Se puede evidenciar que al consultar directamente el web_api del producto SonarQube, este expone las credenciales en texto claro y sin necesidad de autenticación:
- http://[server]/api/settings/values
Aunque la respuesta por parte del fabricante indica que se debe a un tema de configuración y la responsabilidad recae en el administrador del sitio, se hace énfasis en los siguientes puntos:
- Estas credenciales se están almacenando en texto claro.
- Aún sin una configuración por defecto, un usuario de bajos privilegios creado para ser operativo o solo tener visibilidad sobre los proyectos, tiene los permisos para consultar este endpoint y extraer la información que configuro un administrador.
- No hay un control por defecto para la lectura de estas credenciales, ni tampoco un control de autorización sobre los usuarios menos privilegiados.
Siguiendo con lo anterior, existen ambientes locales o de red interna que conservan una exposición hibrida de los proyectos, en el que unos son privados y otros publicos, por tanto, la “configuración” que recomienda el fabricante no es aplicable. Por ejemplo, direcctamente sobre el servicio cloud de SonarQube que emplea un ambiente hibrido, este endpoint es accesible:
Se continuará esta linea de publicaciones con otros hallazgos de seguridad que han sido reportados directamente a SonarQube.
Saludos.
Leave A Comment