domingo, 13 de junio de 2010

Full Disclosure


¿Publicar una debilidad de día cero o no? Ahí está la cuestión. El pasado 5 de junio, el investigador de seguridad Tavis Ormandy notificó a Microsoft de una debilidad en su sistema operativo XP.

Recordemos que una debilidad de día cero es aquella para la cual no existe un parche (solución) del fabricante. En fin, siguiendo con la historia, cinco días después de dar notificación, el investigador decide publicar en Internet detalles de la vulnerabilidad y además escribe código de concepto (el paso previo al código de explotación que sirve para atacar a un sistema).

Algunos puntos a considerar.

El investigador Tavis trabaja para Google. Él afirmó que su investigación es independiente de su empleador y que es un trabajo personal. Sin embargo suena raro, sobre todo después de que Google anunciara hace apenas unas semanas que dejaría de usar Windows; a raíz de la declaración hubo roces entre las dos compañías. Si las dos empresas traen “pique”, realmente es una investigación independiente? Si lo es, Tavis escogió un pésimo momento.

El señor Ormandy publicó su vulnerabilidad de día cero el jueves 10 de junio en Internet. Microsoft liberó una serie de parches el 8 de junio. En el mundo underground, esto se ha llevado a cabo para maximizar el tiempo de solución: se libera una debilidad de día cero días después del segundo martes del mes para tener un mes sin parche (si los ataques son limitados, es probable que no se emita una solución de emergencia). Extraño que Ormandy siga la misma estrategia del undergr0und.

Como mencionamos, Ormandy avisó a Microsoft de la debilidad el sábado 5 de junio y recibe notificación de recibido; el 10 sube los detalles a Internet. Darle cinco días a un fabricante para que libere un parche es francamente irreal y a mi entender no había urgencia para hacerlo. Además Ormandy afirma que tuvo que sacar código de concepto, de otra manera Microsoft hubiera ignorado su trabajo. Amigo Ormandy, ese argumento no me lo trago.

Google predica la revelación responsable (responsible disclosure) y lo expresa así públicamente. Tons, “mi no entender”. La empresa tiene una postura para cuando un investigador descubre una debilidad en su software pero no aplica para sus propios empleados? Google dice de la revelación responsable: “Permite a compañías como Google mantener a sus usuarios seguros mediante la solución de vulnerabilidades y la resolución de problemas de seguridad antes de que llamen la atención de algunas personas con intenciones poco honestas. Animamos vehementemente a todos los interesados en búsqueda y notificación de problemas de seguridad a observar los sencillos protocolos y normas de la revelación responsable”.

Todo este asunto trae a discusión el tema del full disclosure, que se refiere a publicar las debilidades y sus detalles a la comunidad para presionar a los fabricantes de software con el fin de que se apuren a desarrollar sus parches. Se dice que sólo así los fabricantes se ponen las pilas y que de otro modo se tardan muchísimo tiempo para dar solución. Esto sin olvidar que durante el tiempo que tarda la solución (parche), el software permanece vulnerable.

¿Qué hacer? Si uno es un investigador y descubre una debilidad, cuál es el camino a seguir? ¿Publicar la vulnerabilidad, esperar, avisar al fabricante, vender el bug en el underground o usarla uno mismo? Es una pregunta que no tiene una respuesta tajante y absoluta, como dicen por ahí: depende del cristal con que se mire.

En mi opinión personal, pienso que no hay que ser absolutos: ni publicar la debilidad con detalles sin darle tiempo al fabricante para responder, pero tampoco esperar pacientemente meses o años hasta que el fabricante reaccione y publique la solución. Yo seguiría este camino en general:

A).- Descubro una debilidad.

B).- Notifico al fabricante y le informo que en un mes publicaré en Internet información de la debilidad sin detalles y en dos meses daré dichos detalles acompañados de código de concepto.

C).- Guardo la información intercambiada -con fechas- para tener evidencia de lo acordado. Por si el fabricante se quiere pasar de listo y evadir responsabilidad.

D).- Cumplo lo establecido en el punto “B”.

Con lo anterior, no se le da al fabricante un tiempo ilimitado para solucionar la falla, pero tampoco me veo radical y publico mis hallazgos a la brevedad.

Como dije hace unos párrafos, el full disclosure tiene puntos de vista diversos, como los de @taviso, los de Bruce Schneier o los de usted, amable lector.