【ArchSummit架构师峰会】精华内容上线75%,AI大模型中台从理念到实践的探索!>>> 了解详情
写点什么

加密货币挖矿正在杀死 CI 免费服务

  • 2021-04-27
  • 本文字数:1955 字

    阅读完需:约 6 分钟

加密货币挖矿正在杀死CI免费服务

由于加密货币挖矿攻击,LayerCI、GitLab、TravisCI 以及 Shippable 等等 CI 提供商都在收紧或关闭其免费服务。


2020 年 9 月,GitLab 宣布免费 CI 产品将限制使用;两个月之后,TravisCI 也宣布对“重大滥用”采取类似的限制措施。为什么这些 CI 厂商都会限制免费 CI 产品的使用呢?


深挖其背后原因,我们发现这些变化都与可挖矿加密货币的市值猛增有关。随着加密货币的市值从 2021 年 1 月的 1900 亿美元,激增至 2021 年 4 月的 2 万亿美元,一些企图从可挖矿加密货币获利的不良开发者将目光转向了平台提供商的免费 CI 服务。



加密货币市值激增


加密货币矿工如何在 LayerCI 平台“薅羊毛”?


在 LayerCI 平台,开发者可以通过创建每个分支的预览环境并自动运行端到端测试来构建全栈网站。由于之前,开发者可以在 LayerCI 的服务器上运行任意代码,因此经常有人违反 LayerCI 服务条款来挖掘加密货币。


用户名为“ testronan”的开发者,是 Flask 的狂热用户,他们几乎每一个小时就会提交一次 GitHub 存储库:testronan / MyFirstRepository-Flask。高产的程序员一般都会确保他们的代码能够得到良好的测试,因此我们发现他的存储库包含了五个不同的 CI 服务:TravisCI,CircleCI,GitHub Actions,Wercker 和 LayerCI。


仔细观察他的 CI 任务,我们发现这些 CI 任务看似是在运行 shell 脚本,实际运行的却是“listen.sh”,一个将复杂的 NodeJS 脚本和一些看似随机数结合在一起的 shell 脚本:


(sleep 10; echo 4; sleep 2; echo "tex.webd";sleep 2; echo 7; sleep 1; echo 1; sleep 1; echo "exit"; sleep 2) | stdbuf -oL npm run commands"; sleep 2) | stdbuf -oL npm run commandsundefined
复制代码


拨开迷雾,我们发现 MyFirstRepository-Flask 与 Flask 或 Web 服务器无关,它是将 WebDollars 发送到匿名地址的加密货币挖掘脚本。这些数字对应 WebDollar 的 NodeJS 实现的安装选项。


该存储库不是直接攻击 GitHub,而是滥用 GitHub action 的“ cron”功能来每小时创建一个新提交,并在其他四个 CI 提供程序上挖掘 WebDollars。


接收这些 coin 的两个钱包地址是:


https://www.webdscan.io/address/WEBD%24gBJhmuwat3kvP2@%232E4K2zXX967grh9L43%24


https://www.webdscan.io/address/WEBD%24gCszFRxzuMDbyNXnCXszoB2aIMSuV9kgbb%24


利用浏览器自动化来挖矿


“ vippro99”开发者的做法就没有“testronan”那么巧妙,数十个存储库几乎大部分都与加密货币或浏览器自动化有关。


nodejs-monney 存储库包含了各种脚本,可以通过 Google 流行的 puppeteer 项目启动 chrome 实例。他的逻辑很简单,如果直接在 CI 中挖掘加密货币是很容易被检测到的,而浏览器自动化是 CI 中常见的功能,刚好可以用它来掩盖。


