写点什么

刚刚过去的一年 GitHub 刷星大爆发?!450 万假 Star,项目风光仅撑 2 个月!

  • 2025-01-03
    北京
  • 本文字数:3173 字

    阅读完需:约 10 分钟

大小:1.63M时长:09:28
刚刚过去的一年GitHub刷星大爆发?!450万假Star,项目风光仅撑2个月!

近期,Socket Inc、卡内基梅隆大学和北卡罗来纳州立大学的研究人员进行了一项新研究,发现 GitHub 上竟然有 450 万个 star 是假的,具体来说:

 

  • 自 2024 年以来,与假星相关的活动迅速激增;

  • 假星用户的个人资料特征与普通 GitHub 用户并无区别,但其中大部分的活动模式明显异常;

  • 大部分假星被用于推广伪装成盗版软件、游戏作弊器或者加密货币肉鸡的“短命”恶意软件代码仓库;

  • 某些代码仓库虽然凭借假星在一段时期内吸引到了关注,但这种推广作用一般持续不超过两个月,在长期来看反而成为负担。

每星 0.1 美元到 2 美元

 

作为当前最具影响力的开源软件开发平台,GitHub 提供一系列类似社交媒体的功能以标记高质量代码仓库。GitHub 项目的星数是利益相关方评估、选择并将开源项目纳入其软件供应链时最常采用的信号。然而,GitHub 星数会被人为夸大。

 

在谷歌上搜索“GitHub 买星”即可找到十余家服务商,其报价从每星 0.10 美元到 2.00 美元不等,且商家往往声称可以在几天甚至几小时内完成刷星。

 


GitHub 刷星商家(部分)清单

 

GitHub 星可通过多种方式进行伪造(例如肉鸡、人类外包、用户通过刷星换取奖励的交易平台等),恶意行为者也在不断改进其行为以逃避平台检测。他们的行为让真星与假星之间的界限愈发模糊,对假星的识别与量化构成了挑战。其次,GitHub 数据的庞大规模(过去五年间产生了约 20 TB 的元数据)与 GitHub API 的速率限制亦给全局分析带来了挑战。最后,GitHub 并不会保留已被删除的代码仓库及用户,因此导致对欺诈或恶意活动的衡量更加困难,其中相当一部分活动信息可能已被平台删除。

 

之前大多数关于 GitHub 假星的报告主要来自灰色文献(即未经同行评审的博文、新闻报道及在线讨论),涉及的 GitHub 代码仓库较少。这次研究人员则进行了一次全局量化探索,利用先前在挖掘软件代码仓库及社交媒体欺诈检测方面的工作成果构建了 StarScout。

 

StarScout 可扩展工具能够扫描整个 GHArchive,即 GitHub 上全部事件的 Google BigQuery 副本(涵盖共 6054 万用户、3.1 亿个代码仓库、6.1 亿颗星以及 60.1 亿个其他事件)以检测疑似假星。据悉,该工具能够识别出两类假星行为特征,即低活动特征与锁步特征,同时提供后处理步骤以降低噪声并提高准确性。

 


StarScout 工具检测到的恶意软件代码仓库示例,该库已被上报给 GitHub 并被删除。其有 111 颗星,研究人员怀疑其中至少有 109 颗假星

 

2024 年,GitHub 刷星大爆发

 

GitHub 中的假星有多普遍?

 

先说结论:总体而言,在 2024 年之前,假星在 GitHub 上的流行度和影响都比较有限。但在 2024 年,刷星活跃度增加了两个数量级。

 

研究员们将这些代码仓库和账户与 GHArchive 中的两个基准组进行比较,即:每月获得大于/等于 50 星的代码仓库及活跃的 GitHub 用户数量(即至少执行过一次 GitHub 操作),结果如下:



每月涉及假星活动的代码仓库数量,与当月获得大于/等于 50 星的 GitHub 代码仓库总量的对比

 


参与假星活动的用户数量,与每月全体活跃 GitHub 用户的数量对比

 

结果显示,欺诈性刷星活动在 2022 年开始抬头,自 2024 年以来开始激增:2022 年之前的大多数月份,涉及刷星活动的代码仓库一般不超过 10 个;2022 年到 2023 年,数字增加至十余个;到 2024 年进一步增加至数千个。从数据集来看,刷星活动在 2024 年 7 月达到顶峰,当时有 3216 个代码仓库涉及刷星,参与用户为 30779 人。

 

