Fin de Vida Útil (EOL)
Cómo y por qué los lanzamientos de Node.js tienen un fin de vida útil
Existe un horario regular para lanzar, remendar, y pasar al fin de vida útil las versiones principales de Node.js. No es posible mantener cada versión principal para siempre, entonces una vez pasado un período predeterminado, el proyecto Node.js dejará de mantener una versión principal.
Ve el calendario de lanzamientos de Node.js.
Que sucede cuando un lanzamiento pasa su fin de vida útil
Cuando una versión pasa su fin de vida útil (EOL), deja de recibir actualizaciones como remiendas de seguridad. Como resultado, las aplicaciones que usan estas versiones pueden volver vulnerables a defectos de seguridad y otros errores que nunca serán arreglados.
- No más correcciones de vulnerabilidades: Cuando se publiquen nuevas versiones de seguridad que revelen problemas y parches en líneas principales más recientes, no habrá nuevas versiones para líneas de lanzamiento EOL, incluso si la misma vulnerabilidad afecta a líneas de lanzamiento EOL. Los usuarios que aún se aferran a líneas de lanzamiento EOL y utilizan rutas de código afectadas serán inmediatamente vulnerables a ataques que exploten estas vulnerabilidades divulgadas.
- Errores en la cadena de herramientas: Los lanzamientos EOL pueden dejar de vincular con versiones nuevas de dependencias externas, el cual podría impedir actualizaciones futuras.
- Cambios en el ecosistema: Varios paquetes populares dejan de funcionar con versiones EOL de Node.js. Cuando una aplicación depende de paquetes anticuados, puede sufrir de más vulnerabilidades y fallos, volviéndose más difícil de reconciliar con el ecosistema actual.
- Incumplimiento: A menudo, las auditorías prohíben sistemas de runtime no mantenidos.
Versiones EOL
| Version (Codename) | Last updated | Vulnerabilities | Details |
|---|---|---|---|
| v23 | 2High2Medium | ||
| v21 | 7High5Medium | ||
| v19 | 1High3Medium2Low | ||
| v18 (Hydrogen) | 15High19Medium4Low | ||
| v17 | 1High3Medium1Low | ||
| v16 (Gallium) | 11High18Medium4Low | ||
| v15 | 1Critical6High1Medium1Low | ||
| v14 (Fermium) | 2Critical16High16Medium5Low | ||
| v13 | 1Critical2High | ||
| v12 (Erbium) | 2Critical13High6Medium3Low | ||
| v11 | 3High1Medium | ||
| v10 (Dubnium) | 1Critical12High3Medium1Low | ||
| v9 | 1Critical4High1Medium1Low | ||
| v8 (Carbon) | 1Critical11High2Medium1Low | ||
| v7 | 3High2Medium | ||
| v6 (Boron) | 16High12Medium | ||
| v5 | 15High8Medium | ||
| v4 (Argon) | 2Critical17High9Medium | ||
| v0 | 2Critical |
Soporte Comercial
A pesar de las desventajas obvias de usar versiones EOL, en la práctica, las organizaciones enfrentan restricciones que impiden actualizaciones inmediatas, como bases de código heredadas, requisitos de cumplimiento o cadenas de dependencias complejas. A través del Programa de Sostenibilidad del Ecosistema de la Fundación OpenJS, Node.js cuenta con el apoyo de HeroDevs y NodeSource para proporcionar servicios comerciales para correcciones de seguridad.
HeroDevs ofrece un Soporte Interminable (NES) para versiones de Node.js que ya no tienen soporte oficial. Esto incluye parches de seguridad, ayuda con cumplimiento y soporte técnico para darte tiempo mientras planificas tu actualización.
Usar versiones EOL con soporte comercial debería verse como una solución temporal, el objetivo siempre debería ser actualizar a versiones con soporte activo.