Skip to content

Commit 6612427

Browse files
committed
Add study notes for 2025-08-21
1 parent 836f466 commit 6612427

1 file changed

Lines changed: 134 additions & 0 deletions

File tree

Free-EntropyMXZ.md

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,140 @@ web3初学者,做过一些学习项目,涉及defi,zkp,web3+ai,希望
1515
## Notes
1616

1717
<!-- Content_START -->
18+
# 2025-08-21
19+
20+
# 许可资本市场的智能合约协议漏洞学习笔记
21+
22+
## 学习目标
23+
通过学习《许可资本市场的智能合约协议漏洞》(Vulnerabilities In Permissioned Capital Market Smart Contract Protocols),了解传统金融(TradFi)许可资本市场的智能合约协议(PCM)与去中心化金融(DeFi)协议的区别,掌握其独特的漏洞类型及缓解措施。
24+
25+
## 目录
26+
1. TradFi PCM 与 DeFi 的对比
27+
2. 许可参与
28+
3. 资本要求
29+
4. 监管合规性
30+
5. TradFi PCM 漏洞分析
31+
6. 跨链 PCM 漏洞
32+
7. TradFi PCM 气体优化
33+
8. 总结
34+
35+
## 1. TradFi PCM 与 DeFi 的对比
36+
- **核心差异**:TradFi PCM 与 DeFi 在以下三个方面存在显著差异:
37+
- **许可参与**:DeFi 通常是无许可的,任何人都可以创建钱包并自由交互;而 PCM 限制为经过 KYC/AML 验证的合格投资者。
38+
- **资本要求**:DeFi 通常无高资本门槛,PCM 则要求高资本量,交易最低金额通常在数千至数百万美元。
39+
- **监管合规性**:DeFi 类似“野蛮西部”,缺乏监管;PCM 在高度监管环境中运行,需满足链上和链下的合规要求。
40+
41+
## 2. 许可参与
42+
- **DeFi 特点**
43+
- 无需许可,任何人都可参与,资产具有完全主权(无法被冻结或没收)。
44+
- 开放性导致高风险,2022 年 DeFi 总锁仓价值(TVL)达 1370 亿美元,但被黑客窃取 37 亿美元(占 2.7%)。
45+
- **PCM 特点**
46+
- 仅限预批准的参与者,需通过 KYC/AML 和合格投资者验证。
47+
- 管理员可冻结或没收资产,增强了应对黑客攻击的能力。
48+
- 减少了无许可攻击的风险,正确配置的 PCM 协议可阻止未经授权的状态更改。
49+
- **伪 DeFi**
50+
- 许多标榜“去中心化”的协议实际上是中心化的(如使用集中式排序器或非分布式验证者集)。
51+
- PCM 与伪 DeFi 的区别在于 PCM 更坦诚地披露管理员权限,而伪 DeFi 在紧急情况下也会行使类似权限。
52+
53+
## 3. 资本要求
54+
- DeFi:通常无资本要求或要求较低,普通人可参与。
55+
- PCM:高资本门槛,限制了大部分人的参与,交易金额通常较大。
56+
57+
## 4. 监管合规性
58+
- **DeFi**:无明确法律实体或监管框架,创新与欺诈并存。
59+
- **PCM**
60+
- 在监管环境中运行,需满足监管和业务合规要求。
61+
- 通过链上和链下基础设施跟踪用户和产品数据,确保合规。
62+
- 用户与已知、受监管的实体交互,享有法律追索权,可向监管机构申诉。
63+
64+
## 5. TradFi PCM 漏洞分析
65+
通过 Cyfrin 的私密审计,发现以下 PCM 漏洞类别:
66+
67+
### 5.1 跟踪数据损坏破坏合规规则
68+
- **机制**
69+
- PCM 协议包含跟踪钩子(记录用户和产品数据)和合规钩子(在操作前后检查数据)。
70+
- 交易可能因合规检查失败而被回滚或受到限制。
71+
- **漏洞类型**
72+
- 跟踪数据参数编码/解码不匹配。
73+
- 缺少跟踪钩子,导致数据点未更新。
74+
- 堆叠跟踪钩子,导致同一数据点被多次更新。
75+
- 缺少合规钩子,导致部分交易未强制执行合规规则。
76+
- 合规钩子逻辑错误,复杂性较高。
77+
- 传递错误参数导致数据点损坏。
78+
- 边缘情况:无法禁用或移除钩子,或钩子因依赖的跟踪钩子被禁用而失效。
79+
- **影响**
80+
- **拒绝服务**:核心功能因数据溢出/下溢而回滚,协议几乎不可用,但可通过修复数据恢复。
81+
- **隐性错误**:合规规则看似正常运行,但因输入数据错误导致违规,管理员可能未察觉。
82+
83+
### 5.2 管理员操作导致状态不一致
84+
- **场景**:复杂的管理员功能用于强制执行合规规则,但常因不常用且需处理多种状态而引入漏洞。
85+
- **示例**
86+
- 强制赎回资产导致变量值损坏,破坏关键不变量,引发后续结算失败。
87+
- 强制取消订单导致跟踪数据点损坏,影响合规检查。
88+
- 撤销用户凭证阻止用户获取新凭证。
89+
- 更新凭证架构导致旧凭证无法撤销。
90+
- **影响**:协议状态不一致,可能导致功能失效或合规违规。
91+
92+
### 5.3 权限配置错误和权限提升
93+
- **问题**
94+
- 缺少访问控制,公开可调用的状态更改函数未受限。
95+
- 继承的标准合约(如 ERC-20/721/4626)中的公开函数未受限。
96+
- 权限提升:用户可通过漏洞获得未经授权的权限。
97+
- 基金经理可操作未授权的基金。
98+
- 仅限 KYC 地址持有的代币可转移至非 KYC 地址。
99+
- 用户可将交易输出定向到非 KYC 地址。
100+
- 移除跟踪钩子时未撤销相关权限。
101+
- 缺少快速响应的管理员功能以应对私钥泄露。
102+
- **影响**:可能导致严重的安全漏洞,如合约地址更改或资产转移。
103+
104+
### 5.4 前置交易(Front-running)
105+
- PCM 的受限性质降低了前置交易攻击的影响。
106+
- **发现**:用户可通过前置交易规避管理员操作(如强制赎回),将代币转移到其他地址。
107+
108+
### 5.5 输入验证、舍入、滑点和精度损失
109+
- 与 DeFi 类似,PCM 涉及复杂的财务计算,需注意以下问题:
110+
- 缺少或不足的输入验证,允许代表他人进行交易。
111+
- 除法优先于乘法导致精度损失或资金归零。
112+
- 缺少滑点参数,动态汇率导致输出代币少于预期。
113+
- 精度缩放不匹配,导致金库用户或协议的重大财务损失。
114+
- 流动性检查因精度不匹配而错误阻止赎回。
115+
116+
## 6. 跨链 PCM 漏洞
117+
- **场景**:PCM 协议支持跨链操作,桥接用户凭证和代币化 RWA。
118+
- **漏洞**
119+
- 目标链上缺少来源验证,攻击者可伪造恶意消息触发代币铸造。
120+
- 目标链上交易可被多次执行。
121+
- 跨链用户凭证同步中断。
122+
- 目标链交付失败导致源链代币锁定。
123+
- 区块重组处理错误,导致用户未放弃源链代币却在目标链收到代币。
124+
- 外部链上相同地址与源链多个投资者关联。
125+
- 地址格式验证错误导致桥接到其他链失败。
126+
127+
## 7. TradFi PCM 气体优化
128+
- PCM 协议因合规要求和防御性代码而“重”,需优化气体消耗:
129+
- 缓存相同存储读取,仅读取一次。
130+
- 缓存常用变量,传递给子函数。
131+
- 缓存存储写入,延迟到交易结束。
132+
- 避免迭代整个列表,防止气体耗尽。
133+
- 使用命名返回变量优化内存变量。
134+
- 优先使用 calldata 而非 memory。
135+
- 快速失败,最小化无关代码执行。
136+
- 非可升级合约的存储变量在构造函数中设为不可变。
137+
- 不初始化默认值。
138+
- 启用优化器。
139+
- 仅复制所需结构体字段。
140+
- 高效打包存储槽。
141+
142+
## 8. 总结
143+
- **核心洞察**
144+
- PCM 协议因监管和合规要求引入了独特的漏洞,如跟踪数据损坏和权限配置错误。
145+
- 尽管 PCM 审计报告通常不公开,但其漏洞类型为区块链安全研究提供了宝贵经验。
146+
- **启示**
147+
- 理解 PCM 和 DeFi 的共同点和差异有助于提升智能合约安全性。
148+
- 开发者和安全研究人员需关注合规钩子、权限控制和跨链操作的潜在风险。
149+
- **建议**
150+
- 开发 TradFi PCM 或 DeFi 协议时,应与专业审计机构(如 Cyfrin)合作,增强安全性。
151+
18152
# 2025-08-20
19153

20154
# 捐赠攻击学习笔记

0 commit comments

Comments
 (0)