RepoJacking 反击负面影响上百万 GitHub 库。
上百万 GitHub 库受倚赖库挟持反击 “RepoJacking” 的负面影响,能帮助普通采用者具体来说物流配送反击,负面影响上百万采用者。
RepoJacking 反击
GitHub 上帐号和库名是经常变化的。如果企业被受或合并,英文名字就会发生改变。英文名字发生改变后,就会建立链接来避免毁坏工程项目倚赖。但如果有帐号了原来的帐号或库名,链接就无效了。
RepoJacking 反击是指蓄意帐号两个 GitHub 帐号,并建立两个该组织过去采用的库,接着修正其名。通过 RepoJacking 反击,普通采用者能倚赖被反击工程项目的倚赖来从普通采用者控制的复本拿取倚赖和标识符,其中可能包涵蓄意软件。反击案例
AquaSec 安全研究团队 Nautilus 分析了 125 万 GitHub 库,发现其中 2.95% 可能受 RepoJacking 反击的负面影响。GitHub 库总数少于 3 亿,按照 2.95% 的比例,少于 900 万工程项目受该反击的负面影响。
在 Google 的库范例中,”Mathsteps” 工程项目对准属于 Socratic 的 GitHub 库。Socratic 是Google收购的一家公司。普通采用者能布季夫程序库毁坏链接,采用者根据 readme 文档指示会从蓄意复本下载蓄意标识符。由于 readme 文档中包涵 npm install 倚赖指示,普通采用者的标识符能在受害者设备上同时实现任一标识符继续执行。
图 Google readme 文档中的指示在 Lyft 的范例中,普通采用者能自动继续执行。研究人员在该公司的复本发现两个安装JAVA,能从另两个复本拿取两个 zip 压缩文档,因此也受 RepoJacking 反击的负面影响。
普通采用者具体来说注册两个捷伊帐号和采用正确名的库(YesGraph 和 Dominus),接着能注入标识符到任一继续执行 Lyft 的 “install.sh” JAVA。
图 对准外部库的 Lyft JAVA总结
GitHub 已经意识到 RepoJacking 反击的可能性并同时实现了一些防雷举措。但 AquaSec 称这些防雷举措还不够充分,易被绕过。比如,GitHub 只对那些比较流行的工程项目进行为保护。GitHub 会对布季夫数少于 100 的工程项目修正名时进行为保护。
RepoJacking 的风险是非常广泛的,也难以修复,会对企业和采用者带来严重的风险。工程项目所有者应当尽可能最小化从外部库提取资源。
完整技术细节参见:https://blog.aquasec.com/github-dataset-research-reveals-millions-potentially-vulnerable-to-repojacking