即使刷星者总量不大,仍会显著扭曲 GitHub star 作为软件项目流行度的准确性。例如,在 2024 年 7 月的高峰期,30779 名参与刷星的用户虽仅占当月活跃 GitHub 用户总量的 1.88%,但对应的 3216 个代码仓库却占当月获得大于/等于 50 星的 GitHub 代码仓库总量的 15.84%。这些仓库和假星污染了现有 GitHub 流行度指标,即获得 50 颗乃至更多星的代码仓库中,有 15%并非真正“受到欢迎”。

 

另外,研究显示,在 GitHub 上观察到的大规模刷星活动,与软件包注册表中当前发生的垃圾传播活动并不相关。对于涉及刷星活动的软件包,其恶意损害往往会立即发生,但似乎没有形成对于 npm 及 PyPI 供应链的重大影响。

 

存在假星活动的 GitHub 代码仓库有哪些特点?


先说结论:与普通 GitHub 账户相比,假星活动中的账户使用默认头像且未填写个人资料信息的可能性略高,但区别不大。最大差异在于其中超六成的活动模式表现出高度人为的迹象,且几乎只为代码仓库(及 fork)打星,而未做任何其他有意义的操作。

 

研究人员将 15835 个涉及刷星活动的代码仓库分为了两组:截至 2024 年 10 月已经在 GitHub 上被删除的代码仓库(共 14371 个)以及调查时仍然存在的代码仓库(共 1464 个)。总体而言,大多数代码仓库(特别是已经被删除的代码仓库)生命周期都很短(其中超过 75%的代码仓库活跃周期——即发生过 GitHub 操作——不到三天)。

 

与仍存在的代码仓库相比,已删除的代码仓库往往具有更高比例的假星。但如果检查这些项目的最新星数(截至 2024 年 10 月),还会发现其星数有所下降。



大多数已被删除的代码仓库似乎与盗版软件(例如 Adobe-Animate-Crack)、加密货币肉鸡(例如 pixel-wallet-bot-free、Solana-Sniper-Bot)或者游戏作弊器(例如 GTA5-cheat)有关。

 

通过与 GitHub 现在且拥有类似名称的代码仓库相比,许多项目充其量只能算垃圾内容,只有极端情况下为恶意软件。这与仍存在于 GitHub 上的代码仓库使用的名称词汇确有不同,这表明至少有一小部分代码仓库之所以刷星,确实是为了激发人气、吸引受众。

 

参与假星活动的 GitHub 账户有哪些特点?

先说结论:与普通 GitHub 用户相比,参与刷星活动的账户不填写个人资料的可能性略高,但差异相对不大。

 

通过密罐代码仓库发现的虚假账户相比,研究人员收集的刷星活动数据集中的账户总体上更多使用默认头像、未隶属于任何 GitHub 组织,而且在其个人资料中也没有说明任何从属关系或列出网站。

 

研究人员发现,大多数参与刷星活动的用户,其大部分操作基本集中在点赞加星方面,且多数不会执行那些难以伪造的操作。然而,也有迹象表明部分账户的活动模式与正常 GitHub 用户比较接近。

 

为了进一步描述刷星活动中账户的活动模式,研究人员从 10000 个涉及刷星活动的样本账户中提取了 1816 个,又对其事件分布向量进行了谱聚类。他们发现,在参与刷星活动的账户中,至少有 60%具有琐碎的活动模式。

 

其中,53.74%的账户几乎只执行为代码仓库加星的操作(集群 1);6.44%的账户则几乎只执行为代码仓库加星和分叉的操作(集群 2)。这两个聚类的删除率都超过了 70%。39.97%的账户在加星和分叉之外还有许多其他活动,但其删除率仍然高达 30.25%(集群 3)。

 


对参与刷星活动的账户进行谱聚类结果的 t-SNE 投影

 

假星对于推广目标 GitHub 代码仓库有多大效果?

 

先说结论:在推出后的前两个月,假星在吸引真星(即真实用户关注)方面有轻微的积极作用。但在两个月之后,假星往往开始产生负面影响(即真星收益减少)。

 

研究人员采用了⾯板⾃回归模型进行统计分析,从下面计算结果得出了结论是:购买假星可能会帮助一个代码仓库在短期内(即不到两个月里)获得真正的关注,但这种效果比真正的星标要小 3-4 倍;从长期来看,这种行为会产生负面影响。



