SWC智能合约漏洞库

SWC-122/缺乏适当的签名验证

智能合约系统的一种常见模式是允许用户在链下签名消息,而不是直接要求用户进行链上交易, 因为这提供了灵活性和更高的可传递性。处理签名消息的智能合约系统必须实施自己的逻辑, 才能在进一步处理签名消息之前从签名消息中恢复真实性。此类系统的局限性在于,智能合约 无法与它们直接交互,因为它们无法签署消息。一些签名验证实现尝试通过基于不具有此限制 的其他方法来假定签名消息的有效性来解决此问题。这种方法的一个例子是依靠msg.sender并 假设如果已签名的消息源自发件人地址,那么它也已由发件人地址创建。这可能导致漏洞,尤其 是在代理可以用于中继交易的情况下。

CWE漏洞分类

CWE-345:数据真实性验证不足

整改方案

不建议使用不需要ecrecover()进行正确签名验证的备用验证方案。

参考文献

示例合约