解决 ERC20 代币上的多重提取攻击
密码学与安全
2019-07-02 v1
摘要
自定义代币是部署于以太坊及其他区块链平台的去中心化应用(dapps)的组成部分。对于以太坊,ERC20 标准是一种被广泛使用的代币接口,并与许多现有 dapp、用户界面平台及流行 Web 应用(如兑换服务)互操作。一个名为“多重提取攻击”的 ERC20 安全问题于 2016 年 11 月在 GitHub 上提出并至今未关闭。该问题涉及 ERC20 定义的 approve() 方法,其初衷是让代币持有者许可其他用户与 dapp 提取限定数量的代币。当代币持有者欲将已批准代币数量从 N 调整为 M(可能增加或减少)时,安全问题随之产生。若被批准 N 代币的用户或 dapp 恶意,其可抢跑调整交易,先提取 N 代币,再使批准确认,并额外提取 M 代币。本文评估了针对此问题的 10 种拟议缓解方案,发现无一完全令人满意。我们随后提出 2 种缓解该攻击的新方案,其一完全满足标准约束,其二揭示了从 ERC20 的 approve 方法解决此问题的一般性局限。
引用
@article{arxiv.1907.00903,
title = {Resolving the Multiple Withdrawal Attack on ERC20 Tokens},
author = {Reza Rahimian and Shayan Eskandari and Jeremy Clark},
journal= {arXiv preprint arXiv:1907.00903},
year = {2019}
}
备注
11 pages, submitted to IEEE SECURITY & PRIVACY ON THE BLOCKCHAIN (IEEE S&B 2019)