|
我用 Calude4 审计了一下合约,存在重入攻击漏洞:
这是一个基于 Solana 的去中心化交易所(DEX)智能合约,实现了代币交易的基本功能:创建订单、购买代币和取消订单。
### 🔴 发现的安全问题 1. 重入攻击风险 (高危)
- 问题 : purchase 函数中先转账给卖家,再从托管转账给买家,存在重入攻击可能
- 影响 : 恶意卖家可能通过重入攻击多次提取资金
- 建议 : 使用检查-效果-交互模式,先更新状态再进行外部调用 2. 价格计算精度损失 (中危)
- 问题 : 第 58-65 行的价格计算使用整数除法,可能导致精度损失
- 影响 : 买家可能支付不准确的价格,特别是小额交易
- 建议 : 使用更精确的定点数计算或四舍五入机制 3. 订单 ID 冲突风险 (中危)
- 问题 : listing_id 由用户提供,可能导致同一卖家的订单 ID 冲突
- 影响 : 新订单可能覆盖现有订单,导致资金损失
- 建议 : 使用自增计数器或时间戳生成唯一 ID 4. 缺少滑点保护 (中危)
- 问题 : 购买时没有最大价格保护机制
- 影响 : 用户可能在价格变动时支付超出预期的费用
- 建议 : 添加 max_price 参数进行滑点保护 |