sábado, 27 de julio de 2013

Algunos apuntes sobre la intrusión en los servidores de Apple

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 en la entrada