Entender la divulgación responsable
Tim Kadlec
31 de enero de 2017
0 minutos de lecturaAbordar las vulnerabilidades de seguridad es una batalla constante. Es una carrera entre los atacantes y las organizaciones que intentan mantenerlos fuera. Por desgracia, las organizaciones suelen perder. Como dijo el exdirector del FBI, Robert Mueller: «…solo existen dos tipos de empresas: las que han sido hackeadas y las que lo serán».
Para defender tu sistema, debes poder proteger toda la aplicación. Un atacante, en cambio, solo necesita encontrar una abertura. Las organizaciones necesitan tomar la delantera, y la forma en que se enteran de las vulnerabilidades de seguridad en su código desempeña un papel importante.
A primera vista, el asunto parece sencillo. Si encuentras un problema de seguridad, contacta a la organización y avísale. Lo corrigen y todos podemos seguir adelante, felices y más seguros. Sin embargo, la realidad es que la divulgación de vulnerabilidades ha sido durante mucho tiempo uno de los temas más debatidos en el ámbito de la seguridad.
Reducir el periodo de exposición
Bruce Schneier popularizó la idea del «periodo de exposición»: el lapso durante el cual una vulnerabilidad corre el riesgo de ser explotada.
El periodo de exposición comienza en el momento en que una vulnerabilidad entra en un entorno de producción. En ese punto, el riesgo de ataque es relativamente bajo. La vulnerabilidad existe, pero nadie la ha descubierto todavía.
En cuanto alguien descubre la vulnerabilidad, el riesgo aumenta. A partir de ahí, el riesgo sigue creciendo a medida que la vulnerabilidad se hace más conocida. En algún momento, se publica un parche o una actualización. Desde entonces, el riesgo disminuye poco a poco a medida que los usuarios empiezan a instalar la solución, algo que rara vez sucede rápido.
A Schneier le gusta usar un gráfico para visualizar el nivel de riesgo; el área bajo la curva representa el periodo de exposición. Por lo tanto, el objetivo es reducir ese periodo.

