访问控制漏洞
访问控制是智能合约安全性的基石,它规定了哪些账户可以执行合约中的特定函数。然而,如果访问控制实现不当,就可能导致严重的漏洞,使未经授权的用户能够操纵合约状态甚至转移资金。
常见场景
**不受限制的初始化函数:**一些合约包含了用于设置所有者的初始化函数,但没有限制该函数只能被调用一次。攻击者可以再次调用初始化函数,从而将所有权转移到自己的账户。
function initContract() public {
owner = msg.sender; // 缺乏调用限制
}
**过度授权的角色:**使用 OpenZeppelin 的 Ownable 库时,如果同时为多个角色分配了 onlyOwner 权限,就会增加攻击面。一旦攻击者获取了某个拥有 owner