En este post vamos a hablar acerca de una vulnerabilidad descubierta por el equipo de CSIRT-cv y publicada ayer, como podéis ver en su página de alertas. La aplicación afectada es JasperServer,
un servidor para generación de informes, análisis de datos y Business
Intelligence ampliamente utilizado, y que tiene una versión de código
abierto, que es la que se ha demostrado vulnerable.
Durante un test de seguridad realizado a la versión 3.7.0 CE, se
detectó que, además de los parámetros necesarios para ubicar al usuario
en la aplicación, había un parámetro llamado _flowExecutionKey
que iba cambiando cada cierto tiempo, probablemente para controlar el
flujo del usuario dentro de la aplicación. A continuación se puede ver
un ejemplo de petición válida en el sistema:
POST /flow.html?_flowExecutionKey=XXXXXXXXXX&_eventId=create HTTP/1.1
Host: 192.168.1.3
User-Agent: Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.2.12) ...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http:// 192.168.1.3/flow.html?_flowId=userListFlow&curlnk=3
Cookie: JSESSIONID=A7747A6C2AB278B5AD442A8755744184; treefoldersTree=1%7Copen%3B
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 167
userDetails={"userName": "user", "fullName": "User
User", "email": "user@example.com", "password": "user", "enabled": true,
"roles": [{"roleName": "ROLE_ADMINISTRATOR"}]}
Esta petición, con el parámetro _flowExecutionKey correcto,
inserta un nuevo usuario administrador en la aplicación. Examinándolo a
fondo, comprobamos que este campo era relativamente fácil de predecir,
lo que nos hizo pensar en ataques de tipo CSRF.
Decidimos entonces hacer varias pruebas para tratar de engañar a la
aplicación y generar peticiones de adición de usuarios al sistema, con
resultados positivos.
Por aquel entonces (estoy hablando de finales de 2010) se había
publicado una nueva versión de esta aplicación, la 3.7.1 CE, así que la
instalamos, para comprobar que también podíamos introducir usuarios en
el sistema de forma ilegítima si conseguíamos que un usuario autenticado
pulsara en un enlace aparentemente inocuo, pero que contenía la prueba
de concepto que habíamos generado.
“¿Y qué hacemos ahora?”, nos dijimos. Como corresponde con
nuestro trabajo, decidimos informar sobre la vulnerabilidad a
JasperSoft, la empresa desarrolladora del producto. Pudimos hablar con
uno de los comerciales de JasperSoft en España, así como con un técnico,
también español, que nos confirmó el reconocimiento de la
vulnerabilidad por parte de la empresa.
Como suele ocurrir en estos casos, (excepto algunas excepciones),
las conversaciones con la empresa tratando de concretar cuando se iba a
resolver la vulnerabilidad que habíamos encontrado tuvieron una
respuesta pobre y difusa, hasta que, tras contactar con el CERT/CC, que nos sirvió de intermediario y nos ayudó en todo el proceso, JasperSoft concretó la fecha de corrección del fallo en “finales de verano”,
tras lo que nos pusimos a planificar la publicación para el 15 de
septiembre (curiosidades del destino, el día de mi cumpleaños), casi
nueve meses después de que reportaramos la vulnerabilidad a JasperSoft
en primera instancia.
A última hora JasperSoft nos pidió todavía más tiempo para solucionar
la vulnerabilidad, pero tras reunirnos todo el equipo que trabajamos en
CSIRT-cv, decidimos seguir
adelante con la publicación de la vulnerabilidad, ya que creemos que
nueve meses es tiempo más que suficiente para solucionar un problema que
puede comprometer la seguridad de los propios clientes de esta
aplicación.
¿El resultado? Tenéis disponible la alerta en la web de CSIRT-cv, la cual aprovecho para recomendaros desde aquí, así como nuestro informe de la vulnerabilidad en inglés. CERT/CC por su parte también ha publicado su informe de vulnerabilidad, que en este momento ya han copiado dos webs. Suponemos que en breve se irán añadiendo más referencias, entre las que se incluye el CVE-2011-1911, que nos han reservado muy amablemente desde CERT/CC. Iremos añadiendo referencias de otros sitios a medida que vayan apareciendo, si el editor nos lo permite ;)
Como conclusión y tras haber vivido en primera persona un proceso de
reporte de una vulnerabilidad, extraemos que, a pesar de ser un tema de
interés creciente, se suele dar poca importancia a los fallos de
seguridad en las aplicaciones software, lo que hace que el tiempo de
resolución de estos problemas sea, a nuestro juicio, demasiado alto,
dejando a los usuarios expuestos ante ataques que, de haber encontrado
una solución más rápida, no se habrían producido.
0 comentarios:
Publicar un comentario