链上对抗-公链安全

  • A+
所属分类:安全闲碎

节点程序安全

链上对抗-公链安全

节点运维安全

链上对抗-公链安全

公链安全切入

链上对抗-公链安全

1.公链代码,通读源码

2.用户可控制的可输入输出的位置

3.危险函数方法的调用

4.各种功能模块代码

5.各种骚姿势

用户可控制的可输入输出的位置
1.RPC接口模块
通常是HTTP RPC,传统安全的接口测试思路+白盒测试


链上对抗-公链安全

2.P2P通信模块
通常情况下区块链同步的数据均是走P2P


链上对抗-公链安全

3.节点配置模块
  • 以太坊黑色情人节

  • stop bitcoin node

  • bitcoin node crash

  1. 智能合约模块

以太坊黑色情人节事件

1.节点默认开放在0.0.0.0,在配置开放地址的时候,需要指定 -rpcaddr  <指定访问的ip白名单地址>

2.私钥与服务器分离

3.设置RPC接口方法的调用白名单

UnlockAccount
  • 私钥在内存中保存的时间,默认是300秒

  • 如果设置为0,则表示永久留存在内存,直至geth/parity退出

用户在带私钥的节点中进行解锁钱包操作,准备转账

personal.unlockAccount("0xd5bAA94e09C4a1C6613A35c485604F507b368517")unlock account 0xd5bAA94e09C4a1C6613A35c485604F507b368517passphrase:true

eth_sendTransaction

在地址unlock account后攻击者远程调用以太坊RPC API,进行转账操作

1.nonce 的递增从0开始每一笔交易加1

2.nonce和unlockaccount只和当前钱包有关

3.nonce过大时,只需等待小于这个过大nonce的所有nonce都使用完即可

4.节点程序(geth/parity)重启会重置unlockaccount时间

stop bitcoin node

1.以为私钥和节点分离就足够安全,实际上还可以拒绝服务(DOS)

2.curl --data-binary

'{"jsonrpc":"1.0","id":"curltext","method":"stop","params":[]}' -H'content-type:text/plain;'http://user:[email protected]:85/

节点配置安全

1.前面加一层nginx反向代理

2.http替换成https

3.ip替换成域名

4.用户名密码隐藏

5.白名单api接口

bitcoin node crash

  • bitcoin:默认情况下没有对rpc请求的数据的大小和深度进行限制,可以通过发送超大深度的数据包,令节点dos,需要指定-m =< 指定内存大小 > (-m = 100m)

  • poc:'{"slowmist":'+''{"slowmist":'* 0xffff + '""}' +}'* 0xffff

危险函数调用

链上对抗-公链安全

各种功能模块代码

  • https://github.com/bitcoin/bips

  • https://eips.ethereum.org/all


            文章相关内容来自于SlowMist Team

链上对抗-公链安全


本文始发于微信公众号(IDLab):链上对抗-公链安全

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: