如何防範NPM供應鏈攻擊?Lazarus Group惡意套件分析

資安研究人員近日發現,北韓駭客組織Lazarus Group正透過NPM(Node Package Manager)生態系統發動供應鏈攻擊。他們利用惡意套件誘騙開發者下載,目的是竊取敏感資訊並植入後門,以達成長期的系統控制。本篇文章將分析Lazarus Group的攻擊手法、惡意套件機制、影響範圍,以及開發者應如何防範類似攻擊。
攻擊手法與惡意套件分析

圖1:熱門 NPM 套件名稱整理
資料來源:本文作者整理
拼寫相似攻擊(Typosquatting)
駭客利用開發者常快速輸入套件名稱的習慣,創建拼寫相似的惡意套件。這些套件初期可能不會立刻執行惡意行為,而是等待後續更新時才動態載入惡意程式碼,因此難以被開發者即時發現。
惡意安裝腳本(Postinstall Scripts)
當開發者安裝惡意NPM套件時,會觸發安裝後的自動執行腳本(postinstall script),這段程式碼可能執行惡意行為,例如植入後門、竊取開發環境變數(如API金鑰、AWS密鑰)、讀取瀏覽器Cookie及開發者SSH金鑰等。
惡意程式混淆
為了規避資安工具偵測,駭客組織採用多層混淆技術,使惡意程式碼難以被靜態分析工具發現。這些技術包括變數重新命名、字串編碼(如Base64、Base85、XOR加密)、惡意程式碼動態載入、控制流平坦化(Control Flow Flattening)以及反沙箱與反分析技術。
開發者最常忽略的4個安全漏洞
盲目安裝第三方套件
很多開發者在專案中需要某個功能時會直接安裝未經審核的第三方套件。如果沒有確認這個套件的來源或評價,可能會不小心安裝到惡意程式,導致資料外洩或系統被植入後門。
依賴
npm audit fix自動更新有些開發者為了省事會使用
npm audit fix來自動修復安全漏洞但這可能會下載未經驗證版本的NPM套件或因此安裝被攻擊者植入惡意代碼的更新版本應避免無腦更新,最好的做法是手動審查變更內容確認每個更新是否安全。在CI/CD自動執行
npm install若CI/CD pipeline未鎖定NPM版本,每次建置時都可能會在建置時自動拉取惡意版本導致整個部署環境受影響影響專案的安全。
忽略
postinstall腳本的風險有些NPM套件會在安裝後執行
postinstall腳本,這段程式碼可能會下載額外的檔案,甚至執行惡意指令。如果開發者沒有特別注意,可能在不知情的情況下執行了有害程式。
如何防範 NPM 供應鏈攻擊
確保NPM套件來源可信
使用官方或知名維護者的套件避免使用不明開發者的套件、檢查NPM套件的GitHub Repo、下載數、發佈時間、透過
npm audit檢查已知的惡意套件、使用npm view確認套件資訊。鎖定NPM依賴版本
避免自動更新未審查的套件版本,應使用
package-lock.json鎖定版本防止 NPM 自動拉取新版本的惡意套件。停用
postinstall腳本建議在開發與 CI/CD 環境中禁用
postinstall腳本以避免惡意套件在安裝時執行惡意程式碼。使用NPM安全工具
使用偵測 NPM 套件風險工具,例如:Socket.dev自動分析套件中的可疑行為 、Snyk偵測NPM依賴中的安全漏洞或使用
npm audit/yarn audit檢查專案安全性。確保環境變數安全
攻擊者常竊取AWS Key、GitHub Token、Database Credentials開發者應避免將敏感資訊寫入.env或config.json中、使用Secrets Manager(AWS Secrets Manager、Vault)存放機密資訊,同時確保 CI/CD pipeline 的憑證權限最小化。
限制開發環境權限
不要以root權限執行
npm install、使用Docker或VM隔離開發環境、限制NPM執行權限。
結論
Lazarus Group針對NPM生態系統的供應鏈攻擊事件,凸顯了開發者安全意識不足的問題。NPM雖然提升了開發效率,但也帶來供應鏈攻擊風險,開發者必須建立良好的安全習慣,包括:
- 檢查 NPM 套件來源
- 鎖定套件版本,避免盲目更新
- 停用
postinstall腳本,降低自動執行風險 - 使用安全工具檢查NPM依賴
- 保護環境變數,避免機密資料洩露
供應鏈攻擊的風險無法完全消除,但透過適當的防禦措施,開發者可以降低成為受害者的可能性。
封面圖片來源:Bleeping Computer
參考資料來源:
- gbhackers, Lazarus Group Drop Malicious NPM Packages in Developers Systems Remotely
https://gbhackers.com/lazarus-group-drop-malicious-npm-packages/ - gbhackers, Lazarus Hackers Exploit 6 NPM Packages to Steal Login Credentials
https://gbhackers.com/lazarus-hackers-exploit-6-npm-packages/#google_vignette - HackRead, Lazarus Group Hid Backdoor in Fake npm Packages in Latest Attack
https://hackread.com/lazarus-group-backdoor-fake-npm-packages-attack/ - Bleeping Computer, North Korean Lazarus hackers infect hundreds via npm packages
https://www.bleepingcomputer.com/news/security/north-korean-lazarus-hackers-infect-hundreds-via-npm-packages/ - iThome, 北韓駭客組織Lazarus仿冒6個知名NPM套件,發動軟體供應鏈攻擊
https://www.ithome.com.tw/news/167821 - 資安人, 北韓駭客組織Lazarus透過npm套件感染數百系統https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=11727
李佳珮
2025-06-05
