Bundler 4.0.13 incorpora una nueva función de seguridad opcional llamada cooldown: un filtro temporal que rechaza cualquier versión de un gem publicada en los últimos N días. El mecanismo ataca una debilidad conocida de la cadena de suministro de RubyGems: la mayoría de exploits aprovechan la ventana estrecha entre el compromiso de una cuenta y la publicación de una versión maliciosa, que cualquier bundle install ejecutado en los minutos siguientes instalaría sin saberlo. Cooldown descarta los releases demasiado recientes para haber sido examinados y opta por versiones que ya superaron la ventana de espera.
La función es opt-in y se complementa —no sustituye— con otras defensas ya existentes, como la autenticación obligatoria en dos pasos (2FA) y la trusted publishing. Funciona leyendo la marca temporal created_at por versión que sirve el índice compacto v2 de rubygems.org. Si una fuente no expone ese campo —servidores de gems antiguos, entradas previas a la migración a v2 o registros privados aún en v1—, la versión se considera fuera del período de enfriamiento y permanece resoluble. Cooldown nunca bloquea la resolución de forma silenciosa: solo retiene versiones de las que puede demostrar que son demasiado nuevas.
Para la mayoría de equipos basta con declarar el cooldown en el Gemfile: source "https://rubygems.org", cooldown: 7. El ajuste viaja con el código, de modo que desarrolladores y pipelines de CI aplican la misma ventana sin configuración adicional. Puede afinarse con bundle config, con la variable de entorno BUNDLE_COOLDOWN o con el flag --cooldown, con un orden de precedencia fijo: línea de comandos > configuración > por fuente. Cuando todas las versiones candidatas de un gem están dentro de la ventana, Bundler detiene la operación, informa cuántas excluyó y sugiere --cooldown 0 para forzar la resolución.
Pasar 0 desactiva el enfriamiento para esa ejecución. El atajo resulta clave cuando esperar es la política equivocada: un 0-day en explotación activa o un aviso de vulnerabilidad que exige actualizar de inmediato. En esos casos, la versión más reciente es exactamente la que conviene instalar, y --cooldown 0 permite tomarla sin retirar la política para el resto del equipo. Además, bundle outdated es ahora consciente del cooldown y anota las versiones bloqueadas con los días que faltan para volverse resolubles.
Cooldown se enmarca en una estrategia de seguridad más amplia en rubygems.org, que incluye validación del contenido de los gems al publicarse, comprobación de contraseñas contra Have I Been Pwned, escaneo de vulnerabilidades asistido por IA sobre los gems más críticos (respaldado por Alpha Omega y Anthropic) y una hoja de ruta pública. Cada capa cubre un hueco distinto y se refuerzan entre sí.
