飛象網訊 新思科技發(fā)現近幾個月,依賴倉庫劫持漏洞(簡稱為Repo Jacking)持續(xù)增加,對開源倉庫的威脅也越來越普遍。依賴倉庫劫持攻擊一旦得逞,可能會對包或產品的用戶產生嚴重的安全隱患,尤其是在受影響的包被用作依賴項的情況下。這通常是由于攻擊的性質導致的——允許不受限制的惡意代碼上傳,重新發(fā)布現有版本或發(fā)布新版本。
Repo Jacking:依賴倉庫劫持漏洞
Repo Jacking是惡意攻擊者對托管倉庫的所有者或維護者賬戶的故意、強制接管。訪問該賬戶后,攻擊者可以將惡意代碼注入項目或將其用作依賴項的項目。
這種類型的供應鏈攻擊往往通過利用GitHub 等托管平臺缺乏重新注冊驗證的漏洞。攻擊方式主要有兩種:
修改用戶名:當托管平臺的用戶修改其用戶名時,攻擊者可能會使用原始用戶名重新注冊倉庫。這允許重新創(chuàng)建倉庫,使用該項目作為依賴項的包可能仍會訪問原始倉庫URL, 以進行更新。
賬戶刪除:與修改名稱類似,攻擊者可以重新注冊已刪除的賬戶,并重新創(chuàng)建倉庫。這種方法更有可能導致項目在試圖通過 URL 獲取倉庫時出錯,因為鏈接會被破壞。這可以被繞過,因為攻擊者會在用戶刪除賬戶和項目嘗試提取倉庫的間隔內重新注冊已被刪除的用戶名。
在這兩種情況下,攻擊者都有效地獲得了對倉庫的完全控制權,從而允許他們執(zhí)行各種特權操作。這些可能涉及指定其他惡意用戶或自行創(chuàng)建的賬戶作為管理員/維護者,進而用于批準對倉庫的推送和拉取請求。通過這種方式,可以將惡意或不需要的代碼強制注入到項目的新版本中。相反地,可以從倉庫中刪除版本和功能代碼,或故意推送中斷提交,從而允許阻礙或破壞預先存在的功能。
保護企業(yè)免受Repo Jacking的方法
隨著供應鏈攻擊的增加,Repo Jacking的案例也在增加,因為它通常是供應鏈攻擊的第一步。接管倉庫可能是一個簡單的過程,但仍會導致嚴重的負面影響。目前有一些可用的補救措施正在研究中,以應對此類攻擊。
多因素身份驗證(MFA),通常為雙因素身份驗證(2FA),為賬戶訪問提供第二層安全性。從理論上講,它應該可以防止不法分子獲得對過期或已刪除賬戶的訪問權限。 GitHub是最大的Git倉庫的托管主機之一。GitHub宣布從 2023 年起,所有維護者賬戶都將強制執(zhí)行2FA。這代表著2FA的采用率將大幅上升,因為目前只有16.5%的活躍 GitHub 用戶使用 2FA。另一方面,流行的 JavaScript 包管理器 npm 并沒有強制執(zhí)行,也沒有宣布打算強制執(zhí)行 2FA。
域名接管是供應鏈劫持倉庫的常見手法,例如當不法分子重新注冊電子郵件的過期域并使用該域請求重置密碼。倉庫托管平臺可以先發(fā)制人,嘗試通過刪除或暫停有即將到期和已過期域的賬戶,以防止這種情況發(fā)生。切斷供應鏈中的鏈接是阻止訪問可能受到損害的賬戶的重要一步。但是,這將對托管平臺產生更大的維護和監(jiān)控責任。
在接下來的幾個月甚至幾年里,開源項目將繼續(xù)擴大和賬戶數量也在增加,依賴項更多并且容易受到劫持。同時,更多所有者和作者賬戶將變得不活躍并被刪除,不法分子更加有機可乘,劫持倉庫。
盡管可以通過補救措施來防止其中許多漏洞,但當前的行業(yè)格局表明,選擇使用 MFA 等預防性技術的用戶數量有限。強制執(zhí)行2FA等方法可能是未來的發(fā)展方向。
憑借增強型漏洞數據防患未然
Black Duck Security Advisories (BDSA)為用戶提供有關漏洞披露的詳細信息,自動生成的警報概述了易受攻擊的代碼和已使用軟件包中的補救措施?蛻艨梢允褂 BDSA 快速修復新漏洞并了解包中的惡意開發(fā),例如 Repo Jacking。BDSA會詳述被劫持的軟件包易受攻擊的版本、關鍵信息和新的開發(fā),例如分叉的倉庫。
很多解決方案單單依賴美國國家漏洞數據庫(NVD)的數據。但是,許多漏洞和受影響的開源項目從未在NVD中記錄過,并且漏洞通常都是在發(fā)布幾周之后才被列入NVD。BDSA借助由 新思科技網絡安全研究中心 (CyRC)分析的增強型數據,保證完整性和準確性,并且可當日告知新報告的安全漏洞,平均比 NVD 提早了三周。這可以為用戶盡早發(fā)出漏洞提醒并提供全面的見解,大幅降低供應鏈安全風險。