区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > TRX > 正文

首发 | Keep3r项目中心化风险漏洞分析

作者:

时间:

北京时间2020年11月20日, Telegram社群出现某些截图声称Keep3rLink接受了CertiK的审计服务。

同日,CertiK安全研究团队发现Keep3r项目存在中心化安全风险。

项目拥有者拥有过大权限,可将允许奖励的限制提高,从而可以向任意参与者发送任意数额的奖励且可向任意地址铸造任意数目代币。 

Keep3rV1:

● 代码地址:

https://github.com/keep3r-network/keep3r.network/blob/master/contracts/Keep3r.sol

● 部署地址:

https://etherscan.io/address/0x1cEB5cB57C4D4E2b2433641b95Dd330A33185A44

Keep3rV1Helper:

● 代码地址:

https://github.com/keep3r-network/keep3r.network/blob/master/contracts/Keep3rV1Helper.sol

https://etherscan.io/address/0x93747c4260e64507a213b4016e1d435c9928617f

如下图图一所示,Keep3r项目的Keep3rV1智能合约中定义了两个角色:governance与pendingGovernance。

1178行setGovernance()函数允许当前governance角色将pendingGovernance角色设定为任意给定地址_governance。

同时在1186行acceptGovernance()函数中,当前pendingGovernance可以将自己授权为governance角色。

A股开盘:深证区块链50指数下跌0.3%:金色财经消息,A股开盘,上证指数报3610.77点,开盘上涨0.05%,深证成指报14899.33点,开盘上涨0.01%,深证区块链50指数报3777.34点,开盘下跌0.3%。区块链板块开盘下跌0.01%,数字货币板块开盘下跌0.05%。[2021/5/28 22:51:38]

因此从逻辑上governance角色与pendingGovernance角色可以循环授权,且没有任何event事件可以提醒投资者governance角色与pendingGovernance角色的变更。

此时,项目拥有者可以随意设置拥有两个角色的地址。

图一:governance、pendingGovernance角色以及KPRH设置函数setKeep3rHelper()

一旦拥有governance角色,拥有角色的地址可以利用图一中1169行setKeep3rHelper()函数对当前KPRH指向的Keep3rHelper智能合约进行修改。

修改之后图二中1076行KPRH.getQuoteLimit()的具体实现就也极有可能被修改,接下来会返回给调用该函数的Keep3rV1合约不同的返回值。

图二:对某个用户keeper进行奖励的函数workReceipt()

项目拥有者如果考虑发动攻击,由于拥有governance角色,因此可以首先调用图三中addKPRCredit()函数。

在916行对某一个job(假设job的地址为ADDR_A, 被项目拥有者掌握)的地址给与任意数目的信用数目credit(假设给与的credit数目为CREDIT_A, 关联于ADDR_A)。

之后可以部署一个新的Keep3rHelper智能合约,然后在该智能合约中的将getQuoteLimit方法定义为返回uint类型变量的最大值。

然后项目拥有者可以使用ADDR_A的地址来调用图1中setKeep3rHelper()函数,将KPRH值指向给定的Keep3rHelper智能合约。

最终调用图二中workReceipt()函数,由于1076行代码由于KPRH.getQuoteLimit()函数被指定返回最大值的缘故必定通过。

在1077行中由于项目拥有者使用ADDR_A的地址来进行的调用,其在该智能合约中拥有的信用数目为CREDIT_A,因此amount的数目可以为略小于CREDIT_A的任意值。

当通过1077行之后,amount的奖励数目被给与keeper的地址。

最终该keeper可以调用合同内部的ERC20的转移函数,将获得的奖励转移到自己给定的地址中,完成攻击行为。

图三:对某个job增加信用数目credit的函数addKPRCredit()

除了上文讲述的中心化风险漏洞之外,图四中的mint()允许为governance角色的地址铸造任意数目的代币。

由于governance角色的地址可以通过图一中的setGovernance()函数以及acceptGovernance()进行设置。

也就代表着项目管理者只要拥有governanvce角色,即可以通过重设governance角色地址的方式,向任意地址铸造任意数目的代币。

图四:允许governance角色随意铸造代币的函数mint()

