Node.js の新たな試みによるセキュリティの強化:EoL バージョンに対する CVE の発行

Node.js to Issue CVE for End-of-Life Versions

2025/01/09 SecurityOnline — Node.js プロジェクトが発表したのは、サポートが終了したバージョン (EOL:End-of-Life) に対して、CVE を発行するという方針である。これは、ユーザーに最新状態の維持を促し、セキュリティ強化する、重要な取り組みである。Node.js の公式発表には、「Node.js 上で構築されたアプリケーションの、セキュリティと信頼性の確保に全力を尽くしている。この取り組みの一環として、ユーザーがセキュリティ・リスクに関する情報を常に把握できるよう、定期的に手段を見直している」と記されている。

EOL バージョンに対して、新たに割り当てられる CVE が示すものは、それらのバージョンがメンテナンスの対象外であるという事実と、重大なセキュリティ脆弱性を含んでいる可能性である。それらの CVE は、CWE-1104:Use of Unmaintained Third Party Components (メンテナンスされていないサードパーティ製コンポーネントの使用) に分類される。

このような CVE 通知は、ソフトウェア・インフラ全体における脆弱性の管理のために、多くの組織で利用されている。これまでに Node.js は、アクティブにサポートされているバージョンの脆弱性に対して真摯に対応/公表してきたが、EOL バージョンに CVE が付与されることはなかった。

EOL バージョンに対して CVE を発行することで、Node.js が目指すのは、以下の項目の達成である:

  • ユーザーへの注意喚起:EOL バージョンに伴う潜在的な危険性について、ユーザーに周知する。
  • アップグレードの促進:組織や開発者に対して、サポート対象の Node.js リリースに移行するように促す。
  • セキュリティの向上:古くて脆弱なバージョンの Node.js を実行するアプリケーションの総数を減らす。

この決定は、EOL バージョンが広く利用されている状況を考慮したものである。Node.js v16 に関して言えば、1年以上前に EOL を迎えているが、驚くべきことに、いまでも 1,100万/月のペースでダウンロードされている。

EOL バージョンの Node.js を使用しているユーザーに推奨されるのは、サポートの対象となっているバージョンへと、ただちにアップグレードすることだ。有効なバージョンとメンテナンス・スケジュールについては、Node.js Release Schedule で確認できる。

アプリケーションで使用されている Node.js のバージョンについては、ターミナル上で node -v コマンドを実行すると確認できる。また、使用中のバージョンに関連する CVE の有無については、is-my-node-vulnerable ツールで確認できる。

npx is-my-node-vulnerable

現時点において、アクティブにサポートされている Node.js バージョンは以下の通りだ:

  • Node.js 23 (Current)
  • Node.js 22 (LTS)
  • Node.js 20 (Maintenance LTS)
  • Node.js 18 (Maintenance LTS)

その他のバージョンは、すべて非推奨と見なされるため、アップグレードする必要がある。