He descubierto una vulnerabilidad: ¿Y ahora qué?

Imaginemos que Pepe es una persona con conocimientos de seguridad informática que, por simple curiosidad, se dedica a investigar en busca de posibles fallos de seguridad.

Una noche, a las 3.00AM, descubre un fallo de seguridad grave en un SO para móviles que permite al atacante hacerse con el control total del teléfono. Pepe sabe perfectamente que tiene en sus manos una vulnerabilidad gravísima, para la que hasta donde él sabe no hay solución posible, lo que se denomina un 0-day [1].

Nervioso, Pepe piensa en lo que podría hacer, y multitud de posibilidades saltan a su mente.

Podría simplemente publicarlo en su blog de seguridad bajo lo que se denomina full disclosure (revelación completa) [2], y directamente dar acceso a todo el mundo a la información para que se pudiera fabricar una solución. Esto le aseguraría ser el primero en publicarla, y ganar reconocimiento como investigador (en un mundillo en el que la reputación cuenta, y mucho).

Pero al dar la información al mismo tiempo tanto a fabricantes como a los posibles intrusos, Pepe provocaría una carrera en la que seguramente los usuarios serían los damnificados (el proceso de parchear una vulnerabilidad conlleva un proceso de control de cambios, que es por fuerza mucho más lento que el desarrollo de un exploit que solo necesita aprovecharse de la misma).

Otra opción sería ponerse en contacto con el fabricante del SO e informarle del fallo de seguridad bajo lo que se llama responsibledisclosure (revelación responsable) [3], dándole tiempo para que pueda preparar el parche que la resuelva antes de su publicación. De esta forma Pepe seguiría llevándose el mérito, pero no pondría en peligro a los usuarios al disponer de la solución al mismo tiempo de su publicación.

Puede suceder que el fabricante ignore a Pepe (ya sea por falta de canales de comunicación eficaces, o por política de la empresa). En este caso Pepe podría acudir a un CERT como el del INTECO [4], que se encargaría de contactar con la empresa (y así le daría una cierta cobertura a Pepe en el caso de tener luego problemas)… o pasar a la opción anterior y revelar directamente la información en Internet.

En el caso en el que Pepe estuviera más interesado en una ganancia económica más que de prestigio (que la fama no paga la conexión a Internet), tendría también varias opciones.

Lo primero que podría hacer Pepe es comprobar si el fabricante ofrece algún tipo de programa de bug bounty (caza de fallos) [5], en los que el fabricante ofrece recompensas por encontrar fallos de seguridad que pueden ir desde camisetas exclusivas hasta dinero contante y sonante. Esta opción es interesante porque en casi todos los programas hay un “Hall of fame”, que permitiría a Pepe a su vez ganar reconocimiento por haber encontrado el fallo.

El problema de esta opción es que casi siempre los fabricantes pagan poco. Muy poco. Si Pepe lo que quiere realmente es el dinero (y su ética personal es lo suficientemente laxa), tiene otras alternativas mucho más ventajosas.

Pepe podría llevar su fallo de seguridad a sitios como ZDI (Zero Day Initiative) [6], que ofrecen recompensas por fallos de seguridad bajo el modelo de responsibledisclosure. Estas empresas luego ofrecen servicios de alerta temprana (Pepe sabe que pocas empresas dan algo gratis), pero al final la vulnerabilidad se soluciona, y Pepe tiene más dinero en el bolsillo (y sobre todo, estas iniciativas son una buena opción en caso de que el fabricante no tenga un bug bounty en activo).

Pero donde está el dinero de verdad es en la venta privada: Pepe podría vender su 0-day a empresas especializadas en la compra de vulnerabilidades, pero que en lugar de publicar la información la guardan y crean exploits que pueden vender de forma privada. Algunas de estas empresas como Vupen [7] tienen una política estricta de ventas (en principio solo a países “buenos”), aunque no se sabe dónde pueden acabar ni para qué pueden ser usados. Por tener tienen hasta listas de precios [8].

El tema es que el precio es bueno. Muy bueno. Se rumorea que se ha llegado a pagar hasta 250K$ por un 0-day muy similar al suyo, que puede ser fácilmente diez veces más de lo que el fabricante o iniciativas como ZDI podrían pagar. Eso sí, Pepe no puede decirle nunca a nadie lo que ha hecho, por la cuenta que le trae (es lo que tiene trabajar con empresas que trabajan con gobiernos que tienen agencias de tres letras).

Podría ser que Pepe no estuviera interesado en ser “fichado” por estas empresas (nunca se sabe las vueltas que da la vida). En ese caso podría acudir a algún bróker de vulnerabilidades [9], que por una módica comisión se encargaría de hacer de intermediario con las empresas pertinentes y le ayudaría a mantener su preciado anonimato.

Pero estos bróker no crecen debajo de las piedras (y no son especialmente accesibles). Y Pepe quiere el dinero. La última opción que le queda es venderlo en el mercado negro [10], en el que hay multitud de lugares en los que venderlo. Y en algunos de ellos le pueden pagar en preciosas e irrastreables BitCoins. Y si Pepe tiene muy pocos escrúpulos, no creo que tenga muchos problemas en venderlo en varios lugares a la vez…

