幾天前 使用PureScript安裝程序在npm軟件包的依賴項中檢測到惡意代碼,這在嘗試安裝purescript軟件包時表現出來。
惡意代碼 通過從cwd或npm加載依賴項嵌入 和速度圖依賴關係。 應該注意的是,PureScript安裝程序的npm軟件包的原始作者直到最近才從事維護此npm軟件包的工作,但是該軟件包已發送給其他維護者,他負責與這些依賴項相關的軟件包。
關於問題
該問題是由該軟件包的一位新分析師發現的,在與npm purescript軟件包的原始作者進行了許多分歧和醜陋的討論之後,將維護權轉移給了他們。
新的維護者 負責PureScript編譯器和 他們堅持認為,帶有安裝程序的NPM軟件包應由維護者自己修復,而不是由項目外的開發人員修復。
帶有PureScript安裝程序的npm軟件包的作者很長一段時間不同意,但是隨後放棄了,並允許訪問該存儲庫。 但是,有些依賴項仍由他控制。
上週,宣布了PureScript 0.13.2編譯器的發布。 新的維護者準備了與安裝程序相應的npm軟件包更新, 已檢測到惡意代碼。
惡意代碼首先被插入npm包“ load-from-cwd-or-npm” 在3.0.2版中,然後在1.0.3版的rate-map包中。 在最後幾天,兩個軟件包的多個版本都發布了。
他從與npm軟件包作者一起使用PureScript安裝程序的帖子轉移到其他地方,他說他的帳戶被未知的攻擊者破壞了。
黃大仙禁運, 在當前形式下,僅通過破壞軟件包安裝來限制惡意代碼的行為,這是新維護者的第一個版本。 嘗試使用“ npm i -g purescript”命令安裝軟件包而沒有執行任何明確的惡意活動時,惡意行為被排除。
確定了兩次襲擊
簡而言之, 該代碼破壞了purescript npm安裝程序,以防止下載完成,導致安裝程序在“檢查是否為您的平台提供了預編譯的二進製文件”步驟期間掛起。
第一個漏洞利用是通過破壞load-from-cwd-or-npm軟件包來實現的 這樣,對loadFromCwdOrNpm()的任何調用都將返回傳遞序列,而不是預期的程序包(在這種情況下,是用於下載編譯器二進製文件的請求程序包)。 漏洞利用的第二次迭代是通過修改源文件來防止觸發下載回調的。
4天后 開發人員了解了漏洞的根源,並準備發布更新以從依賴項中排除cwd-o-npm的負載,攻擊者發布了從cwd-or-npm 3.0.4加載的另一個更新,其中已刪除了惡意代碼。
但是,幾乎立即發布了對另一個Rate-Map 1.0.3依賴項的更新,其中添加了一個修復程序,該阻止程序用於下載的回調調用。
也就是說,在兩種情況下,新版本的從cwd或npm加載和映射速率的更改都具有明顯的偏差。
另外,在惡意代碼中,只有在安裝新維護者的版本時,該檢查才會觸發失敗的操作,而在安裝先前版本時,該檢查根本不會出現。
開發人員通過發布已刪除有問題的依賴關係的更新來解決該問題。
為防止在嘗試安裝有問題的PureScript版本之後在用戶的系統上安裝受破壞的代碼。
終於 開發者推薦 給在其係統上具有上述版本軟件包的所有人 刪除node_modules目錄和package-lock.json文件的內容,然後設置純腳本版本0.13.2。