swc 区块链常见安全问题汇总

创作人 Leo


编辑时间 Fri Jul 29,2022 at 19:47


swc 整理

SWC-100

Function Default Visibility

未设置函数权限,默认 public,导致攻击者可以任意执行代码

SWC-101

Integer Overflow and Underflow

数值计算溢出

使用 SafeMath 库解决

SWC-102

Outdated Compiler Version

使用过期 solidity 版本

SWC 103

SWC-136

Unencrypted Private Data On-Chain
https://swcregistry.io/docs/SWC-136#odd-evensol

虽然 private 数据不能够被读取,但是攻击者可以通过提交的事务 data 看到入参,从而拿到被赋值的 private 状态变量的值

解决方案:对关键数据进行加密

示例解读:

示例是一个通过组合两个玩家的随机数进行分配奖励的游戏,结果是通过两个玩家输入的值相加后进行取余 2,然后确定获胜者

漏洞程序是玩家输入的num是可以通过tx 的 data 反解,从而破坏了游戏规则,在知道一个玩家的输入后,另一个玩家就可以作弊

修复解读:

将游戏分为 3 个阶段

  1. 输入阶段 play,玩家输入的是一个 玩家地址+随机数+盐(blindingFactor) 的签名值
  2. 揭晓阶段 reveal,玩家输入实际输入的数和盐,系统校验是否能够核对上,核对上则 number 记录到状态
  3. 奖励分发

阅读:70
搜索
  • Linux 高性能网络编程库 Libevent 简介和示例 2288
  • Mac系统编译PHP7【20190929更新】 2186
  • Hadoop 高可用集群搭建 (Hadoop HA) 1852
  • Linux 常用命令 1837
  • zksync 和 layer2 1832
  • 安徽黄山游 1817
  • Windows 安装Swoole 1794
  • Hadoop 高可用YARN 配置 1750
  • 小白鼠问题 1707
  • 使用 Java+Thrift 实现异步事件处理服务 1627
简介
不定期分享软件开发经验,生活经验