El debate gira en torno a cuál es la mejor manera de lograrlo.
Si una vulnerabilidad cae en el bosque y nadie la explota, ¿existió?
Un argumento sostiene que, si descubres una vulnerabilidad, debes reportarla a la organización y nunca hacerla pública. Según esta postura, así se mantiene la vulnerabilidad en la fase menos conocida de su ciclo de vida y se minimiza el riesgo.
Esta forma de pensar tiene algunos defectos. Para empezar, supone peligrosamente que el actor de buena fe fue el único que encontró el problema. Si los actores maliciosos también lo identificaron, no se quedarán esperando a que la organización se dé cuenta de que hay un problema: aprovecharán que tienen acceso a una vulnerabilidad sin parchear.
El otro defecto de esta postura es que supone que a la empresa le importa lo suficiente la vulnerabilidad como para hacer algo al respecto. La realidad es que existe un problema de incentivos. Al principio, esta era la forma más común de divulgar vulnerabilidades y, en muchos casos, las organizaciones tardaban años en aplicar un parche, convencidas de que, como el problema no se había hecho público, eso les brindaba cierto nivel de seguridad. En esencia, la ignorancia como capa de seguridad.
En algunos casos, por temor a la mala publicidad que pueden generar ciertos problemas de seguridad, las organizaciones incluso amenazaban al investigador que intentaba reportarlos. Por desgracia, esto todavía ocurre de vez en cuando, por lo que algunos investigadores de seguridad prefieren divulgar el problema a una organización o persona que luego se lo comunique a la empresa. Es algo que estamos dispuestos a hacer, y que hemos hecho, aquí en Snyk. Esto ayuda a proteger al propio investigador de un propietario u organización demasiado agresivos.
Divulgación pública total
En el extremo opuesto del espectro está la idea de la divulgación pública total. En lugar de reportar el problema a una organización, un investigador podría publicar la divulgación completa. La vulnerabilidad se salta la lenta etapa de aumento de popularidad y pasa directamente a su máxima visibilidad. A partir de ahí, comienza una carrera entre la organización y los atacantes.
Este enfoque sí crea un incentivo claro para que la organización aborde el problema rápidamente. Sin embargo, su defecto también es bastante evidente: la misma publicidad que genera ese incentivo expone a las organizaciones —y a sus usuarios— a un riesgo considerable, ya que los atacantes se enteran de inmediato del exploit y de cómo aprovecharlo.
Divulgación razonable
La mayoría del sector se ha inclinado por un punto intermedio llamado divulgación responsable. La divulgación responsable incluye algunos pasos básicos.
La vulnerabilidad se divulga de forma privada al propietario o a la organización.
Se crea una solución para la vulnerabilidad, por lo general a cargo del propietario o la organización (aunque quien la reporta suele colaborar).
La solución se publica y se distribuye a los usuarios.
La vulnerabilidad se divulga públicamente. La divulgación incluye información sobre la vulnerabilidad, cómo se lleva a cabo el exploit y cómo solucionar el problema.
Puede parecerse a la idea de mantener las vulnerabilidades en secreto, pero hay una diferencia importante: la divulgación responsable suele establecer un plazo razonable.
Por ejemplo, aquí en Snyk inicialmente damos al propietario de un paquete 30 días para responder a nuestra divulgación. Es un plazo bastante habitual en el desarrollo de código abierto, donde los autores suelen tener otro empleo. En algunos casos, el propietario responde y, en ese momento, podemos orientarlo hacia una solución y colaborar con él para determinar un plazo razonable para divulgar públicamente la vulnerabilidad, de modo que las personas puedan tomar medidas para protegerse.
En un mundo ideal, así se procedería con la divulgación de todas las vulnerabilidades. Sin embargo, la realidad es un poco diferente y, a veces, el propietario no responde. Seguir un proceso de divulgación responsable significa que, si una organización no responde dentro del plazo establecido, el investigador puede hacer pública la vulnerabilidad. Esto permite que los usuarios conozcan el riesgo y decidan si quieren asumirlo en sus propios sistemas. También incentiva a los propietarios o a las organizaciones a priorizar la solución del problema, ya que ahora es de conocimiento público.
En Snyk, hacemos todo lo posible para darles a los propietarios o las organizaciones una ventaja. Si no recibimos respuesta en 30 días, volvemos a contactarlos y les damos 10 días más. Si siguen sin responder, repetimos el proceso una vez más. En total, les damos 50 días hábiles para responder. Solo hacemos pública la vulnerabilidad si no recibimos respuesta durante ese plazo o si el propietario indica que no quiere coordinar la divulgación.
Hay una excepción notable en este proceso. Nuestros usuarios empresariales reciben notificaciones anticipadas sobre la vulnerabilidad en virtud de un acuerdo de confidencialidad (NDA) que garantiza que todavía no se hará pública.
La ética de la divulgación
En 2016, una empresa de ciberseguridad descubrió vulnerabilidades en los equipos de St. Jude Medical (marcapasos, desfibriladores, etc.). En lugar de seguir un proceso de divulgación responsable, la empresa publicó datos incompletos sobre las vulnerabilidades y luego procedió a convertirse en socio de otra organización para vender en corto acciones de St. Jude Medical.
Esto reavivó con fuerza el debate sobre la divulgación responsable. El director ejecutivo de la empresa argumentó que, dadas sus experiencias previas con St. Jude, no creían que ese enfoque fuera práctico.
Incluso si dejamos de lado las dudas éticas de vender acciones en corto después de publicar esos datos incompletos, el daño causado por este enfoque es considerable. Los datos incompletos bastan para perjudicar la reputación de St. Jude, sin acercarla a la solución de los problemas en cuestión. En cambio, pone a St. Jude y a los atacantes en igualdad de condiciones: ambos saben que existe un problema y compiten por ser los primeros en descubrirlo. Nunca sabremos si St. Jude habría respondido en un plazo razonable; ni siquiera tuvo esa oportunidad.
La seguridad es un campo interesante: para hacerla bien, hay que desconfiar hasta cierto punto de quienes acceden a tus servidores y aplicaciones. Por eso es aún más importante actuar de forma confiable y ética cuando trabajamos para mejorar la seguridad en línea.
Es fundamental divulgar las vulnerabilidades de manera ética y responsable, causando el menor daño posible a la organización o al propietario sin dejar de proteger a los usuarios. Creemos firmemente que un proceso de divulgación responsable ofrece el equilibrio adecuado. Les da a las organizaciones una ventaja: pueden conocer la vulnerabilidad de forma privada y tener tiempo para solucionarla antes de que el periodo de riesgo se prolongue demasiado.
Y esto se logra sin poner en riesgo a los usuarios. Si una organización no prioriza una vulnerabilidad o no responde, esta no se oculta bajo la alfombra: puede divulgarse públicamente para que los usuarios desprevenidos conozcan el problema y tomen las medidas necesarias.
La seguridad es demasiado importante como para ocultarla bajo la alfombra, y hay demasiado que aprender de las vulnerabilidades como para permitir que eso ocurra. Pero las organizaciones merecen la oportunidad de solucionar estas vulnerabilidades antes de que se hagan públicas. La seguridad ya es bastante difícil como para darles a los atacantes una ventaja innecesaria.
Si quieres saber más sobre cómo gestionamos las divulgaciones de vulnerabilidades en Snyk, puedes consultar nuestra política completa en línea. Si descubres una vulnerabilidad que quieres que te ayudemos a divulgar, con gusto te ayudaremos.