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