CMU等曝光GitHub「地下產業鏈」 450萬個Star都是刷的
什麼? Github的star居然都能是假的了,甚至數量達到了驚人的450萬!大多數的研究人員都會將自己的專案發佈到Github中,以增加曝光度。計畫的star也一直被大家視為用來檢驗計畫熱度的關鍵指標。但CMU團隊新近研究StarScout卻實錘了Github中疑似有450萬star全都是假的!
許多專案存在惡意帳號去刷star,以來吸引註意,甚至在對應的專案中註入惡意程式碼,以攻擊那些想要復現專案的研究人員。
現在有15%的可能性,一個獲得50個star的倉庫涉及star造假。
論文連結:https://arxiv.org/abs/2412.13459
就像著名美國心理學家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的概述圖
從整體來看,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萬個帳號創建。
截至2024年10月,StarScout偵測到並已在GitHub上刪除的倉庫/帳號的百分比
與基準刪除比例(倉庫為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可能會在短期內增加專案的可見度,最終也會迅速被大家排斥。