﻿---
title: "智能账户所有者与恢复风险"
description: "审计谁能控制智能账户、恢复如何更换所有者、适用哪些延迟与取消权，以及模块或升级是否形成隐藏的接管路径。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 智能账户所有者与恢复风险

> 仅供教育参考，不构成投资、法律或安全建议。恢复或配置错误可能转移智能账户控制权，或导致账户永久锁定。

<a id="answer"></a>

## 直接答案

智能账户由部署在该账户上的授权逻辑控制，不一定由单个私钥控制。所有者或验证器可以批准普通操作，而监护人、恢复模块、执行器或升级管理员可能拥有另一条路径，用于更换所有者或执行交易。

恢复功能降低了单个密钥丢失导致账户不可用的概率，却也增加了一个接管攻击面。应审计每一条能够授权执行、更改验证器或所有者、安装模块、升级代码、取消恢复或最终完成恢复的路径。“所有者”和“监护人”等界面标签不能证明合约中的实际权限。

把结果记录为权限表：准确的链上地址、角色、可调用操作、门槛、延迟、取消权限、到期条件、支出范围、升级权限和独立控制域。每次配置变更后，以及该账户存在的每条链上，都要重新核对。

<a id="mechanism"></a>

## 工作原理

1. **识别账户与代码。** 核对链 ID 和账户地址，再确定实现合约、代理或信标、工厂及版本。对于 ERC-1967 代理，应读取实现、信标和管理员存储槽，而不是相信界面徽标。
2. **列出授权路径。** 读取所有者及门槛、ERC-4337 验证器、ERC-7579 验证器、执行器、钩子和回退处理器、Safe 类模块与守卫、会话密钥、恢复合约，以及任何紧急或升级管理员。执行器或 Safe 模块可能绕过普通所有者门槛执行。
3. **解析恢复状态机。** 确定谁能提名替代所有者、如何计算监护人批准、批准是否到期、延迟何时开始、谁能取消、谁能最终完成，以及恢复被替换或重复发起时会发生什么。不要假设所有“社交恢复”合约都采用同一顺序。
4. **测试独立性与可用性。** 如果多个地址由同一设备、个人、云账户、密码库、托管人或管理员控制，它们就不独立。确认发生一个预期故障后仍可达到门槛，同时不让一个控制域拥有足够接管权。
5. **审查配置权限。** 确定谁能增删监护人、验证器、执行器、钩子、模块或回退处理器；更改门槛或延迟；暂停取消；或升级账户与恢复代码。只有当延迟和取消路径不能被其他角色绕过时，时间锁才有意义。
6. **监控并验证。** 订阅或独立轮询恢复、所有者、模块、门槛、实现和管理员变更。任何操作后都要解码交易，并在正确链上核对回执、事件、存储和最终所有者集合；界面提示成功并不充分。

<a id="example"></a>

## 示例

假设账户所有者为 `O`，有三名监护人 `G1`、`G2` 和 `G3`。任意 `2-of-3` 名监护人可以提议新所有者 `N`；随后开始 `24-hour` 延迟；`O` 可在延迟期内取消；延迟到期后任何人都能最终完成。恢复模块无需 `O` 批准最终交易，即可调用账户的所有者变更函数。

标签看似代表分布式恢复，但 `G1` 和 `G2` 是备份到同一云账户的两个应用。云凭据一旦泄露，单个攻击者就获得实际的 `2-of-3` 门槛。攻击者提议 `N`；若监控或取消在 `24 hours` 内失败，即使 `O` 的私钥从未被盗，最终完成仍会转移控制权。

因此，审计应把 `G1` 和 `G2` 标记为一个控制域，核对恢复模块地址与代码，在未受损设备上测试取消，确认由哪个事件启动延迟，并检查升级管理员能否立即替换模块。除非实现提供有文档且可安全回滚的测试流程，否则不要在持有资产的账户上执行真实恢复测试。

<a id="risks"></a>

## 风险与控制

- **监护人相关性：** 使用真正独立的设备、凭据、人员或托管人；测试联络与恢复流程时不要汇集助记词。
- **模块或执行器权限过大：** 检查已安装代码及准确可调用范围。按文档路径移除闲置模块，并在链上验证移除结果。
- **门槛薄弱：** 同时评估抗接管性与可用性。签名者共享一个控制域时，名义上更高的门槛无济于事；无法达到的门槛则会锁定账户。
- **缺少延迟或可绕过：** 在链上核对延迟、启动延迟的事件、谁能缩短延迟，以及每一条能够立即更换所有者的路径。
- **取消无效：** 演练发现与取消流程；在需要时保留原生 Gas 和独立提交路径；确认取消本身需要旧所有者、法定人数还是另一角色。
- **升级接管：** 监控实现、信标和管理员变化。能无延迟升级的管理员应视为有能力改写所有已记录恢复规则。
- **恶意或陈旧界面：** 独立核对链、账户、模块、拟议所有者、门槛、延迟和交易 calldata。绝不要向“恢复”服务透露助记词或私钥。
- **虚假完成：** 取消或最终完成后核对回执与最终存储状态。确认预期所有者和模块已生效，且不需要的提案无法继续执行。

若出现未经授权的恢复，停止签署无关请求，并保存提案 ID、交易哈希、calldata、区块、模块地址和当前状态。在未受损设备上通过独立 RPC 核实警报；若合约规定的取消路径仍可用，应使用该路径，并监控最终完成、升级、模块变更和资产转移。若控制权可能已丢失，应按预先编写的事件响应方案行动，只联系经过认证的项目方或托管方；临时起意的转移可能被抢跑，或暴露目标地址。

<a id="misconceptions"></a>

## 常见误区

- **“只有所有者账户能转移资产。”** 验证器、执行器、模块、恢复合约或升级后的代码可能提供额外执行路径。
- **“三名监护人就是三个独立方。”** 合约只计算地址的有效批准，无法识别共享设备、备份或管理员。
- **“`24-hour` 延迟保证有时间响应。”** 还必须具备监控、可用的取消权限、Gas 和交易打包条件，另一条特权路径也可能绕过延迟。
- **“移除监护人就终止了其访问权。”** 应确认最终链上配置，并检查与该方关联的其他角色、模块、会话密钥和待处理恢复。
- **“客服可以恢复任何智能账户。”** 只有链上编码或预先配置的权限才能更改自托管账户。没有有效的所有者或恢复路径时，访问权可能永久丢失。

<a id="related"></a>

## 相关主题

- [账户抽象](/zh-cn/crypto/account-abstraction/)
- [多签模块风险](/zh-cn/crypto/multisig-module-risk/)
- [多签签名者轮换](/zh-cn/crypto/multisig-signer-rotation/)
- [私钥管理](/zh-cn/crypto/private-key-management/)
- [交易模拟](/zh-cn/crypto/transaction-simulation/)

<a id="sources"></a>

## 来源

- [ERC-4337：使用替代内存池的账户抽象](https://eips.ethereum.org/EIPS/eip-4337)
- [ERC-7579：最小模块化智能账户](https://ercs.ethereum.org/ERCS/erc-7579)
- [Safe 模块](https://docs.safe.global/advanced/smart-account-modules)
- [Safe.sol](https://github.com/safe-fndn/safe-smart-account/blob/main/contracts/Safe.sol)
- [ERC-1967：代理存储槽](https://eips.ethereum.org/EIPS/eip-1967)

Source: https://wiki.fcontext.com/zh-cn/crypto/smart-account-owner-recovery-risk/index.mdx
