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