Node.jsプロジェクトは10月21日、JavaScript実行環境のサポート中の全ブランチ向けにセキュリティ更新を公開した。Node.jsの脆弱性10件に対応するとともに、それぞれ独自のセキュリティ修正を含む同梱コンポーネントも更新している。メンテナーは、すでに導入しているリリース系列に応じて、22.23.4、24.22.1、26.12.1への移行を利用者に案内している。
Node.jsの脆弱性のうち4件は、重大度が「高」と評価されている。2件はTLS接続に使われる証明書の検証に関するもので、別の1件はDNSの名前解決に影響する。4件目は、実行環境のBrotli圧縮デコーダーに関する脆弱性で、攻撃者が悪意のある入力によってデコード処理を妨害した場合、遠隔からコードを実行できるおそれがある。
今回のリリースには、OpenSSLやSQLiteを含む、依存コンポーネントの新しいバージョンも取り込まれた。同梱ソフトウェアの更新が重要なのは、アプリケーション自体のコードに変更がなくても、コンポーネントを通じて危険にさらされ続ける可能性があるからだ。このため管理者は、単独の不具合を直すパッチではなく、実行環境全体に及ぶ更新として扱う必要がある。
証明書の信頼も、今回の更新の重点事項だ。Node.jsは、侵害された認証局eMudhraをブロックするため、組み込みの証明書ストアを変更した。中間証明書のブロックリストも備えるようになり、ルート認証局が引き続き信頼されていても、失効した公開鍵を含むTLSチェーンを拒否できるようになった。この防御は、ルートより下の階層で信頼を取り消す必要がある事案を想定している。
サポート対象は22.x、24.x、26.xの各ブランチにまたがる。Node.js 22の利用者は22.23.4へ、24の利用者は24.22.1へ、26を導入している環境は26.12.1へ更新する必要がある。サポートが終了した古いブランチも影響を受けるが、同等の修正は提供されない。それらのブランチを使い続けているシステムは、公開されない更新を待つのではなく、保守されている系列に移行する必要がある。
本番環境の運用担当者にとっては、影響する機能が幅広いことから、速やかなテストと導入が重要になる。TLSとDNSの処理は一般的なネットワーク通信の経路に位置し、BrotliはWebコンテンツなど転送データの圧縮に広く利用されている。Node.jsで構築したインターネット公開サービス、開発者向けプラットフォーム、社内ツールはいずれも、これらのコード経路の一つ以上を使っている可能性がある。
各チームは、サーバー、コンテナ、継続的インテグレーションのワーカー、開発者のシステムにわたって実行環境のバージョンを把握し、該当するリリースをアプリケーションでテストしてから展開する必要がある。特に重要なのがコンテナイメージの再ビルドだ。ホスト側のインストールを更新しても、既存イメージに組み込まれた実行環境が自動的に置き換わるわけではない。導入後は、運用担当者が稼働中のNode.jsのバージョンを確認し、古い成果物を廃止することで、脆弱なインスタンスが後から復元されるのを防げる。
今回の修正は、Node.jsを保守する際、実行環境自体のコードと、それに同梱されるライブラリの両方に注意を払う必要があることを改めて示している。サポート中のリリース系列は、どちらの種類の不具合についても、修正が届けられる経路となる。