对开源从业者的启示

 

基于上述研究,研究人员对开源从业者们提出了一些建议。

 

  1. GitHub 星数并不属于可靠的质量信号,请勿将其用于高风险决策,至少不应单独使用。研究人员表示,尽管不可能在此类决策中完全忽略星数的影响,但也请务必参考并评估其他信号。例如,从业者可以考虑能够反映开源组件采用水平的其他安全相关和基于活动的信号,包括开源安全基金会(OpenSSF)记分卡。

 

  1. 虽然开源维护者天然有着推广项目、吸引用户关注其成果的诉求,但请不要为了吸引受众而刷星——分析表明这根本无济于事。虽然有一种说法认为可以借此推广产品以实现受众增长,但这样做只会适得其反。开源领域的代码仓库维护者和初创公司创始人们应该以更加务实的战略性态度专注于实际应用,而不能只做表面工夫、伪造星数指标。

 

参考链接:

https://arxiv.org/pdf/2412.13459

 

2025-01-03 15:5115116

评论

发布
暂无评论

【kubernetes技术专题】Kubernetes架构分析介绍篇(入门篇)

码界西柚

Kubernetes k8s Kubernetes Serverless 10月月更

Node.js入门

Studying_swz

Node 10月月更

【Java深入学习】一个关于“锁”的程序-中

Geek_65222d

10月月更

0:数据库的产生-MySQL

Yeats_Liao

数据库 后端 10月月更

网络入门(基础知识和网络整体的认识)

雪芙花

c c++ 10月月更

Spring Boot「10」Propety 验证

Samson

Java spring 学习笔记 spring-boot 10月月更

Linux学习-开发工具yum/vim/gcc/g++/gdb

可口也可樂

开发工具 Linux Kenel 10月月更

Mybatis学习

Studying_swz

10月月更

Ubuntu 设置中文语言环境

Yeats_Liao

ubuntu 后端 10月月更

Linux学习-常用指令

可口也可樂

后端 Linux Kenel 10月月更

Spring IOC和AOP

Studying_swz

spring 10月月更

成功建设私有云需要考虑这些关键点

阿泽🧸

私有云 10月月更

牛客刷题系列之进阶版(组队竞赛,排序子序列,倒置字符串, 删除公共字符,修理牧场)

雪芙花

c c++ 10月月更

企业如何添加内嵌式的帮助文档

Baklib

帮助文档

正向代理与反向代理

急需上岸的小谢

10月月更

Spring事务传播机制

急需上岸的小谢

10月月更

eeui安卓开发--如此简单

江拥羡橙

android Weex 安卓 10月月更

程”风破浪的开发者|个人信息管理

CODA

学习方法 信息管理 10月月更 “程”风破浪的开发者

Glibc---_IO_do_write函数逻辑分析

桑榆

源码刨析 10月月更 C++

docker学习笔记

ios苹果打包——超详细的教程分享

江拥羡橙

ios CocoaPods 苹果 Weex 10月月更

spring用到的设计模式

急需上岸的小谢

10月月更

YARN工作流程

穿过生命散发芬芳

YARN 10月月更

2022-10-21:你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。 你要用 所有的火柴棍 拼成一个正方形。 你 不能折断 任何一根火柴

福大大架构师每日一题

算法 rust 福大大

一起学习 Go 语言设计模式之建造者模式

宇宙之一粟

设计模式 建造者模式 Go 语言 10月月更

Linux学习-权限的理解

可口也可樂

后端 Linux Kenel linux 文件权限控制 10月月更

前端JavaScript小技巧【建议收藏】

江拥羡橙

JavaScript ES6 10月月更

leetcode 450. Delete Node in a BST 删除二叉搜索树中的节点 (中等)

okokabcd

LeetCode 数据结构与算法

Databend 存储架构总览

Databend

“程”风破浪的开发者|国产之光,鸿蒙系统

急需上岸的小谢

OpenHarmony “程”风破浪的开发者

一文带你入门微服务,通俗易懂

wljslmz

架构 微服务 10月月更 单体服务

刚刚过去的一年GitHub刷星大爆发?!450万假Star,项目风光仅撑2个月!_AI&大模型_褚杏娟_InfoQ精选文章