應用程序開發者近日收到警告:惡意版本的pgserve(一款用於應用開發的嵌入式PostgreSQL伺服器)和automagik(一款AI編程工具)已被上傳至npm JavaScript註冊表,可能危害開發者的電腦安全。
下載並使用這些惡意版本將導致數據、Token、SSH密鑰、憑證(包括亞馬遜雲服務AWS、微軟Azure及谷歌雲平台GCP的相關憑證)、瀏覽器加密錢包中的數字貨幣以及瀏覽器保存的密碼遭到竊取。此外,該惡意軟體還會向其他與受感染機器相連的電腦擴散。
上述警告本周由兩家安全公司的研究人員相繼發出。
Socket公司的研究人員發現了針對應用開發者的偽造軟體包,目標對象是尋找pgserve(一款用於應用開發和測試的嵌入式PostgreSQL伺服器)和automagik(Namastex.ai開發的一款AI編程及智能體編排命令行工具)的開發者。研究人員指出,此次攻擊與近期一場名為"CanisterWorm"的攻擊活動存在相似之處——後者是一種蠕蟲式供應鏈攻擊,通過將npm上合法軟體包的內容替換為惡意代碼來實施破壞。
在Socket完成審查時,偽造的automagik/genie軟體包顯示每周下載量為6744次,偽造的pgserve軟體包每周下載量約為1300次。
Socket發布安全公告時,automagik的惡意版本涵蓋4.260421.33至4.260421.39,且新的惡意版本仍在持續發布和被識別中。研究人員表示,受影響版本的完整範圍、涉及的維護者及版本發布路徑是否遭到入侵,目前仍在調查之中。
與此同時,StepSecurity公司的研究人員也在npm上發現了pgserve的惡意版本。他們指出,受感染版本(1.1.11、1.1.12和1.1.13)中注入了一段長達1143行的憑證採集腳本,該腳本會在每次安裝時通過postinstall鉤子自動運行。
據StepSecurity介紹,pgserve最後一個合法發布版本為v1.1.10。
StepSecurity強調,與普通資訊竊取軟體不同,這款惡意軟體實質上是一種供應鏈蠕蟲:一旦在受害者機器上找到npm發布Token,它便會立即將自身注入該Token有權發布的所有軟體包,從而進一步擴大感染範圍。被盜數據經加密後,會被傳輸至去中心化網際網路電腦協議(ICP)的容器端點——這是一種託管於區塊鏈上的計算節點,之所以被特意選用,正是因為執法部門或域名封堵手段都無法將其下線。
這是軟體供應鏈攻擊的最新案例。在此類攻擊中,威脅行為者希望開發者從開源註冊表下載受感染的工具,並將其集成到軟體包中,從而使惡意代碼得以大範圍傳播。
在近期案例中,上個月就有黑客入侵了Axios HTTP客戶端庫首席維護者的npm賬戶;去年夏天,攻擊者還入侵了npm上的多個JavaScript測試工具。
加拿大安全編碼諮詢機構SheHacksPurple負責人Tanya Janca表示,已下載惡意版本pgserve和automagik的開發者必須立即採取行動。
"在做任何其他事情之前,立刻輪換你能想到的所有憑證,"她說,"然後強化CI/CD網路出口控制,確保構建運行器只能訪問其明確需要的域名。確保構建運行器和部署運行器使用擁有獨立權限的獨立服務賬戶。目標是確保即便有惡意軟體包在構建環境中運行,它也無法連接攻擊者的基礎設施(用於竊取數據和密鑰),並阻止其滲透到部署流水線中。"
為防止任意惡意npm軟體包造成危害,Janca建議IT管理者默認禁用postinstall腳本的自動執行。
開發者還應立即運行以下命令:npm config set ignore-scripts true。她承認,這樣做偶爾會導致部分合法軟體包出現問題,但其目的是製造一個有意識的摩擦點,迫使開發者主動判斷某個腳本是否允許在其機器上運行。
此外,她表示,開發者還需要藉助工具來核驗發布到npm上的內容是否與源代碼倉庫中的內容完全一致。"並非所有軟體成分分析工具都能做到這一點,"Janca說,"因此,要專門詢問你的供應商,該工具是否能檢測出註冊表與代碼倉庫之間的內容差異。"
最後,她建議對發布Token實施最小權限原則:嚴格限定Token的使用範圍,僅賦予其針對某一特定軟體包所需的權限,並定期自動輪換,而非依賴人工操作。
"人們往往把這類事件定性為憑證竊取,"Janca說,"但它實際上可能導致整個組織被完全接管,且攻擊會分階段展開。第一階段,攻擊者在安裝時獲取你的所有密鑰:AWS密鑰、GitHub Token、SSH密鑰、資料庫密碼,以及環境變量或主目錄中儲存的一切。第二階段,如果你擁有npm發布Token,蠕蟲會立即利用它將自身注入你有權發布的每一個軟體包,這意味著你的下游用戶也隨之成為受害者。第三階段,被盜的雲憑證被用於滲透你的基礎設施:創建資源、竊取數據、在賬戶間橫向移動。第四階段,你的CI/CD流水線對運行器和服務賬戶隱式信任,攻擊者的惡意代碼就此被引入生產環境。"
她還指出,開發者往往需要很長時間才能察覺此類攻擊,"而在此之前,攻擊者可能已經訪問了源代碼、生產系統、客戶數據,以及用戶所依賴的軟體。"
Forrester Research高級安全與風險分析師Janet Worthington表示,近期的CanisterSprawl攻擊活動和Namastex.ai npm軟體包遭入侵事件,表明威脅行為者正在向自我傳播型惡意軟體的方向轉變——這類軟體能夠竊取憑證,並利用憑證自動感染其他軟體包。
"這種行為與早期的Shai-Hulud蠕蟲爆發如出一轍,後者通過採集npm Token並以受感染維護者的身份重新發布木馬化版本,在數百個軟體包中蔓延,"她在一封電子郵件中表示。
她指出,儘管npm等開放註冊平台正在針對發布者賬戶和Token引入更強的保護措施,但這些事件清楚表明,入侵的影響早已不再局限於單一惡意軟體包,而是會在註冊表生態系統中迅速級聯擴散,甚至蔓延至其他生態系統。"企業應通過維護經過審查的私有註冊表、在流水線中自動化運行軟體成分分析,以及使用依賴防火牆來限制暴露範圍和影響半徑,確保只有經過審核的開源和第三方組件才能被使用,"Worthington說。
Janca還指出,開發者處於源代碼、雲基礎設施、CI/CD流水線和發布憑證的交匯處,因此入侵一名開發者,可能意味著入侵其所維護的每個軟體包的所有用戶,乃至整個組織。近幾個月來,包括此次在內的多起攻擊還同時將個人加密錢包作為攻擊目標,與企業憑證一併竊取。"這說明,"她表示,"攻擊者清楚地了解攻擊對象的特徵,並以最大化單次攻擊收益為目標進行了針對性優化。"
Q&A
Q1:npm註冊表中的惡意pgserve和automagik軟體包會造成哪些危害?
A:下載並使用這些惡意版本後,攻擊者可竊取Token、SSH密鑰、AWS/Azure/GCP等雲平台憑證、瀏覽器加密錢包中的數字貨幣及保存的密碼。更危險的是,該惡意軟體是一種供應鏈蠕蟲,一旦找到npm發布Token,會自動將自身注入受感染維護者有權發布的所有軟體包,並向其他連接的電腦擴散,可能導致整個組織被完全接管。
Q2:開發者如何判斷自己是否下載了惡意版本的pgserve?
A:根據研究人員披露的資訊,pgserve的惡意版本為1.1.11、1.1.12和1.1.13,最後一個合法版本為v1.1.10。automagik的惡意版本涵蓋4.260421.33至4.260421.39,且新的惡意版本仍在持續發布中。開發者可通過核查本地已安裝的版本號來判斷是否受到影響,並建議立即檢查並輪換所有相關憑證。
Q3:如何防止npm惡意軟體包攻擊?有哪些具體操作建議?
A:主要防護措施包括:立即運行`npm config set ignore-scripts true`禁用postinstall腳本自動執行;強化CI/CD網路出口控制,限制構建運行器只能訪問必要域名;為構建和部署運行器設置獨立服務賬戶;使用能檢測註冊表與代碼倉庫內容差異的軟體成分分析工具;對發布Token實施最小權限原則並定期自動輪換;企業還應維護經過審查的私有註冊表並部署依賴防火牆。






