José A. Vazquez, investigador de seguridad: “Creo que Apple no lo hace mal siempre que se les reporte los errores”

Entre los diferentes problemas de seguridad solucionados en la última actualización de Safari 5.1.1 se encontraba una vulnerabilidad reportada por un español, José A. Vazquez que encontró un problema de corrupción de memoria de Webkit, el motor bajo Safari, que podía permitir a un usuario malicioso preparar una página especialmente malformada que forzara la salida inesperada de todos los navegadores basados en Webkit (que son ya unos cuantos) o ejecutar código arbitrario.

José Antonio Vázquez González, de 28 años y nacido en Jaén, ha cursado estudios de Ingeniería técnica de Telecomunicación (Especialidad: Telemática), Ingeniería de Telecomunicación (Especialidad: Telemática y Comunicaciones) y desde hace año y medio es Investigador de seguridad independiente desde aproximadamente año y medio, principalmente, trabajando como bug hunter en navegadores y aplicaciones web.

Hoy nos sentamos con él para hablar sobre seguridad, navegadores y sitios web.

Faq-mac: Hola José, muchas gracias por atendernos

José A. Vazquez:

Gracias por darme la oportunidad de expresar mis opiniones respecto a un tema que nos afecta a todos los usuarios. En definitiva, todos usamos navegadores web en nuestro día a día, ya lo hagamos desde un PCs, Smartphones, Tablets, etc.

FM: ¿Cómo acabaste auditando navegadores y aplicaciones web? Cuéntanos tu historia, por favor

JAV:Bueno, mi historia en estos dos sectores comienza justo nada más acabar la carrera técnica, verano de 2007.

Antes de comenzar el segundo ciclo, me trasladé a Granada para aprovechar el verano sacando algo de dinero, estuve alrededor de 2 meses y cuando terminé, me quedé alrededor de 1 mes más por diversión. Fue en ese momento, cuando empiezo a despertar el gusanillo. De vuelta en Linares y durante el periodo que tardé en terminar el segundo ciclo fui aprendiendo más cosas sobre seguridad y empecé a auditar aplicaciones web. Revisaba toda aplicación que pasaba por mis manos, reportaba los fallos a sus creadores y publicaba los resultados.

Poco a poco, fui descubriendo que el dinero, para una persona totalmente independiente sin tener contactos o clientes y ni tan siquiera amigos, compañeros o conocidos del sector, no estaba ahí. Conocí iniciativas públicas como idefense, zdi, etc. donde los investigadores de seguridad conseguían (y siguen consiguiendo) compensaciones por sus descubrimientos y al

mismo tiempo, el asunto era reportado y completamente acreditado de forma responsable.

Una vez terminado el proyecto en diciembre de 2009, inicié el proceso de búsqueda de empleo, mientras seguía con mi afición de buscar vulnerabilidades en aplicaciones web y al mismo tiempo, empezaba a entender cómo funciona el proceso de buscar vulnerabilidades en productos como procesadores de textos, navegadores web, etc.

FM: Hay quien piensa que internet es un gigante con pies de barro y que todos los problemas de seguridad empiezan por unos estándares que ya de por si son inseguros ¿Es esto cierto?

JAV: Bueno, de igual modo se piensa sobre determinados formatos (como por ejemplo PDF) donde se afirma que son estándares inseguros por naturaleza. Realmente no te puedo ofrecer una opinión formada al respecto, puesto que en mi caso (navegadores web) los errores no suelen venir de los estándares sino de la forma en que el navegador interpreta esos propios estándares.

FM: Hay quien piensa que en cualquier momento se va a desatar el apocalípsis digital: ¿Tan mal está la seguridad en términos generales o hay gente lista con muchas ganas de ganar dinero o hacer daño?

JAV: La verdad es que no sé si habrá apocalípsis digital en 20/11/2011, 20/12/2012 o cuando será…

No, ahora en serio. Creo que la cosa está peor de lo que aparentemente parece, viendo casos de malware como Stuxnet o el reciente Duqu, de dudosa procedencia y de altísima complejidad, o los casos en las CAs que generan los certificados digitales.

FM: cuando uno se sienta a estudiar un navegador o el motor subyacente que hay detrás, simplemente ¿uno se encuentra estos problemas? ¿Hay que seguir una metodología muy estricta para encontrarlos?

