PayPal 稳定币 PYUSD 具有钱包冻结和擦除功能
对刚刚推出的 PayPal 稳定币 PYUSD 智能合约的分析揭示了所谓的“中心化攻击向量”的存在。
智能合约安全审计师 Pashov 在最近的 Twitter帖子中指出,PYUSD 的合约具有“资产保护”作用。它可以在两次交易中擦除您的余额:首先是“冻结”,然后是“擦除FrozenAddress”。
这被视为攻击媒介的原因是,这种功能会增加潜在攻击者在设法访问它时可能造成的损害。
Pashov 指出,PYUSD 有六位小数,并使用 Solidity 编译器版本 0.4.24。更有趣的是,这个智能合约并没有“按照标准期望的那样实现EIP-712 ”。
什么是 EIP-712
以太坊改进提案 712 或 EIP-712 是 2017 年的一项标准,允许 MetaMask 等以太坊钱包在签名提示中显示结构化且可读的数据,而不仅仅是十六进制字符串。这使得用户可以更轻松地验证他们正在签名的实际数据,从而提高安全性和可用性。
为了实现 EIP-712,开发人员需要定义数据结构并创建域分隔符以防止 dapp 之间的签名冲突。他们还需要为其 dapp 编写签名代码以与用户的钱包交互,编写合约代码来散列数据结构,并使用 ecrecover 验证链上签名。总体而言,EIP-712 可以让用户更好地了解他们正在签名的内容并防止网络钓鱼攻击。
Ecrecover 是 Solidity 中的 EVM 预编译,允许合约验证链下数据的签名。它采用哈希值和由 v、r 和 s 组成的椭圆曲线签名,并返回用于签署数据的以太坊地址,验证签名是否有效。这允许构建元交易和许可令牌等用例。
签名数据有不同的标准,例如 eth_sign、personal_sign 和 EIP-712。EIP-712 是合约接受签名数据的推荐方式,因为它可以防止误用和重放攻击。它涉及对特定合约数据(例如链 ID)以及消息数据本身进行哈希处理。OpenZeppelin 合约提供 ecrecover 和 EIP-712 签名的安全实现。总体而言,ecrecover 使合约能够以加密方式验证来自链下来源的签名数据。
对于那些希望资产完全由所有者控制的加密货币领域的人来说,冻结和清除余额功能可能会感到惊讶。
尽管如此,基于智能合约的代币已经允许此类功能有一段时间了,这些功能是中心化稳定币的典型功能。
“新闻快讯:USDT 和 USDC 也有类似的攻击向量。我以为这个可能会有所不同,但事实并非如此,”帕绍夫评论道。#PayPal #稳定币