CMU等曝光GitHub「地下產業鏈」!450萬個Star都是刷的
新智元報導
編輯:澤正 英智
【新智元導讀】GitHub平台上日益嚴重的虛假star,不僅威脅到開源項目的透明度和聲譽,還可能被利用於傳播惡意軟件和釣魚攻擊。CMU團隊通過開發工具StarScout,系統分析了虛假star的特徵、趨勢及其對軟件供應鏈安全的潛在影響。
什麼?Github的star居然都能是假的了,甚至數量達到了驚人的450萬!
大多數的研究人員都會將自己的項目發佈到Github中,以增加曝光度。項目的star也一直被大家視作是用來檢驗項目熱度的關鍵指標。
但是CMU團隊新近研究StarScout卻實錘了Github中疑似有450萬star全都是假的!
很多項目存在惡意賬戶去刷star,以來吸引注意,甚至在對應的項目中注入惡意代碼,以攻擊那些想要複現項目的研究人員。
現在有15%的可能性,一個獲得50個star的倉庫涉及star造假。
就像著名美國心理學家Donald T. Campbell所說,「任何量化社會指標在社會決策中用得越多,它就越容易腐敗,就越容易扭曲和腐敗它打算監測的社會進程」。
Github里高star項目這種足以風靡全球的吸引力,自然也逃不過如此規律。
如下關於GitHub倉庫star數據的圖表,展示了從2019年8月到2024年8月期間,每月獲得至少50顆星的倉庫數量(藍色折線)以及每月疑似存在虛假星級活動的倉庫數量(橙色柱狀圖)的變化情況。
-
藍色折線(#Repos>=50 star):代表每月獲得至少50顆star的GitHub倉庫數量。
-
橙色柱狀圖(#Repos w. Suspected Campaigns):表示每月疑似存在虛假star活動的倉庫數量。
從圖表中可以看出,雖然獲得至少50顆star的倉庫數量總體較為穩定,但疑似存在虛假star活動的倉庫數量在近年來呈現明顯上升趨勢,尤其是在24年。
如果你在Google中搜索「buy GitHub star」,就會顯示出眾多這方面的服務商。其中每個star的價格,最低購買數量,star到項時間都如下表一樣,明碼標價。
而更令人匪夷所思的是,很多服務商甚至宣稱可以在數小時之內,甚至立刻就能讓項目具有足夠的star。
因此,GitHub庫可以通過購買star來用於黑客攻擊、發送垃圾郵件、求職簡曆造假,甚至去傳播惡意軟件而非法營利等有安全威脅的惡性事件。
例如這個擁有111顆star的項目,但其中109顆實際都是假的。項目的README文件(左上圖)建議使用區塊鏈應用程序,但如果執行,其代碼(底部圖)會使用隱藏的spawn函數來調用遠程文件去執行腳本(名稱為看似合法的JavaScript包)來竊取你的加密貨幣。
令人哭笑不得的是,項目有唯一的一個issue,大概是由受害者創建的,他警告這裏隱藏著惡意軟件。
而真正的開發者則對這種現象十分的不理解與牴觸。
「我很睏惑為什麼有人會想買假的GitHub star。我的意思是,有這麼多假賬戶而不是真實的人關注你又有什麼意義。」
如何判定star是假的?
下述兩幅圖展示了涉及到假star的GitHub庫對應的名稱數據,分別為已刪除的庫和仍然存在的庫。
可以發現,auto、bot、2024、telegram、free等都是涉嫌star欺詐的常見庫名稱。
而大多數已被刪除的庫似乎都是關於盜版軟件的(加密貨幣機器人pixel-wallet-bot-free、Solana-Sniper-Bot)或遊戲作弊(GTA5-cheat)。
下表描述了參與star欺詐活動的GitHub賬戶主要有哪些特徵,可以看出其中沒有GitHub組織、沒有公司關係和沒有個人網站的帳戶所佔比例最高。
也就是說,如果一個賬戶具有預設頭像,也不屬於GitHub上的組織,並且在其個人資料中沒有任何從屬關係或網站,他的項目倉庫名還涉及到了上面兩個詞雲圖中的高頻詞的話,那麼這個賬戶對應的倉庫很大概率涉嫌star欺詐活動,甚至意圖進行惡意欺詐和黑客攻擊。
而就star交易來講,從以往研究文獻中可知,GitHub star黑市至少以三種不同方式運作:
-
商家可以在自己的網站、即時通訊應用程序或淘寶等電子商務平台上公開出售GitHub star。
-
GitHub用戶可能會組建交換平台(如GitStar或即時通訊群組),然後對彼此的GitHub倉庫進行互star操作。
-
一個GitHub倉庫可能會直接用禮物激勵其廣告活動的受眾為倉庫加star(如OceanBase所發生的情況)。
所有這些運作方式似乎都違反了GitHub的可接受使用政策,該政策禁止以下行為:
-
不真實的互動,如虛假賬戶和自動的不真實活動
-
排名濫用,如自動加星或關注
-
由加密貨幣、代幣、積分、禮物或其他贈品等獎勵所激勵的活動
在上述討論的所有三種情況下,研究者認為這些購買、交換或受激勵而獲得的 GitHub star是虛假的,因為它們是人為抬高的,並不真正代表真實GitHub用戶對倉庫的任何真實讚賞、使用或收藏。
StarScout設計
從整體上看,StarScout在GHArchive上應用分佈式算法,以從GitHub歷史中定位兩種異常star行為的特徵:低活動特徵和同步特徵,這兩者很可能與虛假star相關。
具體來說,低活動特徵用於識別那些對一個或幾個代碼倉庫star後便不再活躍的賬戶的stars;而同步特徵識別來自n個賬戶集群的stars,這些賬戶在短的∆t時間窗口內反復一起對另一個包含m個倉庫的集群進行star。
在虛假star與真實star之間劃定明確邊界並不容易,某些特殊情況,例如一個GitHub教程倉庫要求讀者為其點star作為教程的一部分,會增加這種區分的複雜性。
StarScout使用一個由用戶和代碼倉庫組成的雙向圖(Stargazer Bipartite Graph)來處理這些特徵的檢測。
在低活動特徵的檢測中,StarScout會識別僅有一個WatchEvent(即只為一個GitHub倉庫點star)以及在同一天最多一個附加事件(如ForkEvent)的賬戶。
儘管被檢測的賬戶可能是由虛假star商控制的一次性機器人賬戶,但也可能是誤判的真實用戶,例如某人本來是合法註冊的真實賬戶,但是在為一個倉庫點star後就將自己的GitHub擱置了。
為了緩解這一問題,StarScout只考慮那些至少擁有50個被懷疑為虛假star的代碼倉庫。
這種行為是GitHub star商無法規避的,因為無論他們採用何種混淆方法,這些賬戶通常都是新註冊的一次性賬戶,或者是在短時間內為多個倉庫點star以滿足交付承諾。
從數學角度來看,GitHub上的所有star可被建模為一個二分圖:每個用戶和代碼倉庫是一個節點,它們的star關係構成邊,而star時間則作為邊的屬性。
如果一個虛假star商控制了一組n個賬戶,在承諾的交付時間內為m個代碼倉庫點star,那麼它們將在star雙向圖中留下所謂的
之前的一些研究也已表明,這種近似二分核於在線社交網絡中很難自然形成,並且與欺詐活動高度相關。
然而,找到最大二分核的問題是NP難的。
因此,StarScout重新實現了CopyCatch,這是一種最先進的分佈式局部搜索算法,曾用於Facebook檢測虛假點讚。通過該算法,StarScout檢測GitHub star雙向圖中的近似二分核。
CopyCatch從一組種子倉庫(所有具有≥50顆star的倉庫)開始;然後它迭代地生成一個時間中心,並增加n和m,為每個種子倉庫在該時間中心內找到一個局部最大的近似二分核。最後,大於預定義n和m閾值的二分核將被視為虛假star。
雖然處理低活動特徵和同步特徵的兩種啟髮式方法能夠識別GitHub star數據中的顯著異常模式,但並不能假定每個獲得虛假star的代碼倉庫都是主動去獲取這些star的。
例如,對於非常受歡迎的代碼倉庫,虛假star可能顯得毫無意義。但免不了虛假賬戶可能故意為流行代碼倉庫點star,以規避平台檢測。因此,後處理步驟旨在僅保留那些因虛假star激增而受益顯著的代碼倉庫。
為此,StarScout彙總了每月的star數,並尋找符合以下條件的代碼倉庫:
(1) 至少有一個月獲得超過50個虛假star,且虛假star比例超過50%;
(2) 所有時間段的虛假star比例(相對於所有star)超過10%。
StarScout將這些代碼倉庫視為發起虛假star的代碼倉庫,並將激增月份中點star的賬戶標記為參與虛假star活動的賬戶。
最終,StarScout在22,915個代碼倉庫中檢測到453萬個虛假star,這些star由132萬個賬戶創建。
與基準刪除比例(倉庫為5.84%,用戶為4.43%)相比,已檢測的倉庫和賬戶的刪除比例異常較高:虛假star活動中大約91%的倉庫和62%的疑似虛假賬戶已被刪除。
通過對GitHub事件分佈的比較分析,研究人員發現,存在虛假star活動的倉庫和賬戶往往更傾向於單一的star操作,其他類型活動事件的數量相較於普通倉庫明顯更少。
而且就算是在star活動數量上兩者相近,但存在虛假star活動的賬戶和倉庫通常僅有少量的Fork、Push和Create活動,而幾乎沒有Issue、PR和Comment活動。這主要是因為後三種活動相較於前三種活動更難以偽造。
假star真能以假亂真,提高熱度嗎?
研究者也對於假star是否能夠像真star一樣擁有「馬太效應」進行了研究。
研究的目的探索假stars是否也能通過提高熱度,以假亂真來吸引更多的用戶去給出真實的star。
他們針對GitHub stars的影響製定了以下兩個假設:
-
H1:積累真實的GitHub星級將有助於GitHub倉庫在未來獲得更多真實的 GitHub 星級。
-
H2:積累虛假的GitHub星級將有助於GitHub倉庫在未來獲得更多真實的GitHub星級,但效果不如真實星級強。
為了檢驗這兩個假設,研究者通過向模型添加固定效應或隨機效應項,穩健地估計了自變量對未觀測到的異質性(即可能影響結果變量但未在模型中測量的因素)的縱向影響。
從上表中可以看出,H1假設得到了明確支持:根據固定效應模型,在保持所有其他變量不變的情況下,月t-1真實stars增加1%與月t真實星級預期增加0.36%相關。
類似地,也可以預測出從月t到月t+1真實stars能夠增加0.36%。而該效應在月t+2則降至0.15%,在隨後的所有月份降至0.11%,但效應始終為正。
換句話說,擁有更多真實stars的倉庫在未來往往也會獲得更多真實stars,這與社交網絡中普遍存在的「富者愈富」現象相呼應。
另一方面,H2假設僅得到部分支持:在保持所有其他變量不變的情況下,月t虛假stars增加1%與月t+1真實stars預期增加0.08%以及月t+2真實stars預期增加0.04%相關。
換句話說,虛假stars在接下來的兩個月內對吸引真實星級確實具有統計學上顯著且縱向遞減的正向效應,但該效應比真實星級的效應小三到四倍。
然而,月t虛假stars增加1%與月t+2及之後所有月份真實星級平均預期減少0.05%相關。
總的來講,購買假star可能在短期內(即兩個月以內)能夠幫助一個倉庫獲得真實的關注,但其效果比真實的star小3到4倍。而且從長期來看,這種做法無疑也會產生深遠的負面影響。
最後,研究者強調,GitHub庫的star指標並不是一個可靠的高質量指標,所以至少不能是高風險決策的單一參考指標。
同時,研究者也建議開發者不要為推廣自己的項目而去偽造star,因為這其實無濟於事。
相反,他們建議在開源領域工作的存儲庫維護者和初創公司創始人應該戰略性地專注於促進實際項目的進步,而不是表面上誇大star的數量。也就是說如果項目實際上並不是高質量的和維護良好的,那麼即使高star可能會在短期內增加項目的可見度,也終究會迅速被大家排斥。
參考資料:
https://arxiv.org/abs/2412.13459