puppeteer.launch({ headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox', '--window-size=500,500', '--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' ] }).then(async browser => {  console.log('-- Running chrome!!');  const page = await browser.newPage();  await page.goto('https://vippro99.github.io/-meocoder-nodejs-tool/index.html');  page.on('console', (msg) => console.log(msg.text()));  await page.waitForTimeout(((Math.floor(Math.random() * 6) + 52) * 60) * 1000);  await browser.close();})
复制代码


据悉,该账户目前正在攻击 JFrog 的 Shippable CI 服务。我们在 Shippable 官网看到这样一则通知:“Your Shippable service will expire on May 3rd, 2021.”不知道这个决定是否与加密货币挖矿有关。


“ vippro99”提供的信息表明他们是在越南, 以 Monero 的当前价格,加密货币矿工在 Shippable 上的每个实例每月可以获得 2.5 美元,只需要维护 60 个并发实例就可以与该国的全职薪资相当。

加密货币和 CI 服务商是如何应对“薅羊毛”的?


针对以上这些花样百出的“薅羊毛”操作,加密货币和 CI 服务商是如何应对的呢?


最近,以太坊(Ethereum)宣布计划完全禁用基于计算的挖矿来获取新以太坊的方式,完全转向 proof-of-stake (POS) validation model。


而 CI 服务商的解决办法基本都是收紧或者关闭免费服务。2020 年 10 月 1 日开始,GitLab.com 免费层上每个顶级组(或个人命名空间)的 CI / CD 使用时长减少到每月 400 分钟,超出部分会以每 1000 分钟 10 美元的价格收费,开发者也可以自己升级到付费基本;2020 年 11 月 1 日开始,TravisCI 重新制定了定价规则,对于拥有 1、2、或 5 个并发计划的构建定价不变,基于 macOS 构建者的需要额外购买附加组件,同时也发布了新的基于使用情况的定价规则。


参考链接:

https://layerci.com/blog/crypto-miners-are-killing-free-ci/

2021-04-27 16:133868

评论

发布
暂无评论
发现更多内容

特斯拉自建ERP的背后

明道云

古有诸葛亮八卦阵阻敌,今有iptables护网安

华为云开发者联盟

安全 防火墙 网络 iptables 数据包

区块链十年与传统金融的变化

CECBC

区块链 金融

Volcano架构设计与原理介绍

华为云原生团队

大数据 AI 云原生 高性能 批量计算

不同公司产品经理岗位对比

LouisN

在数据分析、挖掘方面,有哪些ETL工具值得推荐?

TASKCTL

大数据 kettle 海豚调度 批量任务 ETL

一文解析DDD中台和微服务设计

欧创新

中台 微服务 领域驱动设计 DDD

DevSecOps安全检查清单

啸天

安全 DevSecOps 应用安全

为什么我认为 Deno 是一个迈向错误方向的 JavaScript 运行时?

hylerrix

typescript rust nodejs deno V8

来不及解释!Linux常用命令大全,先收藏再说

华为云开发者联盟

Linux 编程 命令行 命令

区块链科普系列:区块链是什么?

CECBC

区块链

架构师训练营W13作业

Geek_f06ede

架构师训练营第十三周作业

李日盛

PageRank

即构小程序直播组件集成教程

ZEGO即构

用AI「驯服」人类幼崽,手头有娃的可以试试

博文视点Broadview

人工智能 联邦学习 强化学习 集成学习 技术宅

矿机挖矿APP系统模式开发平台

v16629866266

物流快递公司APP架构设计

jorden wang

iOS性能优化 — 五、App启动优化

iOSer

ios 性能优化 性能分析

万字多图 | UML 入门指南

白色蜗牛

Java 程序员 后端 架构设计 UML

当音乐学博士搞起编程...

程序猿DD

Spring Frame

面试官:你真的了解Redis分布式锁吗?

鄙人薛某

redis 分布式锁 线程安全 RedLock

「产品经理训练营」第一章作业

Sòrγy_じò ぴé

产品经理训练营

敏捷里为何倡导固定迭代周期?

万事ONES

敏捷开发 研发管理 迭代

『CDN』让你的网站访问起来更加柔顺丝滑

古时的风筝

CDN

自动量化搬砖套利交易机器人系统软件APP开发

系统开发

生产者与消费者模式,数组阻塞队列(ArrayBlockingQueue)

码农架构

Java 学习 架构 并发编程

一文带你探究Sentinel的独特初始化

华为云开发者联盟

redis sentinel 框架

“反垄断”来袭,对产业区块链有什么启发

CECBC

市场垄断

初识ClickHouse——安装与入门

Simon

Clickhouse

遇到代码缺陷不要慌,马上教你快速检测和修复

华为云开发者联盟

代码 bug 缺陷检测 代码缺陷

Kubernetes概念篇:基本概念和术语

xcbeyond

Kubernetes 容器 pod 28天写作 Kubernetes从入门到精通

加密货币挖矿正在杀死CI免费服务_服务革新_田晓旭_InfoQ精选文章