MultiversX入口点分析器Skill mvx_entry_points

该技能用于分析和识别MultiversX区块链智能合约的入口点,包括端点、视图和支付函数,以评估安全风险。关键词:智能合约分析、入口点识别、风险分类、区块链安全。

智能合约 0 次安装 0 次浏览 更新于 3/21/2026

名称: mvx_entry_points 描述: 识别和分析MultiversX智能合约的入口点(#[endpoint]、#[view]、#[payable])。

MultiversX入口点分析器

该技能通过枚举所有公共交互点来帮助您识别智能合约的攻击表面。

1. 识别

扫描暴露函数的 multiversx_sc 宏:

  • #[endpoint]:公共写入函数。高风险
  • #[view]:公共读取函数。低风险(除非在链上使用)。
  • #[payable]:接受EGLD/ESDT。关键风险(值处理)。
  • #[init]:构造函数。
  • #[upgrade]:升级处理程序。关键风险(迁移逻辑)。

2. 风险分类

A. 非支付端点

改变状态但不接受值的函数。

  • 检查:是否有 require!?谁可以调用此函数(仅所有者?)?
  • 风险:未经授权的状态更改。

B. 支付端点(#[payable]

接收资金的函数。

  • 检查
    • 它使用 self.call_value().all()self.call_value().single() 吗?
    • 是否检查了 amount > 0
    • 是否验证了代币ID?
  • 风险:窃取资金,接受假代币。

C. 视图

  • 检查:它是否修改状态?(它不应该,但Rust允许内部可变性或滥用)。

3. 分析工作流程

  1. 列出所有入口点
  2. 标签访问控制OnlyOwnerWhitelistedPublic
  3. 标签值处理RefusablePayable
  4. 图表数据流:它们接触哪些存储映射器?

4. 具体攻击

  • 权限提升:敏感端点是否意外公开?
  • DoS:公共端点插入到UnorderedSetMapper中(无限制增长)。

输出格式

入口点清单

| # | 端点 | 类型 | 支付 | 访问控制 | 风险级别 | 存储接触 | 位置 |
|---|----------|------|---------|----------------|------------|-----------------|----------|
| 1 | stake | endpoint | EGLD | Public | Critical | user_stake, total_staked | src/lib.rs:42 |
| 2 | claim | endpoint | No | Public | High | user_rewards | src/lib.rs:87 |
| 3 | set_fee | endpoint | No | #[only_owner] | Medium | fee_percent | src/admin.rs:12 |
| 4 | get_balance | view | No | Public | Low | - | src/views.rs:5 |
| 5 | init | init | No | Deploy only | Critical | all mappers | src/lib.rs:1 |

攻击表面总结

总端点:[N]
  关键(支付/初始化/升级):[N]
  高(改变状态,公共):[N]
  中(改变状态,受限):[N]
  低(视图):[N]

未检查的支付端点:[列表或“无”]
公共改变状态无访问控制:[列表或“无”]
Mandos场景中缺少的端点:[列表或“无”]

完成标准

入口点分析完成时:

  1. 每个 #[endpoint]#[view]#[payable]#[init]#[upgrade]#[callback] 都在清单表中。
  2. 每个条目都有风险分类。
  3. 攻击表面总结已填充。
  4. 任何没有代币验证的支付端点都被标记。