通过查询etherscan上Keep3rV1智能合约的数据,图五显示Keep3rV1拥有者地址为0x2d407ddb06311396fe14d4b49da5f0471447d45c。

同时,如图六显示,北京时间11月20日早11点governance角色的地址也为0x2d407ddb06311396fe14d4b49da5f0471447d45c。

可以得知项目拥有者拥有governance角色权限,因此有权限可以通过上述中心化漏洞进行攻击并获利。

图五:Keep3rV1智能合约拥有者等相关信息

图六:governance角色地址

区块链作为时代颠覆性的核心技术,也已在各个领域得到了广泛的应用,隐藏在收益和利好之下的安全隐患也不应被忽视。

安全审计现在已经是高质量项目的标配。

若项目没有被审计,对于用户来说,投资行为则要格外慎重;对于项目方来说,则需要准备好相关资料并寻找专业并且声誉好的审计公司进行审计。

若项目被审计过,则需尽量了解审计公司背景以及其审计报告中的各项指标。

CertiK采用形式化验证工具来证明智能合约可靠性,公司内部审计专家将利用包括形式化验证在内的多种软件测试方法,结合一流的白帽黑客团队提供专业渗透测试,从而确保项目从前端到智能合约整体的安全性。

近期,有部分项目方假借CertiK的名义发布不实审计报告。

标签:比特币VERNANNCE比特币最新价格美元EverestCoinYFiGlobal FinanceHurricane Finance

TRX热门资讯
金色DeFi日报 | 锁定资产超过10亿美元的DeFi项目已达到7个

1.DeFi总市值:183.92亿美元市值前十币种涨跌幅,金色财经制图,数据来源Coingecko 2.过去24小时去中心化交易所的交易量:5.91亿美元 交易量排名前十的DEX 数据来源:Debank 3.DeFi借贷平台借款总量:31.2亿美元? DeFi借贷平台借款占比,金色财经制图。

金色观察丨富达回应市场对比特币的“六大批评”

金色财经 区块链11月20日讯? 针对市场上对比特币各种批评,富达投资(Fidelity Investments)旗下专注于数字货币业务的子公司富达数字资产(Fidelity Digital Assets)做出了回应,他们认为随着人们对加密货币的兴趣日益浓厚,有些关键问题必须要进行澄清。

通货膨胀游戏:比特币在价值上可以与法币一较高下 但交易量不足

在流行加密货币的许多支持者中,比特币被视为一种“非常棒的货币”,比特币的有限供应量为2100万枚,以及每秒超过120 亿个哈希的算力来保证其网络安全,行业评论人士之间的共识通常倾向于比特币将成为一个全球超级货币。 比特币问世仅仅10年,其推测价值就已经是全球第11大基础货币。11月初,比特币的流通市值历史上首次超过俄罗斯卢布。

11.15午间行情:比特币结构性回补缺口收敛交点前后变盘概率激增

周六美股道琼斯工业指数主连也就是道琼斯工业指数的期货在下跌回补后延续上涨趋势,收盘大涨421点。但比特币在周五出现高点16447美金后开始回踩,就新高之后的回调我在周五午盘分析中就已给出预期。 要知道比特币在新高出现之前走出了4小时级别的大开口收敛结构,这一结构在未接近收敛中心区域之前发生了提前突破。

谷燕西:比特币的价值本质是什么?风险在哪?

最近两天比特价格上升到了18,000美元以上,而且最近一段时间都一直在上涨。显然最近市场对比特币充满了乐观情绪。这种乐观情绪也是有道理的,毕竟美国的机构投资者和个人投资者开始将更多的资金投入比特币,这自然推动了比特币的价格的上涨。但是在目前的这种市场情绪之下,还是有必要对比特币的本质以及其风险做出客观的判断,以免在情绪的支配下做出错误的投资交易决定。

DeFi估值论:凤凰涅槃的Sushi

近期Uniswap即将停止挖矿,再次启动需要约一周的时间,作为DeFi上第一的锁仓项目,锁仓市值超29亿美金,将对整个DeFi产生非常大的影响,在调研后发现Uniswap的混沌期将为竞品Sushi带来一段春天。在以前的文章中我曾经说过,对DEX并不看好,不建议大家介入,但随着DEX大额的降幅,泡沫过后反而会出现真金。