2026年1月14日Ravie Lakshmananアプリケーションセキュリティ / 脆弱性
Node.js 向け重要セキュリティアップデート
Node.js は最近、このプラットフォームを利用するほぼすべての本番アプリケーションに影響する重大なセキュリティ脆弱性に対処する重要な更新を実装しました。攻撃者がこの欠陥を悪用した場合、サービス拒否(DoS)状態を引き起こし、アプリケーションが利用不能になる可能性があります。
脆弱性の理解
問題は、Node.js がスタック領域の枯渇をどのように扱うかに起因しており、特に async_hooks を使用する場合に顕著です。async_hooks は、データベース接続やタイマーなどの非同期リソースのライフサイクルを追跡する強力な低レベル API です。Node.js 開発者の Matteo Collina 氏と Joyee Cheung 氏によると、async_hooks の使用時にのみ現れるバグにより、Node.js がエラーを効果的に処理できなくなる可能性があります。その結果、ユーザーコードの深い再帰によるスタックオーバーフローが発生した場合、システムはクラッシュしてエラーコード 7 で終了し、内部例外ハンドラーの問題を示します。
Node.js フレームワークおよびツールへの影響
この脆弱性は、async_hooks を活用するさまざまなフレームワークやアプリケーションパフォーマンス監視(APM)ツールにリスクをもたらします。この欠陥の影響を受ける著名なライブラリやツールには、React Server Components、Next.js、Datadog、New Relic、Dynatrace、Elastic APM、OpenTelemetry が含まれます。問題のコンポーネントは async_hooks 基盤上に構築された AsyncLocalStorage で、非同期処理全体を通じてデータを追跡できるようにします。
脆弱性に対処したバージョン
Node.js は、次のバージョンでこの脆弱性を緩和する更新をリリースしました:
- Node.js 20.20.0(LTS)
- Node.js 22.22.0(LTS)
- Node.js 24.13.0(LTS)
- Node.js 25.3.0(Current)
async_hooks が初めて導入された 8.x から 18.x までのすべての Node.js バージョンが影響を受ける点に注意が必要です。ただし、8.x はサポート終了(EOL)に達しているため、未修正のままとなります。
修正の詳細
最近のパッチでは、スタックオーバーフローの状態を検出し、致命的エラーとして扱うのではなく、これらのエラーをユーザーコードへ再スローするようにしています。この修正は CVE 識別子 CVE-2025-59466 として登録され、CVSS スコアは 7.5 で、その深刻さを示しています。この影響の大きい調整が行われたにもかかわらず、継続的な懸念があるため、Node.js はこの更新を完全な解決策ではなく緩和策と位置付けています。
その理由として Node.js は、「未規定の挙動に対するバグ修正ではあるものの、エコシステム全体への影響が広範であるため、セキュリティリリースに含めることを選択した」と述べています。この見解は、開発者体験の改善と、影響を受けるアプリケーション全体で予測可能なエラーハンドリングを強化する重要性を強調しています。
ユーザーおよび開発者への推奨事項
この脆弱性の重大性を踏まえ、これらのフレームワークの利用者およびサーバーホスティング事業者は、最新の修正を取り込むために速やかにシステムを更新することが強く推奨されます。さらに開発者は、潜在的なスタック領域枯渇を効果的に扱えるよう、より堅牢な対策を実装し、アプリケーション全体の信頼性を高めるべきです。
Node.js におけるその他の最近のセキュリティ問題
この重大な脆弱性に加えて、Node.js は他にも 3 件の重要なセキュリティ懸念(CVE-2025-55131、CVE-2025-55130、CVE-2025-59465)に対処しました。これらの欠陥は、データ漏えい、破損、リモートによるサービス拒否攻撃につながる可能性があり、開発者が継続的にセキュリティパッチを監視し適用する必要性が差し迫っていることを示しています。
この更新は、アプリケーション開発のための信頼性が高く安全な環境を維持するという Node.js の取り組みを示すものであり、拡大し続ける今日のデジタル環境において、いっそう重要です。