JAV: En resumen, el proceso de búsqueda de vulnerabilidades, se puede afrontar desde dos perspectivas complementarias: Reversing y/o Fuzzing.

El primero consiste en hacer ingeniería inversa del software que se estudia y a través del entendimiento de cómo está hecho, encontrar errores.

El segundo consiste en generar un número de muestras, estrellarla contra la aplicación destino y cruzar los dedos para que ocurra algo, al mismo tiempo que se monitoriza y depura el proceso, para su posterior análisis.

Teniendo en cuenta la complejidad de las aplicaciones y del proceso de reversing, cuando buscas bugs por ejemplo en navegadores, es indispensable emplear una herramienta que haga el proceso automatizado de fuzzing, es decir, un fuzzer. Este ha sido mi gran proyecto desde hace ya más de año y medio. Sin embargo, no se puede dejar el reversing de lado, puesto que será necesario para entender

(analizar) completamente donde está el problema.

FM: A tu entender, y hablando en general, ¿Qué se está haciendo mal a la hora de crear navegadores? ¿cuales son los pecados mas comunes?

JAV: No creo que se esté haciendo algo mal a la hora de crearlos, más bien el problema viene que porque los navegadores son aplicaciones que tienen un gran repertorio de variables de entrada (cabeceras HTTP, tags HTML, propiedades CSS, Javascript, XML, SVG, etc, etc). Así pues, son aplicaciones complejas que tienen que interpretar cada una de estas entradas de forma más o menos semejante.

Para cualquier aplicación, tener muchos parámetros de entrada, se puede asemejar a una casa con muchas puertas o ventanas, en algún momento podemos dejar una entre-abierta o simplemente mal-cerrada.

Por otra parte, sin duda las vulnerabilidades más comunes en los navegadores son usos de memoria no inicializada o previamente liberada: use-after-free. Otros pecados usuales son las corrupciones de memoria (memory corruptions) y violaciones de política acceso (de origen cruzado, dominio cruzado, etc).

FM: ¿Es tan malo Internet Explorer como dicen? ¿o es peor Safari?

JAV: Cuando encuentras una vulnerabilidad que puedes postear en twitter y de hecho así hizo otra persona. que simplemente necesita 1 tag HTML y dos propiedades CSS para romper todas las versiones (por aquel entonces, 6, 7 y 8) de este navegador te hace preguntarte que QA (Quality Assurance) ha pasado este producto.

En cuanto a Safari, no tengo casos propios excesivamente escandalosos pero ver este caso reciente que más bien parece un bug de hace 10 años, te obliga a plantearte lo mismo.

Pero mi opinión es que no es una cuestión exclusiva de estos dos, creo que también pasa en el resto de navegadores. Sin embargo la mayoría de las críticas se centran en estos dos, debido a la cuota de mercado que ambos ocupan, o mejor dicho, a la cuota de mercado que ocupan los sistemas operativos (Windows/MacOS) en los que vienen instalados por defecto.

Como usuarios y clientes de sus productos que somos, debemos de ser críticos con ellos y exigir la máxima calidad y seguridad.

FM: ¿Y Webkit? ¿Que tal lo está haciendo a nivel de seguridad? ¿podría hacerlo mejor?

JAV: Sinceramente, mi opinión es que Webkit está mejorando notablemente y sobretodo gran parte debido al programa de recompensas desde Chromium. Respecto a esto, el gran número de bugs reportados y parcheados en Webkit, la opinión general se divide entre los que piensan que esto indica lo sumamente inseguro que es Webkit y ya veremos lo siguiente y por otro lado, los que opinan que esto indica que se están haciendo bien las cosas y se reducen los vectores de ataque. Mi pensamiento se acerca más al segundo grupo, creo que esto indica que se está asegurando más y se corrigen rápidamente (no tanto en Safari).

Por otra parte, la introducción de sandboxing en Safari 5 y la llegada de Webkit2, incrementa la dificultad de explotación en sistemas MacOS, lo cual no significa que sea imposible sino más difícil.

FM: A tu entender, ¿Qué características básicas de seguridad debería reunir un navegador para poder considerarse seguro o bastante seguro?

