< 返回新闻中心

Halborn 审计 SSP 的 Account Abstraction 合约

·阅读 4 分钟·作者:SSP Editorial Team
标有 SECURITY 徽章并配以盾牌、钥匙、CPU 与关眼图标,主标题为 Halborn 审计 SSP 的 AA——Schnorr 多签合约审查完毕的封面

2025 年 1 月 16 日,SSP Wallet v1.9.0 与 Halborn 一道收官了一场为期数周的安全审计,对象是 SSP 在 Account Abstraction 中的 Solidity 合约——支撑每一个 Ethereum 与 Sepolia 地址背后的 Factory 与 Account Implementation。审计在关键面上干净利落,仅留下三项 Informational 与两项 Low 级别的发现,且全部位于未使用或死代码中。我们仍然选择逐项修复、重新部署合约,并在 v1.9.0 中交付更干净的版本。这次重新部署是面向 Ethereum 与 Sepolia 用户的破坏性变更:升级后,你在这两条链上的确定性地址会发生变化。

TL;DR

  • Halborn 审计了 SSP 的 Account Abstraction Solidity 侧:Factory 与 Account Implementation 合约。
  • 发现:3 项 Informational、2 项 Low、0 项 Medium、0 项 High。全部位于未使用或死代码路径中。此前部署的合约一直是安全的,且依然安全。
  • 我们仍然重新部署,以保持代码库完全洁净——全新的 Factory 与 Account Implementation 合约随 v1.9.0 上线。
  • **破坏性变更:**升级后,Ethereum 与 Sepolia 地址会改变。请在升级前先转出资金,或联系 SSP 支持获取迁移指引。
  • UTXO 链——Bitcoin、Zcash、Bitcoin Cash、Flux——不受影响。

Halborn 审计了什么

审计范围是我们在 v1.6.0 发布、之后持续迭代的 Schnorr 多签 ERC-4337 合约 的 Solidity 部分。具体而言:@runonflux/account-abstraction 仓库——在用户首次交易时以确定性方式部署账户的 Factory 合约,以及定义该账户如何验证 UserOperations、校验 Schnorr 签名并遵循 ERC-4337 bundler-与-EntryPoint 流程的 Account Implementation 合约。

Halborn 的技术团队对仓库执行了他们留给生产级智能合约的完整测试矩阵。用他们的话说,仓库稳健、遵循 ERC-4337 的建议,并以洁净的方式实现了 Schnorr。这个结论之所以重要,是因为 Schnorr 实现是整个设计中先验工作量最小的部分——AA 栈的其他每一个组件都已在业界经过多次审计,但在 ERC-4337 验证器内部使用聚合 Schnorr 签名,是我们自己亲手构建的东西。

他们发现了什么

报告共有 3 项 Informational 和 2 项 Low 级别的发现——没有 Medium、没有 High、也没有 Critical。完整报告可在 halborn.com/audits/influx-technologies/account-abstraction-schnorr-multisig 阅读。

每一项发现所在的代码,要么在线上合约中未被使用,要么处在不会与真实用户资金对接的执行路径上——防御性脚手架、来自较早一轮迭代的残留分支,诸如此类。没有一项描述了攻击者夺取资金、伪造签名或破坏账户的途径。在审计窗口期间以及之后,Ethereum 主网上已部署的合约始终保持完全安全。

我们为什么还是重新部署

两个理由。其一,洁净的代码库本身就是一种安全形态。被编入已部署合约的死代码,就是未来审计者、集成方和贡献者必须去思考的死代码。把它剪掉,会缩小后续每一次审视所要面对的表面——更少的分支、更少的假设、更少误读合约的方式。

其二,当你有机会发布一份逐条回应所有发现的版本,而不是把它们推到以后的版本,你就该选择前者。我们正是这么做的。v1.9.0 基于新部署的 Factory 与 Account Implementation 合约发布,纳入了 Halborn 的每一条建议。@runonflux/account-abstraction 仓库的稳定分支现已切换为 main(npm ^1.1.0);master 分支与 npm ~1.0.0 则仍然保留,供希望停留在旧部署合约上的用户使用。

面向 Ethereum 与 Sepolia 用户的破坏性变更

由于 Factory 正是从你的公钥确定性地推导账户地址的环节,重新部署 Factory 也就意味着相同的密钥会推导出不同的地址。对于在 Ethereum 主网或 Sepolia 上持有资金的用户,这正是 v1.9.0 的现实影响:升级之后,SSP 为 Ethereum 或 Sepolia 显示的地址将是一个全新的地址。任何留在旧地址上的 ETH 或 ERC-20 都不会自动迁移。

有两种安全的处理方式。直接的路径是在升级前把资金转出旧地址——先转到另一个钱包或交易所,再升级,然后转入你的新地址。另一种路径,适用于已经升级或持仓更大或更复杂的用户,是联系 SSP 支持获取迁移指引,我们可以陪你用旧合约取回旧地址上的资金。

UTXO 链不受影响。Bitcoin、Zcash、Bitcoin Cash 与 Flux 地址不需要经过任何 EVM 合约即可从你的密钥推导,因此 v1.9.0 不会改变这些地址。受影响的只有 Ethereum 与 Sepolia。

后续还有更多

本文专门覆盖 AA 合约审计本身,发布于上线当日。更大的故事——Halborn 在 SSP 钱包、合约和 SDK 上的完整审计组合——已在 深入 SSP 的 2025 Halborn 审计 中铺陈,把本次审计放入与另外两次的整体语境之中。

来源:SSP Wallet v1.9.0 发布说明.

分享本文

相关文章