大家读完觉得有帮助记得及时关注和点赞!!!
抽象
不可替代代币 (NFT) 的爆炸式增长通过在区块链网络上实现独特资产的创建、交换和货币化,彻底改变了数字所有权。然而,这种人气的激增也引发了一个令人不安的趋势:rug pulls 的出现 - 开发人员利用信任和智能合约特权来耗尽用户资金或使资产所有权失效的欺诈计划。许多此类骗局的核心是嵌入在 NFT 智能合约中的隐藏后门。与无意的错误不同,这些后门是故意编码的,并且经常被混淆,以绕过传统审计并利用投资者的信心。在本文中,我们使用静态分析框架 Slither 对 49,940 个经过验证的 NFT 智能合约进行了大规模静态分析,以发现通常与地毯拉扯相关的潜在漏洞。我们引入了一个自定义风险评分模型,该模型根据地毯拉扯指标的存在和严重性将合同分为高、中或低风险等级。我们的数据集来自以太坊主网上经过验证的合约,我们生成了多个可视化效果,以突出危险信号集群、问题普遍性和关键漏洞的共现情况。虽然我们不执行实时漏洞利用,但我们的结果揭示了如何通过大规模静态分析来揭示简单评论经常遗漏的恶意模式。最后,我们为开发人员、市场和审计师提供缓解策略,以增强智能合约的安全性。通过揭示隐藏的后门在现实世界的智能合约中的表现方式,这项工作为通过可扩展的自动分析检测和缓解 NFT 地毯拉扯提供了实践基础。
索引术语:
NFT 安全、智能合约漏洞、地毯拉扯攻击、隐藏的后门、区块链取证、去中心化金融 (DeFi)、智能合约审计、以太坊安全、静态分析、代币利用模式
第一介绍
不可替代代币 (NFT) 的出现使创作者能够在以太坊等区块链平台上将艺术、音乐、虚拟商品和其他资产代币化,从而显着重塑了数字所有权。NFT 智能合约主要基于 ERC-721 和 ERC-1155 标准构建,旨在提供无需信任、不可变的来源和资产转移保证 [1], [2]。然而,NFT 生态系统的快速增长和炒作驱动的性质也带来了重大风险,尤其是金融欺诈和项目放弃的形式 [3]。
该领域最普遍的攻击模式之一是 rug pull:一种欺骗性的退出策略,项目创建者故意禁用功能、擦除代币元数据或耗尽收集的资金,使买家拥有毫无价值或无法访问的资产 [3]、[4]。虽然一些地毯拉扯是通过突然停用或网站关闭在链下执行的,但一种更阴险且技术更复杂的变体通过智能合约中的嵌入式后门在链上发生。这些隐藏的后门通常可以通过自毁 [4]、[5] 等功能实现未经授权的铸造、不受限制的资金提取或完全销毁合约。
与软件经常遭受的常见漏洞(例如可重入代码和算术溢出)相比,这些漏洞是故意设置和预谋的,通过误导性的命名、代理委托和仅在某些触发器下运行的访问控制逻辑来伪装 [6]、[7]。就其本身而言,它们可能看起来无害,并且在手动代码审查或自动审计期间通常不会被标记为可疑
随着 NFT 地毯拉动和诈骗数量的增加,很少有实证工作系统地分析此类后门嵌入智能合约的方式,以及是否可以大规模标记这些后门 [3]、[5]、[6]。为了解决这一差距,我们对以太坊区块链上部署的 49,940 个经过验证的 NFT 智能合约进行了详细的静态分析。我们没有使用旧的案例研究或手动进行逆向工程,而是基于 Slither 运行了一个可重复的流程,Slither 是一种开源静态分析工具,用于提取、分类和评分智能合约中与地毯拉扯相关的可疑模式 [8]。
我们的贡献有四个方面:
- 1.
威胁模式分类法:我们识别并分类了 NFT 合约中常见的后门技术,包括所有者专属铸币、提款功能、使用 delegatecall 进行代理作和合约自毁逻辑 [3], [5], [6]。
- 2.
自动静态分析管道:我们使用 Slither 构建了一个管道来大规模分析 Solidity 源代码,提取与访问控制、外部调用和危险的内置函数相关的合约级结果[8]。
- 3.
基于启发式的风险评分:我们提出了一种简单而有效的评分系统,根据检测到的模式量化合同中的风险,使我们能够将合同标记为低、中或高风险 [9]。
- 4.
可视化和数据集洞察:我们提出了一组可视化来说明关键漏洞的分布和共现,突出了后门在 NFT 生态系统中表现的真实趋势 [3]。
虽然我们的工作不包括动态利用或运行时执行标记的漏洞,但我们证明,仅静态分析就可以揭示各种 NFT 部署中的系统性弱点。通过在公开发布或交易之前揭示这些风险,这项工作为可扩展的 NFT 合约审计和主动的投资者保护奠定了实践基础。
第二背景
NFT(非同质化代币)生态系统建立在区块链技术之上,支持创建、交易和验证独特、不可分割的数字资产。与同质化代币(例如 ERC-20)不同,通常通过 ERC-721 或 ERC-1155 标准实现的 NFT 允许每个代币代表一个不同的项目,带有独特的元数据和所有权属性 [10],[11]。这种灵活性导致数字艺术、游戏、音乐和元宇宙基础设施等行业的快速采用。
每个 NFT 项目的核心都是一个智能合约,这是一个部署在链上的自动执行程序,用于管理铸造、转账、版税支付和访问控制等关键作 [12]。这些合约在部署后是不可变的,这意味着任何嵌入式逻辑——无论是恶意的还是其他的,一旦上线就不能修改。虽然这种特性确保了去中心化和去信任性,但当开发人员故意插入隐藏的后门时,它也为持续漏洞创造了有利的环境 [13]。
NFT 生态系统基于区块链技术,允许创建、交易和证明独特且不可分割的数字资产。NFT 是唯一的代币。他们不能相互交换。它们不是像 ERC-20 那样的可替代代币。这些代币通常通过 ERC-721 或 ERC-1155 标准实现。每个标记代表一个唯一的项目。它带有唯一的元数据和所有权属性。因此,数字艺术家、游戏开发者、音乐家和元宇宙基础设施的建设者都很快采用了它。
每个 NFT 项目都带有一个智能合约。这只是部署到区块链上的代码,并在链上自动执行以铸造、转移、分配版税和控制访问 [12]。一旦部署,这些合约就无法更改,因此其中嵌入的任何逻辑,无论是否恶意,都是不可变的。尽管必须存在此属性才能在用代码创建的东西上实现去中心化和去信任化,但它也造成了一种情况,即当开发人员故意插入隐藏的后门时,漏洞可能会持续存在 [13]。
II-A 型地毯拉动和隐藏的控制逻辑
当项目开发人员利用中心化权限或恶意逻辑来窃取资金、禁用功能或破坏用户所有权时,就会发生 NFT 中的地毯式拉扯。地毯拉扯分为两类:
- 1.
硬地毯拉扯,涉及链上恶意逻辑,如隐藏的 withdrawAll() 或 setOwner() 函数。
- 2.
软地毯式拉扯,涉及链下行为,例如放弃路线图承诺或禁用元数据托管 [12]。
硬地毯拉动在很大程度上依赖于对特权函数的控制,这些特权函数通常隐藏在合约代码中或在特定的链上条件下激活。这些后门程序利用了以下功能:
- 1.
所有者控制的提款或铸币(onlyOwner 模式滥用)。
- 2.
自毁机制,在利润提取后终止合约逻辑。
- 3.
通过可修改的布尔标志冻结令牌或阻止传输。
- 4.
动态 URI 重新分配,允许项目创建者用垃圾邮件、露骨内容或空白文件替换原始图稿或元数据 [13]。
II-B 型Contract Obfuscation 技术
为了进一步逃避检测,恶意开发人员使用代码混淆技术来伪装后门行为。这些包括:
- 1.
欺骗性函数名称(例如,safeWithdraw() 而不是 rugPull())[15]。
- 2.
跨 proxy 或 delegatecall 合约拆分逻辑,这掩盖了控制流 [18]。
- 3.
访问控制作,例如将敏感功能隐藏在 onlyOwner 后面或使用 tx.origin 进行授权 [13]。
- 4.
Time-delayed 触发器,其中 backdoors 在延迟后或特定事件时激活 [14]。
上述策略旨在绕过自动静态分析工具和人工审计师,特别是当审计是肤浅的、众包的或只关注公共接口时 [16]。
II-C 型审计和检测方面的差距
与通常经过严格的第三方审计或正式验证的去中心化金融 (DeFi) 协议不同,大多数 NFT 项目在没有全面安全审查的情况下启动[16]。Lee 等人的一项研究发现,以太坊上部署的 NFT 合约中有很大一部分未经审计,缺乏源代码透明度,或向单个所有者授予过多的权限 [19]。
虽然像 Slither 和 Mythril 这样的工具可以检测语法问题(例如,重入性、算术错误),但它们在处理语义滥用时往往达不到要求——例如合法有效但目的恶意的函数 [20]。即使是更先进的系统,在没有人工指导或特定案例规则集的情况下,也难以推广对行为虐待模式的检测 [13]。
II-D 型需要特定于后门的分类法
迫切需要将 NFT 后门建模为一个独特且不断增长的威胁类别。这些不是简单的错误或疏忽,它们是有意为之的、以利润为导向的设计,利用了用户信任和区块链部署的不可逆性 [14]。
然而,当前的安全工具和研究通常将这些问题视为边缘案例。我们主张创建一个专门的分类法,将这些威胁识别为确定性的、可利用的和系统嵌入的 [17],[20]。
这激发了我们的研究:对部署在以太坊上的 49,940 个经过验证的 NFT 合约进行了大规模静态分析。通过利用 Slither 和自定义启发式规则,我们检测并量化常见的后门技术,例如 selfdestruct、delegatecall 和集中式铸币逻辑。我们的目标是揭示系统性风险的模式,并推广可扩展的部署前检测方法,以帮助安全审计员和日常用户识别高风险合同。
第三方法论
我们分析的基础从组装一个全面的数据集开始。我们利用 DISL 数据集,这是一个公开可用的、大规模的以太坊上经过验证的智能合约存储库。该数据集托管在 HuggingFace 上,包含超过 514,000 个 Solidity 合约,这些合约已部署到 以太坊主网,公开其源代码以供分析 [21]。
为了隔离与 NFT 相关的合约,我们应用以下标准:
- 1)
接口匹配:合约必须实现 key ownerOf、balanceOf、tokenURI、safeTransferFrom 或覆盖等 NFT 函数支持 ERC接口确认 ERC-721 或 ERC-1155 合规性 [22]。
- 2)
库参考资料:我们优先考虑满足以下条件的合同 使用众所周知的库,如 OpenZeppelin 的 ERC721 或 ERC1155 实现,通常用作 合法和恶意的 NFT 项目 [23]。
- 3)
合约元数据:我们解析元数据,例如 合约名称、部署地址、编译器版本和 优化标志,用于协助筛选和稍后 兼容性检查。
这种过滤将原始的 98,879 个合约池减少为一组更相关和更有针对性的特定于 NFT 的智能合约。然后,这些数据将传递到预处理管道进行编译和静态分析。
III-A 系列合同清理和预处理
许多现实世界的智能合约不是为隔离编译而设计的。它们通常包括依赖项、抽象接口或外部导入,这些内容可能无法在本地分析中解析 环境。为了确保只保留适合静态分析的合约,我们构建了一个自定义预处理脚本来自动进行合约清理:
- 1)
导入分辨率:具有未解析的本地 导入(例如 import “../utils/SafeMath.sol“;)是 排除 [24]。除非保留完整的目录结构,否则这些导入通常会中断编译。
- 2)
Pragma 筛选:指定严格 pragma 版本与我们的编译器不兼容 (例如,当我们使用 0.8.19 时,0.8.17)是 过滤掉。我们保留使用灵活 pragma 的合同 比如 ^0.8.0 或 >=0.8.0。
- 3)
独立验证:合约经过测试 独立生存能力 依赖于继承自 文件中不存在的合同将被排除在外。
- 4)
语法和编译检查:失败的合同 由于语法错误、未解析的符号或 循环依赖关系被记录并排除 [25]。
此步骤对于确保 Slither 的高质量输入至关重要。经过过滤和清理后,我们获得了 49,940 个合约的最终池,这些合约是完全独立的,适用于基于 Slither 的静态分析。
III-B 型使用 Slither 进行静态分析
我们漏洞检测过程的核心使用 Slither,这是 Trail of Bits 为 Solidity 智能合约开发的静态分析框架 [26]。Slither 分析合约的控制流图 (CFG)、抽象语法树 (AST) 和继承层次结构,以识别已知的反模式和潜在漏洞。 上述实验的设置包括以下内容:

