推荐: 点击此处下载PANews 关注NFT日报和NFT一周售卖铸造预告,快人一布局可能有价值的NFT。
作者:Yuefei TAN, CEO of Fairyproof
NFT 是 英语 “ Non Fungible Token ” 的 简称 , 翻译过来 即 非同质化 通证。 一个 NFT 可以 被 理解 为 是 存储在 区块链上 的 一个 独一无二 的 单元 数据 [1] 。 每当 谈及 NFT 通证 , 我们 会 很 自然 地 将 其 与 常见的 ERC -20 [ 2 ] 通证 进行类比 。 但 NFT 通证 与 ERC - 20 通证 是 有 区别的 , 两者 的 区别 在于 任何 两个 NFT 通证 都 互不相同, 不可 互换 , 即 不同质 。 因此 , 与 NFT 相关的 操作 ( 比如 交易 等 ) 与 ERC -20 通证 及 其它 类 同质 数字资产 ( 如 比特币 、 以太坊 ) 的 操作 相比 有着 明显的 区别 。
近年来 , 以 NFT 为 核心 成长 出了 一个 全新 的 生态 , 这个 生态 在20 21 年 发展 尤为 迅猛。 但是 在 生态 快速 发展 的 同时, 生态中的 安全 问题 却 频繁 显现 。 当业界 审视 这些 安全 问题 时 往往 将 其 与 ERC -20 通证 生态 中的 安全 问题 进行 类比 , 但是 NFT 领域 中 出现 的 安全 问题 却有 自己 的 特点和 差异 。 然而 这些 特点和 差异 却 还没有 系统 地 受到 业界的 关注 和 研究。
关于 NFT 生态中 的 安全 问题 在 学术界 已经 有 学者 进行 了 大胆 地 探索 和 研究 , 比如 D. Das 、 P. Bose 、 N. Ruaro 、 C. Kruegel 和 G. Vigna 合著 的 论文 [3] 。 然而 在 实践 和 具体 执行 过程中 , 对 NFT 安全 问题 该 采用 什么 方式 检视 , 什么 流程 审查 , 什么 措施 进行 防范 以及 从 哪些 角度 进行 防范 则 缺乏 深入 的 探讨和 研究 。
F air yproo f 研究 团队 根据 自身 积累 的 专业 知识和 审计 NFT 项目中 积累 的 实践 经验 , 总结 了 一套 系统 、 全面 的 方案 , 在此 欲 与 业界 和 关注此 领域发展的 同仁 进行 探讨和 交流。
如果 一个 项目 、 应用 或服务 和 NFT 交互, 则 我们 视其为 NFT 项目 、 NFT 应用或 NFT 服务 。 如果 一个 应用 或 服务 和 NFT 交互 , 我们 则 视 这个 应用 或 服务 是 整个 NFT 生态中 的 一 员 。 所有 这些 应用和 服务 一起 就 组成了 现在 我们 见到 的 NFT 生态 系统。
在 这个 生态 系统 中, 根据 其中 每个 成员 在 技术 上 扮演 的 角色 , 我们 将其 分为 四类 : NFT 通证 部署 的 区块链 、 NFT 通证 的 实现 合约 、 实现 商业 逻辑 及 流程 的 核心 应用 、 辅助 NFT 工作 的 应用 或服务 。
对于 NFT 项目 的 审计, 这 四类 成员 都 需要 关注和 审视 。 如果 NFT 部署 的 区块链 不 能 正常 工作 , 项目 就 失去了 根本 ; 如果 NFT 通证 的 实现 合约 有 问题, 那 NFT就 无法 正常 工作 , 项目 就 失去 了 内核 ; 如果 项目的 商业 逻辑和 流程 设计 有 问题 ,那 项目 就 只 剩下 毫无生命力 的 NFT 通证 ; 如果 辅助 NFT 工作 的 应用 或 服务 不能 正常 工作 或者 项目 没有 选择 合适的 辅助 应用 或 服务 , 则 NFT 就无法 将其 潜力 充分 发挥 。
因此 这四者 的 安全和 审计 缺一不可 , 都不能 忽视 。 在 本文 接下来的 篇 章 , 我们将 对 这 四者 的 安全 及 审计 分别 展开 论述 。
1 对 区块链的 审计
对于 NFT 项目 所 部署的 区块链 , 如果 它 是 一条 比较 成熟 的 区块链 ( 比如 以太坊 ) , 则 通常 情况 下, 无需 再 对 其 进行 审计 , 这一步 可以 跳过 。 因为 成熟的 区块链 已经 在 经年累月 的 发展 和 成长 中 , 历经 各种 安全 事故的 挑战和 磨练 , 在 安全上 已经 有了 较为 可靠的 保障和 信用 。 如果 其 部署的 区块链 是 新生的 , 则 理论上 对 区块链 的 审计 是 不能 忽略的 。
对 区块链 的 审计 在 业界 已经 相对 成熟 。 此类 审计 的 方式 、 方法 、 流程 及 重点 和 难点 已经 是 包括 Fa iry proof 在内 的 区块链 安全 公司 比较 熟练 的 业务和 领域。 对 业界 和 安全 公司 来说, 这类 审计 并不 陌生 。
2 对 NFT 实现 合约 的审计
NFT 通证 的 实现 , 从 技术上 来讲 和 常见 的 ERC- 20 通证 类似, 都是 由 一个 或 多个 智能合约 组成。 但是, 由于 NFT 实现 所 基于 的 通证 标准 ( 比如 ERC-721[4] 和 ERC-1155[5] ) 和 ERC-20 同质 通证 不同 , 因此 NFT 通证 中 可能 出现的 问题 也 与 ERC -20 通证 略有 不同 。 这其中 一个 典型 的 问题 就是 NFT 的 发行 功能 在 实现 时 是否 使用了 合适 的 随机数 。 如果 使用的 随机数 不合适, 则 NFT 在 发行 时 可能 遭遇 “ 回滚 ” 攻击, 即 用户 可以 通过 不断 回滚 交易, 直到 获取 自己 偏好 的 NFT 。 因此 对 NFT 实现 合约 的 审计 也 和 对 ERC-20 合约 的 审计 略有 不同 , 其 主要 表现 在 关注点 、 重点和 难点 有所 不同 。
对此, Fa irypr oof 在 实践中 系统 地 总结了 经验 , 并 开发 一套 自动 化 的 审计 工具 , 能够 快速 定位 NFT 合约中的 风险点, 排除 潜在 风险 。
3 对 核心 商业 逻辑 应用的 审计
这里我们 所 指的 核心 商业 逻辑 应用 主要 是 指 在 一个 NFT 项目中 , 实现 商业 逻辑 的 部分 。 这部分 应用 会 和 各类 NFT 通证 交互 。
在 一个 NFT 项目中 实现 商业 逻辑的 应用 通常 可 分为 两类 :
一类 是 典型的 互联网2. 0 应用 。 它在 项目中 和 NFT的 交互 及 实现的 商业 逻辑 比较 简单 , 通常 只 涉及 一些 简单的 NFT 操作 , 比如 NFT的 发行 、 NFT的 转账 等。 近年 极为 流行的 “ PFP ” [ 6] 项目 [7][8] 就 属于 这类 。
另一类 是 包含 了 互联 网 2.0 应用 和 区块链 智能合约 的 综合 应用 。 这类 综合 应用 包含的 NFT 操作 要 复杂 得 多, 除了 简单 的 NFT 发行和 转账, 还有 NFT 通证 的 管理 、 NFT 通证 的 抵押 等 。 现在 NFT 生态 中 最 大 的 应用 比如 交易 平台 [9][10] 就是 这类。
尽管这两类 应用 在 复杂 程度 上 有区别, 但 它们 和 基于 ERC- 20 通证 的 应用 相比 都 展现 出 一些 特有 的 共性 , 这些 共性 也是 NFT 应用 的 共性 。
这些 共性 主要 表现在 : 首先 NFT 应用 涉及的 链上 操作 不如 ERC- 20 通证 应用 ( 比如 DeF i 应用 [ 11][12] ) 涉及 的 链上 操作 复杂 ; 其次 很多 NFT 应用 面向 的 用户 是 非 技术 类 人士 , 这些 用户 有些 甚至 没有 区块链 方面的 知识 , 也 不 了解 基于 区块链 的 数字货币 。
因此 为了 让 大量 非 专业 领域 的 用户 在 无需 具备 区块链 或 数字货币 知识 的 情况下 毫无 障碍 地 使用 和 参与 NFT 项目 , 很多 开发团队 会 花费 大量的 精力 和 资源 来 设计 和 优化 用户界面 , 使之 更 符合 用户 已经 在 互联网 2.0 应用中 建立 起 来 的 习惯 。 这 便 自然而然 地 使 一些 项目 在 设计和 开发的 过程中 大量 沿袭 使用 互联网 2. 0 应用 的 技术 和 流程 [ 9][13] 。 一方面 , 这 降低了 用户 的 使用 门槛 , 更 便于 新用户 进入 NFT 领域 ; 但 另一方面 , 这也 使得 这些 NFT 应用 有 过于 中心化 的 倾向 。 这种 过于 中心化 的 倾向 不仅 存在 于 应用的 技术 实现上 ,也 存在 于 商业 逻辑 和 流程 中。
这里 我们 想 特别 强调 的 是 : 在 现有 NFT 应用中 涉及 到 商业 逻辑 和 流程的 部分 可能 会 存在什么 问题 、 是否 有 某些 未知的 隐患 等 还 没有 引起 业界 尤其 是 安全 领域 从业者 的 足够 关注 和 研究 。 比如 在 目前 诸多 流行的 NFT 交易 平台 中 , KYC 还 并未 被 强制 要求, 更 谈不上 坚决 执行 , 在 这种 情况下 如何 防范 安全 事故 及 对 黑客 身份的 追踪、 定位 ; 再如 对 NFT 项目 “ 真伪 ” 的 验证 在 大多数 交易平台 上 还 只是 可选项 而非 必须 执行 项 , 在 这种 情况下 如何 防止 用户 误入 假冒 项目 ; 还有 对于 NFT 原创 团队 在 设定 及 收取 交易 分红 ( ro ya lty ) 方面 目前 各类 平台 所 采用的 流程和 方式 是否 存在 安全 上 的 漏洞 和 隐患 以及 是否 存在 欺诈 和 不公 ? .... ..
对 上述 问题 的 展开和 研究 目前 都 鲜有 看到 业界 提及 , 更 遑论 进行 深入的 探讨 。
对此 Fairyproof 一直 在 进行 跟踪 研究 和 探索 , 并在 这些 方面 积累和 总结 了 经验 , 并 研发 了 一套 综合性 的 框架 和 系统 , 能 给 NFT 领域 的 从业者 提出 建设性的 意见 及 切实可行 的 方案。
4 对辅助服务或应用的审计
这里所 提到 的 辅助 服务 或 应用 是指 有 助于 NFT 充分 发挥 其 功能 或 特色的 服务 或 应用 。 典型的 如 为 NFT 存储 元数据 ( metadata ) [14] 的 服务或应用 .
兴起 于 2 02 1 年 的 PFP 项目 就 利用了 辅助 服务或 应用 。 这类 典型的 NFT 项目 往往 是 发行 一定 恒定 数量的 NFT , 每个 NFT 都有 一个 独一无二的 图片 , 每个 图片 包含 各种 特征 的 组合 。 对 每个 NFT 来说, 这个 图片 就是 它 的 元数据 。
这些 图片 往往 为了 吸引 用户 买入 和 持有 都 经过 精心 的 设计 而 独具特色 , 因此 图片 的 保存和 显示 对 这类 NFT 项目 来说 就 显得 非常 重要 。 很多 项目 在设计 时 都 考虑了 使用 各种 方案 使 图片 能够 尽量 永久 保存 。 因此 什么样 的服务 或 应用 能够 提供 可靠 、 稳妥 的 永久 存储 就是 这些 项目方 关注 的 重点 。
目前在 业界 常 见的 存储 方案 主要有 去中心化的 存储 应用 和 中心化的 存储 应用。 前者 典型的 有 IPFS[15] 、 Arweave[16] 等 。 后者 主要有 亚马逊 云 [17] 等。
但是这些 存储 方案 并非 每个 都能 现成 地 提供 永久存储 , 有些 可以 提供 永久 存储 但 费用 较高, 有些 只能提供 按时 收费的 临时 存储 , 各有 优缺点 。 因此 如何 综合 考虑 使用 一种 或 多种 方案 进行 组合 , 构建 一套 能够 永久 存储 的 服务 就是 项目 开发者 必须 考虑 的 问题 。
但是 当 项目方 考虑 使用 这些 方案时, 这些 方案 本身 可能 存在什么 问题 ? 在 组合 使用这些 方案 时 可能 存在 哪些 安全上 的 隐患 或者 潜在 风险 ? 如何 规避和 防范 这些 隐患 或 潜在 风险 ? 有关 这些 问题 的 讨论和 研究 至今 所见 相当 有限 。
Fai rypro of 自 成立 伊始 便 开始 关注 这 个 领域 的 研究 和 探索 , 尤其 是 在 安全 实践 中 可能 会 存在 什么 难点 和 重点 等 。 我们 基于 自身 的 积累和 实践, 探索 、 研发了 一套 系统 的 方案 用来 评价和 审查 NFT 辅助 服务 或 应用 , 并 研发 、 部署 了 一套 全面 的 流程 和 系统 以 检视 这些 辅助 服务 或 应用 在 各类 实践 方案 中 可能 存在的 安全 隐患 及 潜在风险。
对 NFT 项目 的 审计 不单单是 对 NFT 智能合约的 审计 , 它 是 一 个 系统 工程 、 是一套 综合 流程 , 需要从 生态 的 角度 全面 审视 NFT 本身 、 其 核心业务逻辑 及 所 涉及 的 周边 应用 、 基础设施 和 辅助服务 。
Fairyproof 一直 并将 持续 、 密切 地 关注 NFT 生态 的 发展 , 持之以恒 地 深入 研究 这个 领域的 安全 问题 , 在 已经 建立的 成熟 框架 上 继续 扩展 和 探索 领域 内 最新的 发展 , 并 继续 和 同业 分享 我们 对 前沿 问题的 思考和 前瞻 判断 。
参考文献:
[1] Non-fungible token, https://en.wikipedia.org/wiki/Non-fungible_token, Feb 22, 2022
[2] ERC-20 Token Standard, https://ethereum.org/en/developers/docs/standards/tokens/erc-20/
[3] Understanding Security Issues in the NFT Ecosystem , https://arxiv.org/abs/2111.08893, Jan 19, 2022
[4] ERC-721 Non-fungible Token Standard,
https://ethereum.org/en/developers/docs/standards/tokens/erc-721/
[5] EIP-1155: Multi Token Standard, https://eips.ethereum.org/EIPS/eip-1155
[6] A Beginner ’ s Guide to Understanding PFP NFTs,
https://medium.com/geekculture/a-beginners-guide-to-understanding-pfp-nfts-8714e9d30d0b, August 29, 2021
[7] CryptoPunks, https://www.larvalabs.com/cryptopunks
[8] BAYC, https://boredapeyachtclub.com/#/
[9] OpenSea, https://opensea.io/
[10] Rarible, https://rarible.com/
[11] Curve, https://curve.fi/
[12] MakerDAO, https://makerdao.com/
[13] Nifty Gateway, https://niftygateway.com/
[14] metadata, https://csrc.nist.gov/glossary/term/metadata
[15] IPFS, https://ipfs.io/
[16] Arweave, https://www.arweave.org/
[17] AWS, https://aws.amazon.com/
About the author:
Yuefei TAN, CEO of Fairyproof
About Fairyproof:
Fairyproof Tech is a blockchain security company, established in Jan 2021.
It was founded by a team with rich experience in smart contract programming and network security. The team members participated in initiating a number of draft standards in the Ethereum field, including ERC-1646, ERC-2569, ERC-2794, and EIP-3712, of which ERC-2569 was officially accepted by the Ethereum team.
The team participated in the launch and development of various Ethereum projects, including blockchain platforms, DAO organizations, on-chain data storage, decentralized exchanges, and conducted security audits of multiple projects which have been deployed on Ethereum. Based on its strong R&D capability and deep understanding of smart contract security, Fairyproof has developed comprehensive vulnerability tracking and security systems and tools.
Fairyproof Tech serves and works closely with customers by providing systematic solutions covering both “code vulnerabilities” and “logic vulnerabilities” and aims to provide customers with the best and most professional services.
