庞氏骗局
- 庞氏骗局的发起人可以保持匿名,因为创建合约和从合约中取款不需要透露发起人的身份;
- 由于智能合约是“不可更改”和“不可阻挡的”,因此任何中央当局(特别是任何法院)都无法终止该计划的执行,或恢复其效力以退还受害者。这对于运行在无权限区块链上的智能合约尤其如此,这些区块链由对等节点网络控制;
- 由于智能合约的守则是公开的、不可更改的,而且其执行是自动执行的,投资者可能会产生虚假的诚信感。这可能导致投资者相信,所有者不能利用他们的资金,该计划将永远运行,他们有公平的概率获得所宣布的利益。
- 检测方法
可用信息:字节码、源代码(部分开源)、项目文档信息(注释、网站广告等)、交易序列(野外的庞氏骗局)
- 字节码数据结构,是否存在层级式的结构
- 字节码中操作码序列特征匹配,静态匹配、符号执行或 AI 特征分析
- 源代码手动分析
- 项目文档广告信息提取,是否存在夸张的高回报宣传
- 交易序列,是否存在新投资者向合约汇款时,所有人都获利,且有层级关系
蜜罐技术
试图通过部署包含隐藏陷阱的看似脆弱的合约来引诱受害者对它们实施攻击(通常需要启动成本),从而从中获利。
- 检测方法
可用信息:源代码、编译器版本、字节码、创建人
- 源代码字符串模式匹配
- 字节码中操作码序列作为特征
- 对于指定版本的编译器检查是否有对应版本的bug
- 蜜罐通常被批量部署,部署了蜜罐的地址还可能继续部署
- 大量蜜罐代码很短,且内容重复度较高,可以进行相似度匹配
隐藏后门
- 某些参与者(通常是创建者)权限过高,容易作恶,这也容易引发rug pull,即项目方跑路
- 铸币功能(Mint)——这个功能允许铸造更多的代币,从而增加了供应量,并可能允许铸币者在市场上卖出这些代币。这是最常见的导致相关代币价格崩溃的情况。检查谁是 mint 功能的所有者是很重要的: 如果所有者是 dev(开发者),这显然是一个危险信号; 如果 minter 是一个基于数量/价格的智能合约,这就是去中心化的,不太可能是一个骗局
- 白名单功能(Whitelist)——这个参数只有在项目进行随机预售(persale)时才会出现,功能是要求白名单的地址才可以参与购买,以确保没有超额认购。如果项目没有预售,并且在合约中仍然有这个功能,那么它可能被用来使得任何不在白名单上的地址无法出售。也就是说,你可以买,但不能卖。
- 冻结功能( Freeze )——顾名思义,这个功能可以在任何时候冻结资产交易。虽然简单,但它可以很明显地阻止人们出售资金池中的代币,锁定以太和原生代币直到解冻。
- 手续费(fee)——交易过程中会收取预期之外的手续费
- 鲸鱼(whale)——一个地址拥有过多的代币
- 检测方法
可用信息:字节码、交易序列,通常不开源而是满足ERC20或ERC721标准然后直接上到交易所
- 代币行为不一致ERC20、ERC721等,可以通过fuzz、符号执行、历史交易重放进行
- 合约特定数据结构:白名单、冻结开关
- 通过交易所尝试买卖,分析历史交易序列,https://honeypot.is/
本次组会内容下载链接