JAV:

  • ASLR “completo” (Todos)
  • Sandbox (Chrome, Internet Explorer, Safari).
  • Frame poisoning (Firefox).
  • Filtro anti-XSS (que yo sepa Internet Explorer, Chrome, Safari (desde 5.1) y Firefox usando add-ons).
  • Hay que notar que el primer punto se cumple actualmente en todos los SOs y navegadores actuales, aunque no del todo en determinados módulos que se pueden cargar a posteriori (Ejemplo: Actual versión estable de Java para Windows).

    FM: Si pudieras recomendar alguna política general a seguir para mantener al usuario de la calle en un entorno seguro a la hora de navegar, ¿Qué le recomendarías?

    JAV: Mi opinión es que hay que andarse con mucho cuidado, vigilar bien por donde se navega, mantener los sistemas completamente actualizados, no emplear software no confiable o pirata (en su lugar emplear freeware/open source), tener un antivirus instalado y actualizado (sí, también en MacOS), firewall, etc.

    Al margen de esto, una cuestión destacable es que la industria del malware siempre se mueve por las cuotas de mercado, con lo cual esta gente siempre estará buscando en las aplicaciones más empleadas, puesto que así conseguirán el mayor impacto (beneficio) posible. Una posible forma de desmarcarnos, es emplear aplicaciones menos habituales, claro que con sus limitaciones o si son lo suficientemente buenas, esperando el día en que se hagan populares, para pasar a convertirse en objetivo.

    FM: Se que te vamos a poner en un compromiso, pero para tu uso personal ¿Qué navegador prefieres? ¿Porqué?

    JAV: Estaba esperando la pregunta trampa… No, no hay problema. No estoy casado con ninguno y te voy a concretar bastante.

    En cuanto a navegadores, dejando el lab aparte (donde puedes encontrar todos los que mandan en el mercado). En casi todos suelo evitar el navegador por defecto (Internet Explorer y Safari) y suelo emplear sobretodo Firefox/Chrome para mi uso habitual, excepto en el MacOSX donde navego exclusivamente con Chrome.

    FM: También has auditado ciertas aplicaciones web, entre ellas algunas de Apple. ¿Qué tal lo hace Apple en seguridad? ¿Debemos confiar los usuarios? ¿Hay que tomar medidas adicionales?

    JAV: La mayoría de vulnerabilidades que he encontrado en Apple han sido XSS que se podrían parar con un filtro anti-XSS y que representan un riesgo medio para los usuarios, puesto que exigían cierta ingeniería social para

    conseguir un ataque con éxito.

    El resto de vulnerabilidades son de servidor y la verdad que en estos casos poco se puede hacer nada más que esperar que se arreglen lo antes posible por parte del fabricante.

    Creo que Apple (al igual que Microsoft) no lo hace mal siempre que se les reporte las vulnerabilidades.

    FM: Muchas gracias José, por tus amables palabras.

    JAV: Gracias de nuevo a todo el equipo de faq-mac por su amabilidad y libertad para expresar mis humildes opiniones.

    Por último, quiero mandar un saludo para los socios de EnRed 2.0 que están preparando la primera ConectaCon Jaén. Si os interesa la seguridad informática y tenéis algo de tiempo no dudéis en pasaos por la Universidad de Jaén dentro de unos meses.

    Puedes visitar la bitácora de José en este enlace donde podrás contactar con el para contratar sus servicios profesionales.

    0 0 votos
    Article Rating
    Subscribe
    Notify of
    3 Comments
    Oldest
    Newest Most Voted
    Opiniones Inline
    Ver todos los comentarios
    Anónimo
    Anónimo
    12 years ago

    Me duele particularmente no ver comentarios a la entrevista porque es tremenda y muy esclarecedora.

    Muchas gracias José y gracias a Faq-mac por traernos gente que tiene cosas interesantes (de verdad) que contar.

    Me quito el sombrero.

    Anónimo
    Anónimo
    12 years ago

    Muchas gracias faqmaquer@! Me alegra que te guste 😉

    wenmusic
    12 years ago

    Muy buena entrevista, interesante.

    3
    0
    Me encantaría saber tu opinión, por favor, deja un comentariox
    ()
    x