严重getToken函数随意印币漏洞 :任何人可给自己的账号虚增余额

在最近一次漏洞监控扫描中,安比(SECBIT)实验室风险监控平台发出预警,AMORCOIN (AMR) Token 合约存在致命漏洞,任何人都可以随意增加其账户上的 Token 余额。

合约地址:0x14fb4c93fe461ec3f9f22b61ab7030f258867969

安比(SECBIT)实验室小伙伴分析合约源码后发现,该合约中存在一个函数 getToken(),该函数的作用是给调用者的账户余额增加数量为 value 的 Token,value 值由调用者传入。通常合约中增发 Token 的函数仅 owner 可以调用,但是不幸的是,该合约中 getToken() 函数并未设置调用权限,并且该方法未标明可见性,默认为 public,也就是说,任何人都可以通过调用这个函数来任意增加自己账户上的 Token。

另外,通过这个函数增发 Token 后并没有修改 totalSupply 的值,间接导致了所有账户余额总和与合约标明的总量不一致,就是说totalSupply 的值并非 Token 的真实总量。

目前该项目处于公募阶段。根据 etherscan 显示,AMORCOIN (AMR) Token 交易量总计 306 笔,其最近一次交易在不到一天前,为交易较为活跃的合约。

安比(SECBIT)实验室已于第一时间向项目方发出预警提示。据悉,派盾(PeckShield)团队也独立发现了该问题。另外安比(SECBIT)实验室风险监控平台显示,存在同样问题的合约还有两个。

地址 合约名称 交易量
0x712c290551ee48f6b3ccc318bd63989c5c37ead4 TokenCoinExchanger 2
0x8788fab9cd91f901be257afeb23e31b873e3849d MarketCoin 1

该问题已收录至智能合约风险列表, 该列表由安比(SECBIT)实验室发起共建并持续维护的 Token 合约问题列表,我们将不间断更新问题 Token 合约信息。

https://github.com/sec-bit/awesome-buggy-erc20-tokens

安比(SECBIT)实验室提醒项目方应采取措施,及时做好补救工作。我们同时也请普通持币用户保持警惕。安比(SECBIT)实验室再次呼吁,项目方发行 Token 一定要慎之又慎,遵守智能合约安全开发规范,引入安全审计流程,必要的时候采用形式化验证 手段,确保万无一失。

智能合约形式化验证示例:https://github.com/sec-bit/tokenlibs-with-proofs

参考文献

[1] 智能合约风险列表(awesome-buggy-erc20-tokens) https://github.com/sec-bit/awesome-buggy-erc20-tokens

[2] 安⽐(SECBIT)实验室携⼿路印(Loopring)共同发布智能合约风险列表 https://mp.weixin.qq.com/s/XbXlrmt0fi9IgxicmdAF0w

[3] 构造形式化证明,解决智能合约安全问题——你的合约亟待证明 https://mp.weixin.qq.com/s/Dk8FAODv2SeFXmDgGaQduw

[4] tokenlibs-with-proofs https://github.com/sec-bit/tokenlibs-with-proofs

以上数据均由安比(SECBIT)实验室提供,合作交流请联系info@secbit.io。


安比(SECBIT)实验室

安比(SECBIT)实验室专注于区块链与智能合约安全问题,全方位监控智能合约安全漏洞、提供专业合约安全审计服务,在智能合约安全技术上开展全方位深入研究,致力于参与共建共识、可信、有序的区块链经济体。

安比(SECBIT)实验室创始人郭宇,中国科学技术大学博士、耶鲁大学访问学者、曾任中科大副教授。专注于形式化证明与系统软件研究领域十余年,具有丰富的金融安全产品研发经验,是国内早期关注并研究比特币与区块链技术的科研人员之一。研究专长:区块链技术、形式化验证、程序语言理论、操作系统内核、计算机病毒。