生命週期結束 (EOL)
Node.js 版本為何以及如何到達生命週期結束
Node.js 的主版本會按照可預測的時間表進行釋出、修補和指定生命週期結束。由於永久維護所有版本系列並不可行,因此在計劃的維護期結束後,Node.js 的某個主版本系列將停止由專案維護。
當一個版本系列到達 EOL 時會發生什麼
當一個版本到達生命週期結束時,意味著它將不再接收更新,包括安全補丁。這可能使執行在這些版本上的應用程式容易受到安全問題和永遠不會被修復的錯誤的影響。
- 不再修復漏洞:當新的安全版本揭示了較新主版本系列中的問題和補丁時,即使相同的漏洞也影響 EOL 版本系列,也不會為它們釋出任何新版本。仍在使用 EOL 版本系列和受影響程式碼路徑的使用者將立即面臨利用這些已披露漏洞的攻擊風險。
- 工具鏈中斷:EOL 版本可能不再動態連結到其所依賴的共享庫的較新版本,從而阻塞或破壞系統更新。
- 生態系統偏離:隨著時間的推移,許多流行的使用者端軟體包會放棄對 EOL Node.js 版本的支援。當應用程式固守過時的軟體包時,它可能會遭受更多未修復的漏洞和錯誤,從而進一步偏離生態系統規範。
- 合規性警示:許多行業審計禁止使用未經維護的執行時。
EOL 版本
| 版本 (代號) | 最後更新 | 漏洞 | 詳情 |
|---|---|---|---|
| v23 | 2高危2中危 | ||
| v21 | 7高危5中危 | ||
| v19 | 1高危3中危2低危 | ||
| v18 (Hydrogen) | 15高危19中危4低危 | ||
| v17 | 1高危3中危1低危 | ||
| v16 (Gallium) | 11高危18中危4低危 | ||
| v15 | 1嚴重6高危1中危1低危 | ||
| v14 (Fermium) | 2嚴重16高危16中危5低危 | ||
| v13 | 1嚴重2高危 | ||
| v12 (Erbium) | 2嚴重13高危6中危3低危 | ||
| v11 | 3高危1中危 | ||
| v10 (Dubnium) | 1嚴重12高危3中危1低危 | ||
| v9 | 1嚴重4高危1中危1低危 | ||
| v8 (Carbon) | 1嚴重11高危2中危1低危 | ||
| v7 | 3高危2中危 | ||
| v6 (Boron) | 16高危12中危 | ||
| v5 | 15高危8中危 | ||
| v4 (Argon) | 2嚴重17高危9中危 | ||
| v0 | 2嚴重 |
商業支援
儘管使用 EOL 版本有明顯的缺點,但在實踐中,組織會面臨阻止立即升級的限制,例如遺留程式碼庫、合規性要求或複雜的依賴鏈。透過 OpenJS 基金會生態系統可持續性計劃,Node.js 得到 HeroDevs 和 NodeSource 的支援,為安全修復提供商業服務。
HeroDevs 為已過官方維護階段的 Node.js 版本提供 永不終止的支援 (NES)。這包括安全補丁、合規性援助和技術支援,以在您規劃升級策略時幫助填補空白。
NodeSource 為執行較舊、不受支援的 Node.js 版本提供安全支援,從而為團隊提供更多時間和靈活性來過渡到較新版本,同時保持安全態勢。
透過商業支援使用 EOL 版本應被視為一種臨時解決方案——目標應始終是升級到受積極支援的版本。