freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

DVP黑客松大赛韩国站Public Chain题目Writeup
2019-10-28 17:47:48

Writeup 1: Remote DoS

本文由PeckShield漏洞研究总监Edward Lo撰写


这是公链项目的第一题,参赛者需要找到漏洞并进行攻击造成Remote DoS。服务器上跑的是经过修改的geth结点,而问题点就在EVM中。

首先来看看EVM正常执行流程:

1.png


EVM在执行合约时,会一步一步提取其中的OPCode,并做相对应的检查:

  • 1. OPCode需要的传参是否已放到栈(stack)上,是否有足够空间能放回传值;

  • 2. EVM目前是否在readonly模式(例如以static_call方式呼叫),若是则需符合规则,不能对链上状态有任何改动(例如转帐);

    2.png

    3. 计算OPCode需要的内存大小,并根据目前的内存情况决定如何收取gas费用并扩容内存。

接下来我们以OPCode mstore8为例,来看看到底怎麽计算。

3.png

如上所示,p是offset,v是想写入的内容

4.png

EVM会调用memoryMStore8计算回传所需要的内存大小,接着调用gasMStore8来计算所需的gas费用

5.png


这道题目就是将memoryMStore8注解掉,如此一来会造成两个问题:

  • 1. EVM不会计算收取gas,因为memorySize永远为0

  • 2. 内存不会扩容,攻击者可以在任意offset写入一个可控byte内容

 如此一来,只需布置会调用mstore8的恶意合约便可以进行攻击

6.png


Writeup 2: RCE

基于上一道题目,我们可以在任意offset写一个byte,理论上便能透过它执行RCE。此题的技术难度跟水平要求较高,攻击者必须结合漏洞并布置巧妙构思过的恶意合约,将shellcode写入远端节点来完成RCE


# 安全众测 # 区块链 # 白帽黑客 # DVP # 公链安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者