サポート終了 (End-Of-Life: EOL)

Node.js のリリースがサポート終了に至る理由とその方法

Node.js のメジャーバージョンは、予測可能なスケジュールに基づいてリリース、パッチ適用、そしてサポート終了が指定されます。すべてのリリースラインを永続的に維持することは現実的ではないため、計画されたメンテナンス期間が終了すると、Node.js のメジャーリリースラインはプロジェクトによるメンテナンスが停止されます。

Node.js のリリーススケジュールを見る.

リリースラインが EOL に達するとどうなるか

あるバージョンがサポート終了になると、セキュリティパッチを含むアップデートが提供されなくなります。これにより、これらのバージョンで実行されているアプリケーションは、修正されることのないセキュリティ問題やバグに対して脆弱な状態になる可能性があります。

  • 脆弱性の修正がなくなる: 新しいセキュリティリリースで新しいメジャーラインの問題やパッチが公開された際に、同じ脆弱性が EOL のリリースラインに影響する場合でも、それらに対する新しいリリースは行われません。EOL のリリースラインに固執し、影響を受けるコードパスを使用しているユーザーは、公開された脆弱性を悪用する攻撃に対して即座に脆弱になります。
  • ツールチェーンの破損: EOL リリースは、依存する共有ライブラリの新しいバージョンに動的にリンクできなくなる可能性があり、システムアップデートを妨げたり、破損させたりすることがあります。
  • エコシステムからの乖離: 多くの人気のあるユーザーランドパッケージは、時間の経過とともに EOL の Node.js リリースのサポートを打ち切ります。アプリケーションが古いパッケージに固執すると、さらに多くの未修正の脆弱性やバグに悩まされ、エコシステムの標準からますます乖離していく可能性があります。
  • コンプライアンス上の警告: 多くの業界監査では、メンテナンスされていないランタイムの使用が禁止されています。

EOL バージョン

バージョン (コードネーム)最終更新日脆弱性詳細
v23
22
v21
75
v19
132
v18 (Hydrogen)
15194
v17
131
v16 (Gallium)
11184
v15
1クリティカル611
v14 (Fermium)
2クリティカル16165
v13
1クリティカル2
v12 (Erbium)
2クリティカル1363
v11
31
v10 (Dubnium)
1クリティカル1231
v9
1クリティカル411
v8 (Carbon)
1クリティカル1121
v7
32
v6 (Boron)
1612
v5
158
v4 (Argon)
2クリティカル179
v0
2クリティカル

商用サポート

EOL リリースを使用することの明らかなデメリットにもかかわらず、実際には、レガシーコードベース、コンプライアンス要件、複雑な依存関係チェーンなど、組織が即時のアップグレードを妨げる制約に直面することがあります。OpenJS Foundation Ecosystem Sustainability Program を通じて、Node.js は HeroDevs と NodeSource によってサポートされており、セキュリティ修正のための商用サービスが提供されています。

HeroDevs は、公式のメンテナンスフェーズを過ぎた Node.js バージョンに対して Never-Ending Support (NES) を提供しています。これには、セキュリティパッチ、コンプライアンス支援、およびアップグレード戦略を計画する間のギャップを埋めるための技術サポートが含まれます。

NodeSource は、古いサポートされていないバージョンの Node.js を実行するためのセキュリティサポートを提供し、チームが安全な状態を維持しながら新しいリリースに移行するための時間と柔軟性を確保します。

商用サポートを通じて EOL リリースを使用することは一時的な解決策と見なすべきであり、目標は常にアクティブにサポートされているバージョンにアップグレードすることであるべきです。