实验设置:
- 1)
批处理:Python 包装器处理每个 contract 通过 Slither 使用 --json 标志来 提取结构化漏洞数据。
- 2)
漏洞提取:对于每个合约,我们提取以下信息:
- •
问题的类型(例如 delegatecall、selfdestruct、 外部呼入循环)
- •
受影响的合约和函数名称
- •
问题描述
- •
严厉
- •
源文件路径和受影响的行范围
- •
- 3)
日志记录失败:遇到特定于工具的故障(例如,不支持的语法)的合约将被记录并从数据集中删除。
我们的 Slither 分析配置为检测 100 多种已知的漏洞模式,特别强调以下与地毯拉扯相关的结构:
- •
selfdestruct() 用法:允许终止合约和资金重定向。
- •
delegate调用外部地址:可以将控制流转移到未经验证的代码。
- •
仅限所有者或不受限制的铸币/提款功能。
- •
由 tx.origin 设门的控制流条件。
- •
循环内未受保护的外部调用,这可能导致重入或不可预测的行为 [27]。
此过程为每个合约生成丰富的漏洞配置文件,然后我们根据可利用性对其进行分类。
III-C 系列基于启发式的风险评分
静态分析工具提供了大量的原始问题数据,但并非所有发现都同样危险或与地毯式拉扯有关。为了以有意义且可解释的方式量化合同风险,我们引入了基于安全影响的启发式评分系统。
每个检测到的问题都会提供一个加权分数,如下所示:
表 I:漏洞模式的启发式评分
| 漏洞模式 | 得分 |
|---|---|
| 使用 selfdestruct | +3 |
| 使用 delegatecall | +3 |
| 外部调用内部循环 | +2 |
| 不受限制或仅限所有者的提款/铸造 | +2 |
| 在访问控制中使用 tx.origin | +2 |
| 已弃用的 Solidity 版本使用 | +1 |
风险类别
每张合约的累积分数决定了其风险类别:
- •
高风险:评分≥5
- •
中等风险:得分 3-4 分
- •
低风险:1-2 分
此模型提供了一种可重复且可扩展的方法来对大型协定集进行分类,并将注意力集中在最危险的示例上。该模型允许对合同进行可扩展的分类,以便进一步审计 [28]。

