Ionet 是如何被黑的
昨日,io.net遭黑客攻击,修改了机器名字和在线状态。创始人回应称黑客只能更改私人名称,官方将尽快修复。黑客利用安全漏洞,通过请求配置信息和上报数据来污染其他用户设备。加密KOLHolegots从技术角度分析了黑客的做法,并表示无需担心。攻击并不困难,黑客利用Tailscale通信,只要拿到Authkey就能加入网络。目前,只有上报部分数据受影响,钱包和认证部分仍安全。个人猜测今天攻击可能是因为昨天镜像增加了验证,对黑客来说更有难度。
![Holegots](/wp-content/themes/zhtcw/assets/images/logo-icon.png)
原文作者:Holegots,加密 KOL
原文来源:notion
编者语:昨日,据社群用户反馈,有黑客通过 API 直接修改 io.net 多台机器的名字和在线状态,来污染数据。多台机器的名字和在线状态都被修改。io.net 创始人兼首席执行官 Ahmad Shadid 随后回应称,黑客只能更改用户的装置私人名称,没有人在机器上运行任何新容器,官方将尽快修复这一问题。加密 KOL Holegots 从技术角度分析了 io.net 是如何被黑的,并表示目前的情况无需担心。BlockBeats 转载全文如下:
今天看到有黑客 ionet 的所有设备都改了,看到大家很恐慌,其实这个并不困难,主要还是 io 自己的安全意识太差了
大概讲讲他是怎么做的。
IO 的工作流程
首先对 IO worker 的工作流程进行分析,其实主要是三个部分,分别是 数据抓取 上报 Uptime(不过在新版本中已经被下掉了)
初始化
在一开始启动的时候,io.net 会去 Secret 的 API 请求非常多的 配置信息,这里包含了最新的镜像,启动命令,各个 API 调用的 AuthKey。
数据抓取部分
数据抓取的部分包和代码
内容很简单,主要是一系列的设备信息的抓取,也可以在容器的 /tmp/scrape_metrics.json 中看到抓取的结果。
数据上报
/tmp/scrape_metrics.json
然后就是数据上报,这个也是黑客主要用的手段之一,他会分别往两个 DB 中写入数据,分别是 Redis 和 Postgresql。
Postgresql 的数据插入
其次是 Redis 的 Put 和修改,这里是主要是为了前端页面的现实和查询速度,这也是黑客的主要修改目标之一,这个接口比较简单,只需要有 Device ID 就可以了
Redis 的修改 以及 TTL 的覆盖
以上是关于 IO.net 的 Worker 是如何工作的主要流程。
黑客是如何污染其他用户的
这里其实就提到了刚才说的,io.net 自己的 安全意识不足,上述的上报接口中,其实是基本没有做鉴权的,你只需要拿到 USER_ID 和 DEVICE_ID,就可以手动上报设备,当然这个也是为什么之前能加这么多设备的原因,因为一个 HTTP Call 就足够了
设备上报接口
关于【Ionet 是如何被黑的】的延伸阅读
io.net 真实 GPU 数量成迷?去中心化 AI 协议存在哪些问题?
@ionet是建立在Solana上的去中心化算力网络,获得了Mult1C0inCapital和MoonhillCapital的融资,拥有25000个节点,为AI初创公司节省了90%的计算成本。但@MartinShkreli和@rargulati质疑其GPU数量和问题,认为真正答案是320个。去中心化的人工智能协议存在成本高、时间效率低、软件路由算法不佳等问题,需要很长时间解决。所有投标只是梗而已。
Foresight Ventures:去中心化云计算的革命才刚刚开始?
近两年,Crypto x AI已成为市值增长的核心叙事,去中心化作为AI发展的有力工具具有巨大吸引力和潜力。DePIN赛道的项目通过P2P经济模型为资源需求方提供高质量资源,Io.net和Exabits合作为客户提供更低价的算力。PingPong作为DePIN资源渠道商,通过平台式开放协议解决资源有限和服务质量不佳的问题。Io.net和Exabits合作可使去中心化算力生态发展,PingPong目标是成为最大的DePIN服务聚合器。未来去中心化云计算发展前景可期,但需解决资源不足问题。
在这里 只需要提供 USER_ID 和 DEVICE_ID 就可以往官方插入一个新的设备,然后就是如何获取这些信息的问题了
获取 Device ID
在官方的 Explore 中, 是可以看到所有 Device 的信息的,通过抓接口遍历,我们也是可以拿到所有的 DEVICE_ID 的
获取 USER ID
注意:该方式已经反馈过官方安全团队 并已经于前些天被修复。
这个原理非常简单,在最早的 Worker 的初始化过程中,设备会去获取自身的状态,比如如果是 terminated 或者其他状态,就停止运行,这个接口在之前一直是可以获取 User ID 的。
早期接口
所以,在前几天的时候,只需要通过 DEVICE_ID 就可以获取所有人的 USER_ID ,
只需要拿到这两个 ID 就可以任意上报对应的设备。
访问别人的网络
这里其实就是加入到 tailscale 以后 进行了一次 nmap 扫描,只能算上这是脚本小子的自嗨。
由于 io.net 对于网络之间的通信使用的是 Tailscale, 而初始化过程中,是会把 AuthKey 下发到设备上的,所以只需要拿到 Authkey,就可以加入到 网络中,因此所有人都可以做到同样的事情。
不要担心 你的设备在没有被使用的时候是不会加入 tailscale 的。
总结
是否应该恐慌
就整个过程来说,其实并没有什么难度,只要愿意的话并具有一部分网络安全知识的话,大家都可以轻易做到。
由于 io.net 没有对 PUT/POST 的接口做 Auth,导致整个表现像 DB 被黑了一样,但实际上 收到影响的也只有 上报部分的数据,钱包和 AuthN 部分,看起来还是完全不用担心的。
为什么是今天
我个人猜测可能是因为昨天 [io.net](<http://io.net>) 的镜像中,增加了 POW 部分的验证, 所以对于部分脚本小子来说,会更有难度,因此选择在今天开始攻击。
免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:Holegots,如有侵权请联系删除。转载或引用请注明文章出处!