Estas son las opciones que Pepe baraja en su mente a las 3.00AM mientras toma su décimo café del día…

Si pasamos de la ficción a la realidad, el problema existente está bastante claro: Los incentivos económicos son mucho más atractivos que el mero reconocimiento, e incluso los programas que mezclan ambos aspectos se quedan cortos en la parte económica.

Esta oferta viene dada por la existencia de una demanda por parte de algunos gobiernos (principalmente de aquellas partes destinadas a la obtención de inteligencia), que en mi opinión han valorado erróneamente la naturaleza de doble filo de una vulnerabilidad. Si bien el estar en posesión de una vulnerabilidad nos permite poder usarla para atacar otros sistemas, nuestros propios sistemas también siguen siendo vulnerables a dichos ataques.

Y si se realiza una evaluación de la cantidad de sistemas y del valor de la información contenida en los mismos en mi opinión se tiene más que perder guardando que publicando…

Ante esta elección subscribo totalmente la opinión de Bruce Scheneier [11]: Todo el proceso de la investigación sobre vulnerabilidades debería estar enfocado a la mejora de la seguridad de los sistemas, el objetivo inicial para el que fue creado.

Para ello es obligatorio reencauzar el (bastante torcido hoy) proceso, ofreciendo una serie de incentivos tanto monetarios como de reconocimiento que conviertan el hecho de hacer pública una vulnerabilidad sea siempre más atractivo que venderla.

¿Qué nos haría falta?. Una idea sería crear algo similar a BugCrowd, un servicio de creación de bug bounties que gestiona búsquedas de vulnerabilidades, y dotándolo de procedimientos de responsibledisclosure.

Esta organización debería de ser internacional, completamente imparcial y financiada tanto por gobiernos como por las compañías de tecnología. Su principal objetivo: mejorar la seguridad de todos los elementos que componen Internet para todo el mundo, independientemente de qué país o sistema sea empleado. A vista de pájaro, un posible candidato para liderar esta iniciativa podría ser el IAB (Internet Architecture Board) [13], que tiene una distribución de miembros suficientemente variada como para compensar los diversos intereses existentes.

El otro lado de la ecuación reside en los propios investigadores: si nadie vendiera las vulnerabilidades que encontrara, y si el resto de la comunidad repudiara a aquellos que sí que lo hacen, lograríamos de una forma sensible reducir la oferta y/o redirigirla a la iniciativa anterior.

Cierto, el mercado negro aún seguiría actuando (y lo sigue haciendo en la situación actual), y aún tendríamos investigadores que no tendrían problemas éticos o morales en seguir vendiendo sus vulnerabilidades, pero se lograría en cierta medida retomar el control de todo el proceso.

Lo que sí que es cierto es que la situación actual tiene unas perspectivas poco halagüeñas, y es necesario hacer algo al respecto. El cómo (y en este caso muy importante, el cuánto) es algo que tenemos que decidir entre todos.

[1] Zero Day
[2] Full disclosure
[3] Responsibledisclosure
[4] INTECO-CERT
[5] BugCrowd – List of bug bounty programs
[6] Zero day Initiative
[7] Vupen
[8] Lista de precios de vulnerabilidades
[9] The Grugq
[10] Selling exploits for bitcoins in underground market
[11] Scheneier :The Vulnerabilities Market and the Future of Security
[12] BugCrowd
[13] Internet Architecture Board

Comments

  1. Buenas noches, cuando encuentro una vulnerabilidad, a quien puedo notificarle para que corrija el error? cuando no hay información del contacto del admin! Gracias!!!

  2. Muy buenos días, Juan

    Es normal encontrar problemas a la hora de notificar vulnerabilidades. Por un lado los canales de comunicación no están muy claros (no sabes a quién notificar, y tampoco sabes si la persona que está detrás de un correo va a entender lo que le estás contando), y por otro lado hay intereses comerciales (a algunas empresas no les interesa reconocer que tienen vulnerabilidades).

    Lo mejor en estos casos es que te pongas en contacto con un CERT/CSIRT, ya que ellos se encargarán de gestionarla. Un CERT tiene gente especializada en estas cosas, son capaces de realizar una presión más efectiva, y encima te dan una cierta cobertura legal en el caso de que exista algún problema.

    Ahora mismo en España hay varios CERT regionales/nacionales a los que puedes notificar una vulnerabilidad.

    Si el fallo está relacionado con aplicaciones y/o sistemas que afecten al público en general y a las empresas, los más indicados serían INTECO-CERT (http://www.inteco.es/) y CSIRT-CV (http://www.csirtcv.gva.es/).

    En el caso de que fuera una infraestructura crítica, el punto de contacto sería el CERT-IC (http://www.cnpic-es.com/), y si tiene que ver algo con la administración pública o defensa, el CCN-CERT (https://www.ccn-cert.cni.es/).

    Un saludo,

    Antonio Sanz
    S2 Grupo