Cosmos gaia-9001 漏洞

gaia version 0.26.1-rc1

发现bug的源码文件是 github.com/cosmos/cosmos-sdk/x/auth/ante.go,下面是关键部分

image.png

通过构造一定的条件,使程序只执行步骤一和步骤二,忽略步骤三,这样,就可以凭空产生代币。这里产生的代币是会按照Power比例分给所有validators,另外,打块的validator会多分一些。

如果想利用上面这个漏洞,我们必须有一个validator节点,同时需要构造一种交易,符合下面两个条件

  1. 交易签名是错误的
  2. 交易消费(fee)大于0(等于0的话,不产生任何影响;小于零的话,会产生另外一个问题,和本次hack无关)

要想满足这两个条件,我们就需要修改客户端gaiacli代码和服务端gaiad代码

image.png

重新编译之后,使用gaiad-hack重新启动区块链程序,然后使用gaiacli-hack发送恶意交易

  /home/ec2-user/cosmos-sre/bin/hack/gaiacli-hack tx send \
  --from wall-e \
  --to cosmos1uer4my4l3v7qlwz75qr5tzdu8qk5mgftypyzff \
  --amount ${NUM}steak \
  --fee 300steak \
  --sequence $SEQ \
  --async \
  --chain-id gaia-9001

上面这条命令,循环执行500次,就可以发行150000个代币了。

相关文档:https://www.jianshu.com/p/d672d035b2f7

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容