III-D 型结果聚合和可视化
为了便于解释和将来进行审计,我们将所有结果编译成一个结构化数据集。对于每个合约,我们存储:
- •
检测到的问题和描述
- •
地址和文件名
- •
总分和风险等级
- •
受影响的函数和行号
然后,我们生成一系列可视化效果,包括:
- •
显示漏洞类型(例如 delegatecall、selfdestruct)频率的条形图
- •
高、中和低风险层的风险分布饼图
- •
显示合同中问题共存的热图
- •
按累积分数排序的前 10 名高风险合约
这些可视化提供了宏观层面的洞察力(例如,NFT 合约中风险类型的普遍性)和微观层面的可审计性(例如,特定于合约的脆弱性概况)。这些可视化揭示了 NFT 合约中的系统性漏洞模式 [29]。
四数据集描述
本节介绍用于大规模分析 NFT 智能合约的数据集的构建。我们的目标是编译一个可靠、大型且可分析的真实世界合约集合,这些合约反映了现代 NFT 生态系统的设计和部署模式。该数据集来自经过验证的以太坊智能合约,并经过严格过滤,以确保相关性(即 NFT 功能)和与静态分析工具的兼容性。
IV-A 型智能合约的来源
每个 DISL 条目提供:
- •
经过完整验证的 Solidity 源代码。
- •
编译元数据,例如:
- –
编译器版本(例如,v0.8.6+commit.11564f7e)。
- –
优化标志 (启用/禁用)。
- –
字节码哈希。
- –
- •
部署详细信息包括:
- –
Ethereum 地址。
- –
区块高度和时间戳。
- –
这些功能使 DISL 成为合同安全研究的理想、可重复的基础。
IV-B 型NFT 合约识别
为了将与 NFT 相关的合约与更广泛的数据集隔离开来,我们实施了基于以下的多阶段过滤策略:
- 1)
接口签名检测:扫描 ERC-721/1155 函数,例如 ownerOf(uint256)、balanceOf(address)、tokenURI(uint256)、safeTransferFrom(address,address,uint256)、supportsInterface(bytes4)。
- 2)
继承层次结构分析:需要扩展 知名 NFT 相关基地(ERC721、ERC1155、 Ownable、AccessControl)。
- 3)
关键词匹配和人工检查:包括 其代码或元数据引用 “NFT”、“mint”、 “tokenId”、“URI”、“burn”或市场(“OpenSea”、 “Rarible”)。
在应用这三个过滤器后,我们将 98,879 份合约缩小到大约 98,000 名候选人的 NFT 特定池。 (这个数字大于预期反映了模块化代码和代理 模式。
IV-C 型用于静态分析的合同清理
实际开发通常会生成多文件或代理拆分存储库。像 Slither 这样的静态工具需要独立的 Solidity 文件,因此我们强制执行:
- •
独立:没有外部导入或未解析的符号。
- •
编译器兼容性:Solidity >=0.4.0 和 <=0.8.19。
- •
语法正确性:编译无错误。
消毒管道包括:
- 1)
进口剥离:排除未解析的合同 本地导入。
- 2)
Pragma 筛选:删除精确版本锁 (例如 pragma solidity 0.8.17);保持灵活性 编译指示 (^0.8.0, >=0.8.0).
- 3)
语法和编译测试:在试运行模式下编译每个文件;丢弃失败。
- 4)
抽象/接口排除:删除仅 定义抽象协定或接口。
在此步骤之后,我们获得了一个干净的、可编译的数据集,其中包含 49,940 个独立的 NFT 相关合约。
IV-D 型数据集统计
表 II:最终数据集的汇总统计数据
| 财产 | 价值 |
|---|---|
| DISL 合同总数 | 98,879 |
| 检测到与 NFT 相关的候选对象 | ∼98,000 |
| 可编译和独立 | 49,940 |
| 合同格式 | 经过验证的 Solidity 源 (.sol) |
| 涵盖 Solidity 版本 | 0.4.11–0.8.19 |
| 检测到公共库 | OpenZeppelin ERC721、Ownable、SafeMath |
| 使用的分析工具 | Slither (兼容 v0.8.x) |
V结果
在通过 Slither 处理合同并应用我们的风险评分模型后,我们将合同分为三类:

