El
pasado día 20 de julio, algunos de los usuarios de pago del portal de
desarrolladores de Apple recibieron un correo en el cual se les pedía que
resetearan su contraseña. Poco tiempo antes, en la correspondiente web, Apple
colgaba el cartel de mantenimiento sin más información que unas disculpas por
la interrupción del servicio. La red se iba llenando de las quejas de los
desarrolladores. Aunque los motivos no estaban claros, una web cerrada y un
correo del Apple solicitando un reseteo de la contraseña hablaban por si solos:
El sitio había sido objeto de una
intrusión.
Ibrahim Balic se presenta a si
mismo como investigador de seguridad independiente, el cual ha encontrado
varios fallos en la red social Facebook (se encuentra listado en los
agradecimientos del programa Whitehat bajo el pseudonimo 'CanimAnnem'). Según asegura, ha reportado hasta 13 vulnerabilidades distintas a Apple. Balic declaraba, en un
comentario a un post de TechCrunch, que uno de esos fallos reportados a Apple
le proporcionaba acceso a información detallada de los usuarios del portal de
desarrollo, en concreto, como prueba de concepto, extrajo los detalles de las
cuentas de 73 usuarios de pago, algunos de ellos trabajadores de Apple.
El día 21 la propia Apple
modificó el mensaje en el portal de desarrolladores, esta vez indicaba que,
efectivamente, el motivo del cierre
temporal había sido una intrusión. La reacción de Balic, ante esta
declaración de Apple, fue la de aclarar públicamente, a través de Twitter, que
él era quien estaba detrás del ataque pero que no quería que fuese considerado
una acción maliciosa sino producto de su investigación, la cual, además había
sido reportada previamente a Apple.
La respuesta de Balic, ante el
silencio de Apple y su acusación indirecta, le llevó a dar un paso más,
grabando un video del resultado de su investigación. En el video, colgado en
YouTube (actualmente borrado por el propio Balic), podía observarse cómo
extraía progresivamente la información de las cuentas de los desarrolladores.
El problema, desde el punto de vista ético, es que en el video se podía ver
claramente datos concretos y personales sobre las cuentas, hecho que fue
criticado en las redes sociales. Habitualmente este tipo de información es
borrada o disimulada para hacerla ilegible, pero por algún motivo (¿Las prisas
por aclarar las acusaciones?) Balic no lo hizo.
Una semana después Apple volvió a
abrir el portal de desarrolladores tras parchear la vulnerabilidad y aunque sin
respuesta de Apple, el propio Balic continuó su trabajo e incluso volvía a
reportar vulnerabilidades (un Cross-site scripting permanente en iTunes
Connect).
Hipótesis sobre el fallo de seguridad
El mismo día 22 de julio, un usuario del sitio Hacker
News comentaba, presumiblemente tras ver el video, la posibilidad de que la
vulnerabilidad podría encontrarse en el framework Struts. Un framework para
aplicaciones web basado en Java y desarrollado por la fundación Apache. Java es
un lenguaje ampliamente usado por Apple en sus sitios web. El usuario indicaba
que la semana anterior un boletín de seguridad crítico describía la posibilidad
de ejecutar código remoto a través de OGNL (Object Graph
Navigation Library), un lenguaje de expresión usado por Struts para el acceso
avanzado a propiedades de objetos Java. Se da la circunstancia de que este
mismo usuario de Hacker News declaraba ser anterior colaborador del proyecto
Struts y posiblemente el responsable de la vulnerabilidad.
La vulnerabilidad en concreto
reside en la clase DefaultActionMapper del paquete org.apache.struts2.dispatcher.mapper.
Dicha clase proporciona un método para operar sobre acciones que contengan como
prefijo: "action:", "redirect:" y "redirectAction:". El problema es
que no efectúa un filtrado adecuado de los valores que son asignados por el
cliente. Posteriormente dichos valores son evaluados por el lenguaje de
expresión OGNL posibilitando que se ejecute código (Java) malicioso en el
servidor.
El fallo, ya corregido, tiene
asignado el CVE-2013-2251 y fue reportado por Takeshi Terada de Mitsui Bussan
Secure Directions.
Más información:
Hacker News
OGNL
Reporte del fallo en el
bugtracker de Struts
Struts 2 Remote Code Execution via OGNL Double
Evaluation
David García
Twitter: @dgn1729
No hay comentarios:
Publicar un comentario