专栏名称: 3072
威胁狩猎,漏洞挖掘
目录
相关文章推荐
今天看啥  ›  专栏  ›  3072

智能合约漏洞入门(8)- 私有数据泄露

3072  · 公众号  ·  · 2024-07-04 10:57
    

文章预览

描述: Solidity 将合约中定义的变量存储在槽位中。每个槽位可以容纳最多32字节或256位。考虑到所有链上存储的数据,无论是公开还是私有的,都可以被读取,因此可以通过预测私有数据所在的内存槽位来从 Vault 合约中读取私有数据。 如果 Vault 合约在生产环境中被使用,攻击者可以采用类似的技术来访问敏感信息,例如用户密码。 缓解措施: 避免在链上存储敏感数据。 Vault 合约: contract Vault {      // slot 0     uint256 private password;      constructor (uint256 _password) {         password = _password;          // 定义一个 User 类型的内存变量,初始化 id 为 0,password 为 _password 的 bytes32 形式         User memory user = User({ id :  0 ,  password : bytes32(_password)});         users.push(user);         idToUser[ 0 ] = user;     }     struct ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览