图 3:按风险等级划分的 NFT 合约 表 III:风险等级分类
| 风险等级 | 标准 | 合约数量 | 百分比 (%) |
|---|---|---|---|
| 高 | 得分≥5 | 11,309 | 22.6% |
| 中等 | 得分 3–4 | 17,478 | 35.0% |
| 低 | 分数 1–2 | 21,153 | 42.4% |
洞悉见解:在我们的数据集中,近四分之一的 NFT 合约表现出多种高风险模式,表明存在系统性威胁 由合约级控制逻辑滥用构成。
V-A个体脆弱性模式的普遍性
我们分析了所有合约中关键后门启用结构的频率。最常标记的模式是:

图 4:智能合约漏洞模式
- •
使用 onlyOwner 提款
- •
不受限制的 mint() 访问
- •
使用 selfdestruct()
- •
使用 delegatecall
- •
循环中的外部调用
- •
tx.origin 授权逻辑
表 IV:漏洞模式和受影响的合约
| 漏洞模式 | 受影响的合同 |
|---|---|
| 使用 onlyOwner 提款 | 18,925 |
| 不受限制的 mint() 访问 | 14,478 |
| 使用 selfdestruct() | 6,881 |
| 使用 delegatecall | 4,724 |
| 循环中的外部调用 | 3,143 |
| tx.origin 授权逻辑 | 1,727 |
观察:虽然所有者控制的铸币和提款很常见,但自毁和 delegatecall 表示更深的风险,因为这些可以在部署后不可逆地禁用或纵合约逻辑。
V-B漏洞共现
为了检查危险模式是孤立发生的还是组合发生的,我们分析了同一合同中多个风险指标的共现情况。
- •
8,217 个合约表现出两个或多个高严重性模式(例如,selfdestruct + delegatecall)
- •
3,456 个合约同时包含三个或更多模式,提高了可利用性
- •
62 个合约显示了四个或更多同时发生的漏洞,通常涉及代理滥用或开发人员控制的析构函数
解读:具有多个重叠漏洞的合约更有可能支持地毯式拉扯 场景。
V-C高风险合约示例
为了说明真实世界合约的可利用性,我们 重点介绍 5 个匿名但具有代表性的示例 高危人群。
表 V:高风险合约示例
| 合同 ID | 得分 | 关键问题 |
|---|---|---|
| 0xC1A...82层 | 8 | selfdestruct, delegatecall, 无限制的铸币 |
| 0xB7D...091 | 7 | onlyOwner 提现 |
| 0xF25...99 天 | 6 | tx.origin、URI 覆盖、selfdestruct |
| 0xA3E...F13 系列 | 5 | 无限制燃烧,不放弃 |
| 0xE88...2C0 | 9 | 所有 5 种风险模式 |
这些合约通常遵循一种模式,其中恶意逻辑嵌入在回退或很少调用的函数中,仅激活 当外部审查最少时。有些函数命名具有欺骗性,例如 clearReserves() 而不是 selfdestruct()。
V-D 型风险评分分布
为了可视化数据集中合约风险的一般分布,我们绘制了风险评分直方图:
- •
大多数合同集中在 2-4 分左右,表明风险指标有限但存在。
- •
分数 6 之后存在重要的长尾,包括具有多个危险信号的合约。
结论:虽然许多合约表现出标准的 NFT 逻辑,缺陷最小,但显然有相当少数的合约是 设计具有集中控制或地毯拉力的潜力。
V-E主要发现
- •
后门逻辑并不罕见:超过 22% 的 NFT 合约表现出自毁等高风险模式,这表明这些不是边缘情况,而是反复出现的部署策略。
- •
所有者中心化的逻辑无处不在:近 38% 的合约以授予单方面财务控制的方式仅使用 Owner。
- •
复合漏洞放大威胁:当同时发现多种模式时,尤其是在代理或基于工厂的合同中,风险会显著增加。
六缓解策略
鉴于 NFT 智能合约中系统性地存在隐藏的后门,必须采取积极措施来防止地毯拉扯和合同级欺诈。本节概述了旨在降低恶意合约逻辑带来的风险的技术、程序和生态系统级策略。我们的建议基于通过对近 50,000 份真实合同进行静态分析而发现的漏洞。
VI-A 型以开发人员为中心的最佳实践
开发人员是抵御不安全或欺骗性智能合约的第一道防线。以下措施有助于减少无意的缺陷并消除滥用的机会:
- a)
避免危险的内置函数
- •
除非绝对必要,否则不要使用 selfdestruct。如果包含,则通过时间锁定、多重签名或不可逆逻辑禁用 [30] 来限制它。
- •
避免 delegatecall ,除非你完全控制委托合约并且它是不可变的。对于显式的受控函数调用,首选 call [31]。
- •
- b)
部署后限制所有者权限
- •
使用 renounceOwnership() 在部署后放弃特权函数 [32]。
- •
使用多重签名钱包而不是 EOA(外部拥有的帐户)所有者实施可拥有的访问模式,以降低内部地毯风险 [33]。
- •
避免使用影响核心合约逻辑的 onlyOwner 函数(例如,铸造、提现、更新 URI)。
- •
- c)
安全铸币和提现逻辑
- •
使用适当的 require() 条件(例如,公开销售标志、白名单)验证 mint() 和 withdraw() [34]。
- •
防止重新铸造现有的 tokenId 值,并通过 maxSupply 强制执行上限。
- •
通过托管或金库合约路由 ETH,而不是直接在 NFT 合约中持有资金 [35]。
- •
VI-B 型Marketplace 和 Platform Controls
NFT 市场在确保只允许安全合约上市方面发挥着重要作用。我们建议进行以下增强:
- a)
需要源代码验证和元数据审计
- •
在列出 NFT 之前,必须强制要求验证源代码和编译器设置 [36]。
- •
要求在集合启动之前放弃所有权或披露特权控制机制。
- •
- b)
将静态风险评分集成到引导管道中
- •
使用基于 Slither 的轻量级扫描或社区审查工具来分配合同风险评分 [37]。
- •
使用风险徽章(例如,低风险、中等风险、无法验证)标记集合,以提高用户意识。
- •
- c)
推动链上访问控制披露
- •
标准化描述所有者权限的元数据标签或注册表(例如,mintable:false、withdrawable:true),以实现 UI/UX 透明度 [38]。
- •
VI-C 型Auditor 和 Tooling 增强功能
安全审计员和分析工具必须不断发展,以更好地捕获语义上有效但恶意的结构:
- a)
开发特定于后门的静态规则
- •
扩展了 Slither 和 Mythril 等工具,检查自毁、无防护的 delegatecall 和无界的 mint 逻辑 [39]。
- •
标记外部不可见但可通过 fallback 或 delegatecall 调用的函数,或命名以隐藏其意图的函数(例如,adminClear() 而不是 withdraw())。
- •
- b)
启发式评分和视觉异常检测
- •
使用视觉关联工具检测异常组合(例如,ERC-721 中的自毁)[40]。
- •
将风险评分集成到 NFT 发布的 CI/CD 管道中。
- •
- c)
鼓励模糊测试和模拟
- •
将静态分析与 Echidna 等模糊测试器配对,以模拟后门的边缘情况激活 [41]。
- •
使用运行时断言来确保所有权和逻辑约束承受压力。
- •
七讨论
我们对近 50,000 个经过验证的 NFT 智能合约进行了大规模分析,揭示了对已部署的以太坊合约中隐藏后门的普遍性和结构的几个重要见解。在本节中,我们反思了这些发现的含义,评估了我们的静态分析方法的局限性,并为未来更深入的研究提出了途径。
七-A偶然漏洞与故意漏洞
从我们的结果中观察到的一个关键问题是,包含多种高风险逻辑模式的合约比例很大。虽然其中一些漏洞可能源于糟糕的编码实践或过时的标准,但许多漏洞(例如未受保护的自毁、不受限制的 mint() 和对用户提供的地址的 delegatecall )不太可能是偶然发生的。 多个漏洞利用启用功能(例如,具有 delegatecall 和仅所有者提款的合同)的高共现率表明,许多此类合同是有意设计的,以便在部署后保留开发人员的控制权。这支持了这样一个假设,即地毯式拉扯不是简单的机会主义出口,而是通过合约逻辑预先设计的 [42]。
七-B审计差距和虚假信任的问题
我们的分析加强了对当前 NFT 安全形势局限性的担忧:
- •
稀疏审计覆盖率:我们数据集中的大多数合约都没有任何公开的审计跟踪,使用户容易受到未被发现的漏洞的影响 [43]。
- •
复杂的代码结构:即使代码经过验证且开源,复杂的控制流、代理委托和误导性函数名称的存在也使普通用户甚至开发人员难以识别危险的逻辑 [44]。
- •
基于 EOA 的所有权:许多项目仍然严重依赖基于外部拥有的帐户 (EOA) 的所有权,将单方面权力授予单个部署者,这增加了所有者恶意作的风险。
这些差距说明了技术透明度并不等同于安全性,特别是当后门是合法有效的 Solidity 功能时,使用混淆的命名或结构进行部署。
七-C静态分析:强度和边界
虽然我们的方法实现了大规模的风险检测,但它也说明了在评估智能合约可利用性时纯静态分析的界限:
- •
语法驱动的限制:静态工具是语法和模式驱动的。它们无法评估运行时行为,例如仅在特定区块状态、交易序列或与其他合约交互下激活的条件逻辑 [46]。
- •
风险评分限制:我们的风险评分系统虽然能有效地突出危险信号,但无法区分故意恶意逻辑和可以忽略不计的不安全逻辑。
- •
代理模式挑战:使用代理模式或外部库的合约带来了额外的挑战,因为危险的功能可能位于单独的文件或存储槽中,而 Slither 是孤立的 [47]。
尽管存在这些限制,但我们的管道提供了有价值的一线过滤器,尤其是在完全没有审查是常态的领域。
VII-D 系列对 NFT 生态系统完整性的更广泛影响
高风险合约逻辑的广泛存在使当前 NFT 生态系统的完整性和可持续性受到质疑。主要问题包括:
- •
反应式市场:市场仍然是被动的,通常在社区强烈抗议或利用后才下架收藏 [48]。
- •
缺乏开发人员激励措施:除非平台要求,否则开发人员几乎没有动力放弃控制权或遵循最佳实践。
- •
信任侵蚀:备受瞩目的骗局和地毯式拉扯削弱了用户对 NFT 作为安全资产类别的长期信任 [44]。
这些趋势凸显了对技术和政策进行系统性改进的必要性,例如强制性部署前分析、风险标签和更严格的社区审计规范。
VII-E 系列未来的研究方向
我们的研究为进一步的工作开辟了多种途径:
- 1)
动态分析集成:未来的管道可以将静态分析与模糊测试或符号执行相结合,以捕获激活条件并模拟漏洞利用路径 [45]。
- 2)
语义标注:机器学习模型可以在标记的恶意函数与良性函数上进行训练,以识别微妙的意图驱动代码结构 [47]。
- 3)
行为相关性:跨链事件分析(例如,突然的提款模式、元数据更改)可以将标记的合约与实际的地毯式拉扯事件相关联。
- 4)
跨生态系统风险地图:将分析扩展到其他链(Polygon、BNB Chain、Avalanche)可能会揭示这些后门模式是特定于链的还是更广泛趋势的一部分。
NFT 的迅速崛起为数字所有权和资产表示带来了巨大的创新,但也为通过智能合约后门的金融滥用创造了肥沃的土壤。在这项研究中,我们对以太坊上部署的 49,940 个经过验证的 NFT 智能合约进行了迄今为止最大的静态分析之一,重点关注促进地毯拉扯攻击的隐藏逻辑模式。
通过利用 Slither 并设计自定义启发式评分系统,我们系统地识别和分类了高风险结构,例如 selfdestruct、delegatecall、不受限制的 mint() 函数和仅限所有者的提款。我们的结果显示,超过 22% 的 NFT 合约表现出多个重叠的漏洞,其中许多漏洞不太可能无意中存在。这些模式强烈暗示了一种反复出现的设计模型,其中部署者故意保留了控制和撤销权限,这与去中心化原则直接相悖。
通过我们的风险分类、共现分析和合约级案例,我们证明了恶意合约逻辑既不罕见也不孤立,它嵌入到广泛的已部署的 NFT 项目中。此外,我们的研究结果凸显了当前审计实践的不足,以及需要更强大的部署前筛查、自动风险评估和市场层面的保障措施。
虽然我们的分析是静态的,不会模拟实时可利用性,但它建立了一个可扩展且可重复的框架,用于在智能合约后门被滥用之前对其进行标记。我们希望这项工作有助于建立一个更安全、透明和负责任的 NFT 生态系统,并催化更广泛的转变,将安全性作为智能合约开发和部署的首要关注点。
八结论
NFT 的迅速崛起为数字所有权和资产表示带来了巨大的创新,但也为通过智能合约后门的金融滥用创造了肥沃的土壤。在这项研究中,我们对以太坊上部署的 49,940 个经过验证的 NFT 智能合约进行了迄今为止最大的静态分析之一,重点关注促进地毯拉扯攻击的隐藏逻辑模式 [48]。
通过利用 Slither 并设计自定义启发式评分系统,我们系统地识别和分类了高风险结构,例如 selfdestruct、delegatecall、不受限制的 mint() 函数和仅限所有者的提款[49]。我们的结果显示,超过 22% 的 NFT 合约表现出多个重叠的漏洞,其中许多漏洞不太可能无意中存在。这些模式强烈暗示了一种反复出现的设计模型,其中部署者故意保留了控制和撤回权限,这与去中心化原则直接相悖 [50]。
通过我们的风险分类、共现分析和合约级案例,我们证明了恶意合约逻辑既不罕见也不孤立,它嵌入到广泛的已部署的 NFT 项目中 [51]。此外,我们的研究结果强调了当前审计实践的不足,以及需要更强大的部署前筛查、自动风险评估和市场层面的保障措施 [52]。
虽然我们的分析是静态的,不会模拟实时可利用性,但它建立了一个可扩展且可重复的框架,用于在智能合约后门被滥用之前对其进行标记。我们希望这项工作有助于建立一个更安全、透明和负责任的 NFT 生态系统,并催化更广泛的转变,将安全性作为智能合约开发和部署的首要关注点 [53]。
1763

被折叠的 条评论
为什么被折叠?



