@@ -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