Tenemos el agrado de anunciar que lanzaremos en código abierto el servicio que usamos en el equipo de las bibliotecas del cliente de Google Cloud para administrar publicaciones de npm. Se llama Wombat Dressing Room. Wombat Dressing Room incluye funciones que permiten que npm funcione mejor con la automatización sin sacrificar prácticas recomendadas en términos de seguridad.
A menudo, se sacrifican algunos aspectos en pos de la automatización
npm tiene funciones de seguridad de primer nivel: tokens con restricción de rango CIDR, notificaciones de publicación y autenticación en dos pasos, entre otras. De esas funciones, la autenticación en dos pasos es fundamental para proteger las publicaciones.
La autenticación en dos pasos exige que proporciones dos datos cada vez que accedas a un recurso protegido: «algo que sabes» (por ejemplo, una contraseña) y «algo que tienes» (por ejemplo, un código de una app de autenticación). Con la autenticación en dos pasos, incluso si se vulnera tu contraseña, los atacantes no pueden publicar paquetes malintencionados (a menos que también roben ese «algo que tienes«).
En mi equipo, un grupo pequeño de desarrolladores administra más de 75 bibliotecas Node.js. Creemos que la automatización es fundamental para el proceso: hemos programado herramientas que automatizan los lanzamientos, validan los encabezados de licencia, garantizan que los colaboradores hayan firmado acuerdos de licencia de colaboradores, etcétera. ¡Somos partidarios de la filosofía de automatizar todo!
Es difícil automatizar el paso de ingresar un código tomado de un teléfono celular. Por esa razón, muchos prefieren desactivar la autenticación en dos pasos en su automatización.
¿Y si fuera posible tener automatización y la seguridad adicional de la autenticación en dos pasos? Esa es la razón por la que desarrollamos Wombat Dressing Room.
Un nuevo enfoque para la automatización
Con Wombat Dressing Room, en lugar de que una persona configure la autenticación en dos pasos en una app de autenticación, la autenticación en dos pasos es administrada por un servidor proxy compartido. Las publicaciones se dirigen al proxy de Wombat Dressing Room, que ofrece las siguientes funciones de seguridad:
Tokens de publicación por paquete.
Wombat Dressing Room puede generar tokens de autenticación vinculados a repositorios de GitHub. Esos tokens están atados a un solo repositorio de GitHub, para el que el usuario que genera el token debe tener permisos push.
Si el token por paquete de una publicación se filtra, un atacante solo podría tomar el control del único paquete asociado al token.
Tokens de duración limitada
Wombat Dressing Room también puede generar tokens con una validez de 24 horas. Con este modelo, un token filtrado dejar de ser vulnerable una vez alcanzado el límite de 24 horas.
Lanzamientos de GitHub como autenticación en dos pasos
Con este modelo de autenticación, un paquete solo puede publicarse en npm si hay un lanzamiento de GitHub con la etiqueta correspondiente en GitHub.
Esto incorpora un «segundo paso» real, ya que los usuarios deben demostrar que tienen acceso a Wombat Dressing Room y al repositorio de GitHub.
Primeros pasos con Wombat Dressing Room
Usamos Wombat Dressing Room hace más de un año para administrar las bibliotecas del cliente de Google Cloud en nuestro proceso totalmente automatizado de lanzamiento de bibliotecas. A partir de hoy, el código está disponible para todos los usuarios de GitHub con una licencia Apache 2.0.
Wombat Dressing Room se ejecuta en Google App Engine, y puedes encontrar instrucciones para configurarlo en su README.md.
Espero que esto ayude a otros miembros de la comunidad a simplificar y automatizar su proceso de lanzamiento sin dejar de minimizar la superficie de ataque de sus bibliotecas.
Source: Google Dev