Pasos para responder a las vulnerabilidades de seguridad

Un poco de historia

El 27 de noviembre de 2018 se anunció una vulnerabilidad de seguridad de npm para todos los usuarios que dependieran , directa o indirectamente, del paquete event-stream. Se trataba de un ataque muy selectivo, que solo se activaba si estaba instalado el monedero bitcoin copay, tras lo cual intentaba robar su contenido.

Dos de nuestros proyectos, concretamente interactive-examples y BoB, dependen de un paquete npm llamado npm-run-all, que a su vez depende del paquete event-stream.

Esto significaba que no sólo el personal de plantilla estaba en peligro, sino que las personas que habían hecho un fork de cualquiera de estos repositorios también podrían haberse visto afectadas. Afortunadamente, los responsables del paquete afectado reaccionaron con rapidez y publicaron una actualización para solucionar el problema. Como tenemos el bot Renovate ejecutándose en estos repositorios, había un pull request listo para fusionar.

Pero esto solo resolvía una parte del problema. Nuestros usuarios seguían necesitando una notificación.

Medidas adoptadas

La comunidad del proyecto interactive-examples en particular era bastante grande y no todo el mundo estaba activo, pero aun así necesitábamos una forma de llegar a todo el mundo. El primer paso fue abrir una incidencia en cada uno de los repositorios, detallando el problema:

Esto por sí solo no es suficiente, ya que los usuarios no siempre realizan un seguimiento activo de los problemas. Por lo tanto, teníamos que examinar todas las bifurcaciones del proyecto.

A continuación, copiamos todos los "nombres de usuario" de estos usuarios y les hicimos un ping en el anterior issue, por ejemplo comentando en él.

Esto fue muy eficaz, a juzgar por las respuestas que recibió el issue, pero no podíamos dejarlo ahí. El siguiente paso fue publicar un comentario en cada uno de los "pull request" abiertos informando al usuario del problema y de cuáles debían ser sus siguientes pasos. Aquí hay un ejemplo de nuestra respuesta.

Con esto, nos sentíamos bastantes confiados de que entre nuestros mensajes de alerta y la cobertura a través de internet del problema mediante el propio npm y otros canales, todos los usuarios quedarían informados, asegurándonos con ello que nuestros usuarios estarían a salvo.

Como último paso, @schalkneethling publicó un mensaje en Twitter que a su vez fue retuiteado por la cuenta de Twitter de MDN Web Docs.

En conclusión

Esperemos que este tipo de incidentes sean escasos. Sin embargo, si volviera a ocurrir, lo anterior proporciona una sólida pauta sobre cómo responder.