AmirhosseinHonardoust/Solidity-Economic-Risk-Scanner

GitHub: AmirhosseinHonardoust/Solidity-Economic-Risk-Scanner

Solidity经济风险扫描器是一个研究级工具,用于检测智能合约中的经济漏洞和激励风险,以提升DeFi系统稳定性。

Stars: 15 | Forks: 0

# **Solidity 经济风险扫描器** ### **一个用于检测智能合约中经济漏洞的研究级框架**

# **摘要** 当今的智能合约审计主要关注传统安全问题:重入攻击、整数溢出、访问控制和内存安全。 但现实世界中大多数 DeFi 失败是**经济性**的,而非技术性的: * 费用参数不稳定的协议 * 设计用于缓慢掏空的拉地毯代币 * 预言机操纵点 * 无上限的通胀向量 * 定价错误的清算 * 脆弱的抵押逻辑 * 有缺陷的 AMM 不变量 * 所有者控制的流动性陷阱 **Solidity 经济风险扫描器**引入了一类新的智能合约分析: **经济安全分析**,即检查智能合约逻辑中编码的经济激励、财务机制和系统行为。 该工具旨在帮助研究人员、审计员、构建者和投资者在漏洞变成利用、崩溃或系统性失败之前,识别经济脆弱性。 # **为何经济安全比以往任何时候都重要** ## **1. 最大的 DeFi 损失并非源于重入攻击,而是经济失败** 示例: | 漏洞类型 | 示例 | 损失 | | :--- | :--- | :--- | | **预言机操纵** | Mango Markets | 1.14亿美元 | | **流动性陷阱/蜜罐** | 数十个 ERC-20 拉地毯代币 | 巨大 | | **有毒费用代币** | 隐藏税收滥用代币 | 普遍 | | **错误的 LTV 计算** | 多个借贷协议 | 数百万 | | **通胀铸造** | 管理员铸币漏洞 | 总计数十亿 | 纯粹的“代码正确性”是不够的。 DeFi 系统必须作为**金融机器**而不仅仅是软件来进行分析。 # **该工具实际做什么** 该扫描器执行**经济逻辑分析**,而非字节码级的漏洞枚举。 它检测: ### **1. 控制风险(权限与管理员权力)** * 过度使用 `onlyOwner` * 所有者可铸造代币 * 所有者可任意更改费用 * 所有者可将用户列入黑名单 * 管理员终止开关 * 可升级代理漏洞利用可能性 这些模式与真实的“缓慢拉地毯”中发现的模式相同。 ### **2. 代币经济学风险** * 无上限铸造 * 具有过高销毁率的通缩代币 * 反射/重新定基机制 * 卖出高税但买入低税 * 实现用户锁定的费用结构 * 不一致的供应公式 这是经济正确性分析,而不仅仅是代码正确性。 ### **3. 流动性与交易风险** * 蜜罐(无法卖出) * 黑名单/白名单流动性陷阱 * 冷却时间或反机器人逻辑 * 流动性移除权限 * 基于所有者逻辑的转账门控 许多诈骗代币都滥用这些模式。 ### **4. 预言机与定价风险** * 所有者控制的预言机 * 手动价格设置器 * 缺乏合理性检查 * 无时间加权定价 * 无滑点控制的基于 AMM 的定价 这些对于借贷、AMM、永续合约协议至关重要。 ### **5. 不变量与参数风险** 检测缺失以下内容的信号: * AMM 不变量(`x * y = k`) * LTV 比率的安全边界 * 抵押品健康检查逻辑 * 清算缓冲 * 利用率上限 一个没有边界的 DeFi 系统在经济上是不安全的。 # **架构(深入说明)** 该项目被构建为一个**基于管道的安全引擎**,类似于静态分析器,但为**经济逻辑**而设计。 ``` ┌────────────┐ │ Loader │ └──────┬─────┘ │ ┌──────▼─────┐ │ Parser │ └──────┬─────┘ │ ▼ ┌───────▶ Features ◀───────┐ │ ┬ │ │ │ │ │ ┌──────▼─────┐ │ │ │ Rules │ │ │ └──────┬─────┘ │ │ │ │ │ ┌──────▼─────┐ │ └───── │ Scoring │ ──────┘ └──────┬─────┘ │ ┌─────▼─────┐ │ Reporting │ └───────────┘ ``` 每个组件都是模块化且可扩展的。 # **模块详解** ## **1. 加载器 (Loader)** * 读取 `.sol` 文件 * 递归目录 * 构建 `{文件名 → 源代码}` 映射 * 处理 CLI 输入 这部分稳定且健壮。 ## **2. 解析器 (Parser) (当前为简单占位符)** 解析器当前创建一个包含以下内容的 `ContractProfile`: * 合约名称 * 原始源代码 * 函数/变量的占位符 其设计旨在被以下工具替换: * Tree-Sitter 解析器 * solc JSON AST * solidity-parser Python 移植版 一旦连接了 AST,特征提取将变得非常强大。 ## **3. 特征提取器,核心智能层** 每个特征提取器分析**经济行为信号**: ### `fees.py`,费用与税收经济学 搜索: * 费用变量 * 买/卖税结构 * 转账费用逻辑 * 基于税收的铸币/销毁操纵 ### `supply.py`,代币供应动态 查找: * 铸造 / 销毁 * 缺失 maxSupply * 弹性供应逻辑 ### `roles.py`,中心化控制 检测: * `onlyOwner` * 仅限管理员的功能 * 修饰符 * 升级管理员逻辑 ### `liquidity.py`,流动性与交易模式 标记: * 黑名单 * 白名单 * 冷却时间 * 反机器人逻辑 * 流动性方向性 ### `oracle.py`,价格预言机逻辑 检测: * Chainlink 使用 * 手动价格设置器 * 自定义 AMM 价格代码 * 所有者控制的定价 ### `invariants.py`,经济不变量模式 检测以下方面的提示: * 恒定乘积 AMM * 借贷 LTV 比率 * 抵押品健康模型 ## **4. 规则引擎,经济漏洞检查** 每条规则查看特征并生成一个 `RiskFinding`。 当前规则包括: ### ✔ `unbounded_mint_rule` -> `无限制铸造规则` 检测无上限的铸造 → **高风险** ### ✔ `manual_price_rule` -> `手动定价规则` 检测 `setPrice()` 或 `updatePrice()` → **高风险** ### ✔ `blacklist_mechanism_rule` -> `黑名单机制规则` 转账锁定 → **中风险** ### ✔ `centralized_control_rule` -> `集中控制规则` 过度使用 `onlyOwner` → **中风险** ### ✔ `fee_complexity_rule` -> `费用复杂度规则` 费用 + 税收 → **中风险** ### ✔ `missing_safety_bounds_rule` -> `缺失安全边界规则` 提及 LTV 或抵押品但缺乏安全措施 → **低风险** ## **5. 风险评分模型** 风险评分使用加权严重性: | 严重性 | 权重 | | :--- | :--- | | 低 | 1 | | 中 | 3 | | 高 | 7 | | 严重 | 10 | 分数映射到级别: | 分数 | 级别 | | :--- | :--- | | 0 | 无 | | 1–4 | 低 | | 5–14 | 中 | | 15–29 | 高 | | 30+ | 严重 | 这使得不同合约之间的扫描结果可以相互比较。 ## **6. 报告** ### 文本输出: 面向 CLI 用户的可读摘要: ``` [MEDIUM][CONTROL] Heavy reliance on onlyOwner modifiers ``` ### JSON 输出: 面向仪表板或机器学习管道的机器可读格式。 # **真实检测输出示例** ## 示例 1,蜜罐代币 ``` [MEDIUM][LIQUIDITY] Blacklist functionality detected [MEDIUM][CONTROL] Heavy reliance on onlyOwner ``` ## 示例 2,手动预言机代币 ``` [HIGH][ORACLE] Manual price setter detected ``` ## 示例 3,无上限铸造 ``` [HIGH][SUPPLY] Mint function without explicit max supply ``` # **提供的示例合约** 该仓库包含精心策划的合约,用以模拟: | 文件 | 风险类别 | | :--- | :--- | | owner_unbounded_mint.sol | 通胀 / 控制 | | variable_tax_token.sol | 代币经济学 / 费用 | | honeypot_token.sol | 流动性陷阱 | | blacklist_restrictions.sol | 审查 / 流动性 | | manual_oracle.sol | 预言机操纵 | | unsafe_liquidation_lending.sol | 借贷风险 | | broken_amm.sol | AMM 不变量失败 | | reflection_token.sol | 复杂代币经济学 | | proxy_admin_kill_switch.sol | 升级/代理风险 | | whitelist_launch_token.sol | 转账门控 | | burnable_infinite_inflation.sol | 销毁 + 重新铸造 | | deflationary_tax_token.sol | 通缩机制 | 这些示例广泛覆盖了经济攻击面。 # **深层动机与研究背景** 本项目基于以下理念: 纯粹的静态安全分析可以告诉你重入攻击是否可能发生,但它: * 无法告诉你所有者是否可以掏空流动性。 * 无法告诉你费用逻辑是否设陷阱给用户。 * 无法告诉你铸造是否会破坏代币价值。 * 无法告诉你 LTV 逻辑是否会导致资不抵债。 * 无法告诉你价格更新是否允许操纵。 经济失败需要经济推理: * 如果所有者更改 feeBps 会发生什么? * 铸造会稀释所有持有者吗? * 黑名单逻辑会隐藏蜜罐行为吗? * 借贷是否允许抵押不足? * AMM 定价是否会偏离预期不变量? 该工具分析**经济正确性**,而不仅仅是**语法正确性**。 # **未来扩展(专业路线图)** ## **1. 完整的 Solidity AST 集成** 使用: * tree-sitter * solc JSON AST * solidity-parser 实现精确检测: * 控制流 * 修饰符 * 状态变量类型 * 映射 * 数学表达式 * 费用公式 * 事件日志 ## **2. 基于机器学习的拉地毯概率模型** 基于以下数据集进行训练: * 已知的拉地毯事件 * 已知的安全代币 * 已知的 DeFi 漏洞 特征: * 费用模式 * 供应逻辑 * 黑名单使用 * 预言机模式 * 代理模式 * 所有权集中度 输出: * `rug_probability_score`(拉地毯概率分数) ## **3. DeFi 专用模块** * AMM 不变量验证 * 清算正确性 * 利率模型稳定性 * 释放模型模拟 * 流动性迁移模式 ## **4. 链上数据集成** * Etherscan 验证的源代码 * DEX 流动性状态 * 所有者历史 * 代币持有者图谱 * 实时价格馈送 结合链上数据 + 代码分析 = 强大的风险引擎。 # **免责声明** * 这是一个研究工具。 * 它**不能**替代专业审计。 * 发现需要人工验证。 * 智能合约经济学是复杂且依赖上下文的。 请负责任地使用并明智地解读结果。
标签:DeFi, Python, Solidity, 中心化控制, 代币漏洞, 代币经济学, 加密货币安全, 区块链, 去中心化金融, 审计工具, 无后门, 无界铸造, 智能合约, 智能合约分析, 杀软绕过, 流动性陷阱, 激励风险, 研究工具, 系统稳定性, 经济安全, 经济模型验证, 经济漏洞检测, 自动化分析, 自动安全扫描, 财务不变性, 费用机制, 跨站脚本, 逆向工具, 预言机操纵, 风险分析