NFT 系统是由区块链、存储和网络应用集合而成的技术,其安全保障具有一定的挑战性,每一个组成部分都有可能成为安全的短板,致使整个系统受到攻击。本文采用 STRIDE 方法进行威胁建模,从仿冒(Spooling)、篡改(Tampering)、抵赖(Repudiation)、信息泄露(Information Disclosure)、拒绝服务(Dos)和权限提升(Elevation of privilege)等方面,全方位评估 NFT 系统所存在的风险可能。
-
仿冒:仿冒与真实性相对应,是一种在系统中冒充另一个人或物的能力。当用户铸造或者交易 NFT 时,恶意攻击者可能利用认证漏洞或者窃取用户私钥来非法获得 NFT 的所有权。建议对 NFT 智能合约进行正式验证,并使用冷钱包与线上数据隔离,防止私钥泄露。
-
篡改:篡改与完整性相对应,是指对 NFT 数据进行恶意修改。区块链是一个强大的分布式账本,其使用的哈希加密算法是具有原像抗性和次原像抗性,如果 NFT 的元数据存储在链上,那么交易一旦确认,NFT 的元数据和所有权是不能被恶意篡改的。但如果是存储在链下的 NFT 元数据,以及存储在链下的媒体数据,这些数据是有可能被操纵的。建议使用去中心化的分散式云存储系统,以保障数据的安全可靠性。
-
抵赖:抵赖与不可拒绝性相对应,是指 NFT 创作者或者所有者在交易信息通过链上确认后,无法拒绝或者撤回。这一流程的安全性由区块链分布式账本的特性和签名的不可伪造性进行保证,但其中涉及到的哈希值有可能被恶意攻击者窃取或者替换。建议使用多签名验证的智能合约,可以规避掉部分风险。
-
信息泄露:信息泄露与保密性相对应,是指 NFT 的相关信息泄露给未经授权的用户。由于在 NFT 系统中,智能合约的状态信息和交易指令代码都是完全透明的,任何人都可以公开访问,这种情况下存在多种信息泄露风险。即使只获取到 NFT 的哈希值,恶意攻击者就可以利用哈希值与交易信息的关联性作恶。建议 NFT 创作者使用保护隐私的智能合约来替代普通的智能合约,以保护隐私。
-
拒绝服务:拒绝服务与可用性相对应,是指恶意攻击者攻击 dApp 或者链下存储的原始数据,导致其对 NFT 系统拒绝服务。得益于区块链的高可用性,用户可以随时调用自己所需要的信息,不用担心链上系统拒绝服务的情况。但由于链上有限的空间和通讯压力,部分 NFT 的功能需要依赖链下系统来实现,比如元数据和媒体数据的存储,中心化的网络应用和存储系统仍有遭受传统 DoS 攻击的风险,进而拒绝对 NFT 系统进行服务。建议使用新的混合区块链架构,或者去中心化的分散式云存储系统。
-
权限提升:权限提升与授权性相对应,是指攻击者通过利用智能合约的漏洞获取 NFT 相关权限,或者通过攻击 NFT 链下相关系统获取非法权限。NFT 的授权完全由智能合约进行管理,设计不良的智能合约会存在授权方面的风险,同时存储在链下的 NFT 元数据或者媒体数据,也有可能对权限造成影响的风险。比如,篡改或者删除存储在链下的元数据或者媒体数据,将使 NFT 的所有权失去意义。建议创作者在铸造 NFT 时使用成熟完备的智能合约,在不考虑成本的情况下将数据全部存在链上,或者使用更可靠的去中心化分散式云存储系统降低成本。