2022 年 8 月 3 日,Solana 公链上发生大规模盗币事件,大量用户在不知情的情况下被转移 SOL 和 SPL 代币。慢雾安全团队第一时间介入分析,并在 Slope 团队的邀请下对 Slope 钱包应用进行分析,分析表明:Slope 钱包在 2022 年 6 月 24 日及之后发布的版本存在向第三方应用监控服务发送私钥或助记词信息的现象。
但从对 Slope 钱包应用进行调查到现在,无法明确证明此次事件的根源就是 Slope 钱包的问题,于是慢雾安全团队开始对 Slope 的服务器进行分析取证。
事件发生之后各方的关注点主要聚焦在调查本次事件的根源以及资金的追踪和挽救的可能性。于是慢雾安全团队制定相关的计划,开始从链下和链上两个部分着手调查和分析。
在事件根源调查这个方向上,慢雾安全团队重点专注在对 Slope 服务器的分析取证。这里面有大量且复杂的工作需要推进,也需要有更多明确的证据来解释这次的大规模盗币事件的根源。
资金追踪和挽救的可能性这部分工作,慢雾安全团队主要依靠 MistTrack(https://misttrack.io/)的追踪分析能力、标签数据能力并结合情报能力,尽最大的努力识别和追踪黑客的链上行为。并且也和 Slope 团队沟通交流挽救的可能性,Slope 团队也在尝试与黑客沟通希望通过发布漏洞赏金的方式,鼓励黑客归还资产,共同维护 Solana 这个生态的健康发展。
本篇仅向社区用户同步阶段性的调查情况,还有很多的分析工作正在进行,并且不断推进。各方人员不仅是慢雾,还有其他第三方安全团队,以及一些特殊力量也在努力帮忙调查中,希望这次事件最终能够有相对明确的结论。
注:本文所提到的 Sentry 服务指的是 Slope 团队私有化部署的 Sentry 服务,并非使用 Sentry 官方提供的接口和服务。
在同步分析的情况之前,我们先来回答上篇文章的分析过程中的一些疑问点:
1. Sentry 的服务收集用户钱包助记词的行为是否属于普遍的安全问题?
答:Sentry 主要用于收集相关应用服务在运行状态时出现的异常或者错误日志信息,在配置错误的情况下,可能会收集到预期之外的数据,如:私钥或助记词等信息,因此并非普遍存在的安全问题。开发人员在使用第三方应用监控服务切记不能在生成环境中开启 Debug 模式。
2. Phantom 使用了 Sentry,那么 Phantom 钱包会受到影响吗?
答:虽然 Phantom 使用了第三方应用监控服务但是慢雾安全团队通过对 Phantom 钱包历史各版本的监测,并未明显发现 Sentry 上传私钥 / 助记词的行为。
3. Solana Foundation 提供的调研数据显示本次事件近 60% 被盗用户使用 Phantom 钱包,30% 左右地址使用 Slope 钱包,其余用户使用 Trust Wallet 等,那这 60% 被盗用户被黑的原因是什么呢?
答:经过比对发现服务器上的私钥和助记词派生出来的地址(包含 HD 地址)与受害者地址有交集的有 5 个 ETH 地址和 1388 个 Solana 地址。目前的调查情况看,还没有明确的证据能够解释另外部分用户钱包被黑的原因。
4. Sentry 作为一个使用非常广泛的服务,会不会是 Sentry 官方遭遇了入侵?从而导致了定向入侵加密货币生态的攻击?
答:目前暂无证据表明 Sentry 官方遭到了入侵和攻击,Slope 钱包使用的 Sentry 是内部搭建的服务,因此和官方服务被入侵无直接关系。
链下部分慢雾安全团队主要聚焦排查链下服务器、相关后台等被入侵的可能性,工作的重点是对 Slope 服务器进行外围服务器资产风险排查,服务器的入侵痕迹排查,Sentry(PostgreSQL)数据库分析,服务器镜像分析,DNS 劫持的可能性分析。如下是排查和分析的情况:
Slope 团队知道 Slope 钱包回传助记词和私钥信息之后,第一时间就关停了 Slope 钱包相关的服务。因此 Slope 钱包相关的服务已经不能通过直接访问,慢雾安全团队依靠互联网搜索引擎等工具对 Slope 外围服务器资产进行信息收集,包括 slope.finance 域名下的子域名和 IP 等进行模拟渗透测试分析,排查从外围可能存在的入侵风险点,通过分析和渗透测试并未发现存在可被直接入侵的风险点。
主要对第三方应用监控服务器进行内部排查,包括服务器登录日志,系统历史操作命令,可疑进程,可疑网络连接,可疑系统计划任务,数据删除和获取操作等,服务器内部还有 5 个 Docker 服务也进行同样的入侵痕迹排查。排查发现几个可疑登录 IP 为:113.*.*.*,114.*.*.*,153.*.*.*,这些 IP 是在 06.24 之前访问过 第三方应用监控服务的后台。虽然这发生在回传私钥和助记词的时间(06.24) 之前,但是仍然存在可疑。
由于助记词和私钥被 Slope 钱包的第三方应用监控服务回传到服务器上,所以慢雾安全团队也对服务器中可能存在私钥或助记词的位置进行了分析,分析发现私钥或助记词较大可能会留存在如下位置:
Sentry 的数据库表中
PostgreSQL 的数据库日志中
镜像磁盘已删除的数据中
Docker 运行时的数据文件中
在分析过程中发现第三方应用监控服务采用了 PostgreSQL 数据库,其中 nodestore_node 表的 data 字段里发现存在第三方应用监控服务采集的私钥和助记词数据。经过分析调查得到以下信息:
私钥和助记词数据内容在 nodestore_node 表的数据库记录时间为 2022.7.28 - 2022.8.5。
慢雾安全团队通过对数据解密和分析,发现私钥或助记词数据内容中记录的最早是 2022.6.29 上传的数据,也就是说 Sentry 在 6 月 29 号采集的数据延迟了一个月的时间才在 2022.7.28 开始陆续被存储到了 PostgreSQL 数据库的 nodestore_node 表,但是这部分延时的数据占较少,大部分的私钥和助记词采集的时间是集中在 2022.07.28 - 2022.08.05。
进一步排查数据库操作日志,发现在 7.28 之前 nodestore_node 表存在 SQL 语句执行失败的记录,原因是键值冲突,经过深入排查和沟通发现是由于 Kafka 服务出错导致没有进行数据写入。
由于部分数据在日志记录和数据恢复的时候暂时不能恢复出完整的数据,需要进一步对数据进行修复,因此优先解密可以被完整恢复的数据,解密出来的地址数量为 189 个 ETH 地址和 4914 个 Solana 地址, 有 5073 组助记词,而链上黑客事件的钱包地址有 42 个 ETH 地址和 9231 个 Solana 地址,经过比对发现服务器上的私钥和助记词派生出来的地址(包含 HD 地址)与受害者有交集的地址有 5 个 ETH 地址和 1388 个 Solana 地址。(这里面不包含少数需要进行修复后才能解密的数据)
在数据库操作日志中还发现另一个内部测试的应用 com.slope.game 在 3 月份也存在私钥和助记词的上报数据,该内部测试应用并未对外发布。
慢雾安全团队对 Sentry 的云服务器的镜像进行分析,并对服务器磁盘已删除的数据进行恢复,并在恢复后的数据中发现了私钥和助记词信息。
慢雾安全团队通过各方的能力以及全球情报资源,包括对 DNS 解析数据查询和分析,目前暂无明确证据能够证明域名 o7e.slope.finance 曾经发生过 DNS 劫持事件。
链下调查和分析的阶段性结论:
就现阶段的调查和分析的情况看,未发现外围服务器可以直接被入侵的风险点;未发现服务器被入侵的痕迹但是对可疑 IP(113.*.*.*,114.*.*.*,153.*.*.*)仍需要继续调查;DNS 劫持的可能性较小;已在数据库表、数据库日志文件、磁盘已删除文件恢复后的数据中发现了私钥和助记词信息。
链上部分主要聚焦于风险资金评估、被盗资金转移和黑客痕迹分析,重点梳理分析了以下几点内容:
根据 Solana 链、ETH 链、BSC 链的被盗资金情况,慢雾安全团队将风险资金分为以下两类:
风险资金:黑客具有地址权限的资金。
疑似风险资金:黑客可能具有地址权限的资金。
根据以下地址列表(主要是 Solana 链、ETH 链)进行风险资金评估:
被盗地址助记词映射到其他链的地址
被盗地址助记词通过派生路径推导出来的地址
排除风险资金地址列表,根据以下地址列表(主要是 Solana 链、ETH 链)进行疑似风险资金评估:
Slope 服务器上存在助记词 / 私钥记录的地址
Slope 服务器上存在的助记词映射到其他链的地址
Slope 服务器上存在的助记词通过派生路径推导出来的地址
未发现大额可转移风险的资金和可能存在风险的资金。
为了避免一些垃圾币对被盗资金的影响,我们在统计过程中只统计主流币种的被盗资金:
Solana 链:SOL、USDC、USDT、BTC 和 ETH。
ETH 链:ETH、USDT、USDC 和 PAXG。
被盗币种价值取被盗当日(UTC 时间 8 月 3 日 00:00 AM)价格。
1 SOL = $38.54
1 BTC = $22,846.51
1ETH = $1,618.87
1 PAXG = $1,759.64
1 BNB = $298.36
对 Slope 服务器上的已解密的私钥和助记词对应派生出来的地址(包含 HD 地址)与链上统计的受害者地址进行分析,有交集的地址有 5 个 ETH 地址和 1388 个 Solana 地址,对这些存在交集的地址做被盗资金统计如下,此部分被盗资金占到总被盗资金的 31.42%。
Solana 链:
资金截止发文时间未进一步转移。
ETH 链:
21,801 USDT 转移到个人钱包地址(根据链上行为特征以及 MistTrack 的标签能力,该地址疑似 OTC 交易地址)。慢雾安全团队正在与各方沟通配合努力追查黑客的身份。
剩余大部分资金兑换为 ETH 后转移到 Tornado.Cash。
BSC 链:
资金截止发文时间未进一步转移。
根据黑客链上行为梳理出时间线如下图:
黑客地址列表如下:
疑似黑客地址列表如下:
第一笔转入
Solana 链黑客钱包 1、2、3 和 4 的链上第一笔转入交易都是来自 Solana 链疑似黑客钱包的 0.1 SOL 的转账。根据对链上痕迹的分析,评估 Solana 链疑似黑客钱包可能是黑客地址,也存在更大可能是受害者地址。
黑客洗钱过程中使用工具
TransitSwap
Uniswap
MetaMask Swap
黑客洗钱变现方式
转移到疑似 OTC 个人钱包地址(上文提到)。
转移到 Tornado.Cash。
黑客地址与交易所 / 平台的关联
直接关联:
TRON 链,黑客 8 月 5 日存款 USDT 到 Binance
存款地址:TE4bkS2PYqWxijgh5eqEz9A5jLn7HcS6fn
存款交易:b6615bf10b2e619edc9315a08f89732664adc9d385c980f77caa6e82872fe376
TRON 链,黑客 8 月 5 日从 Binance 提款 TRX
提款交易:0e012643a7db1b8c5d1f27447b16e313d4b3f89efaa22b3661188fe399cd2d0e
ETH 链,黑客 8 月 5 日从 Binance 提款 ETH
提款交易:0xd035e009173e968d8f72de783f02655009d6f85ef906121e5b99b496a10283dd
ETH 链,黑客 8 月 8 日从 Binance 提款 USDC
提款交易:0xff60f24f8ebd874a1e5da8eae44583af554af9a109a9bd7420da048f12c83cdc
ETH 链,黑客 8 月 10 日从 Binance 提款 USDC
提款交易:0xc861c40c0e53f7e28a6f78ec9584bfb7722cec51843ddf714b9c10fc0f311806
TRON 链,黑客 8 月 10 日从 Binance 提款 USDT
提款交易:10c4186e4d95fb2e4a1a31a18f750a39c0f803d7f5768108d6f219d3c2a02d26
间接关联:
Solana 链疑似黑客钱包 1 月 8 日从 Binance 提款 SOL
提款交易:668jpJec7hiiuzGDzj4VQKSsMWpSnbzt7BLMGWQmrGvHVQQbNGc3i1g8dCj2F5EAxFT8oDG5xWPAeQUMEMBTjhZs
Solana 链疑似黑客钱包存在与 Solrazr IDO program 交互的链上痕迹
交易:2LxLhL7oAiTyHGrAXCZEJyazQQLM7veaKvqUZL6iPkonL4wPLHcwV66MFX3ERyWvJtdd2wFdKfgKUuT1oAv2XepK
疑似 OTC 个人钱包地址(上文提到)与 Binance 、Kucoin 和 OKX 多个交易所存在存款和提款关系
黑客 Solana 链交易记录汇总表Sentry 回传问题导致可能暴露的 Slope 地址被盗交易表