据音讯,以太坊 DApp 项目 Paid Network 遭受进犯。进犯者经过合约漏洞铸造近 1.6 亿美元的 PAID 代币,并获利 2000 ETH(约 300 万美元)。慢雾安全团队在第一时间跟进并剖析,现在将细节剖析给咱们参阅。
进犯细节剖析
以上是整个进犯进程的调用流程细节。
能够看到整个进犯进程十分的简单,进犯者经过调用代理合约中函数签名为(0x40c10f19)的这个函数,然后就完毕了整个进犯流程。由于这个函数签名未知,咱们需要查阅这个函数签名对应的函数是什么。
经过查阅这个函数签名,咱们发现这个签名对应的正是 mint 函数。也就是说,进犯者直接调用了 mint 函数后就完毕了进犯进程。那么到这儿,咱们好像能够得出一个 mint 函数未鉴权导致恣意铸币的漏洞了。经过 Etherscan 的代币转移进程剖析,好像也能佐证这个猜测。
可是,现实真是如此吗?
为了验证未鉴权恣意铸币的这个想法,咱们需要剖析合约的详细逻辑。由于 Paid Network 使用的是合约可晋级模型,所以咱们要剖析详细的逻辑合约(0xb8...9c7)。可是在 Etherscan 上查询的时分,咱们居然发现该逻辑合约没有开源。
这个时分,为了一探终究,咱们只能使用反编译对合约的逻辑进行解码了。经过 Etherscan 自带的反编译东西,能够直接对未开源合约进行反编译。在反编译后,咱们却发现了一个惊人的现实:
经过反编译,咱们不难发现,合约的 mint 函数是存在鉴权的,而这个地址,正是进犯者地址(0x187...65be)。那么为什么一个存在鉴权的函数会被盗呢?由于合约未开源,无法查看更详细的逻辑,只能根据现有的情况剖析。咱们剖析可能是地址(0x187...65be)私钥被盗,或者是其他原因,导致进犯者直接调用 mint 函数进行恣意铸币。
总结
本次进犯进程尽管简单,可是经过细节剖析后却有了惊人的发现。同时这次的进犯也再次对权限过大问题敲响了警钟。如果这次的 mint 函数给到的鉴权是一个多签名地址或是使用其他办法分散权限,那么此次进犯就不会发生。
参阅链接:
进犯买卖:
https://etherscan.io/tx/0x4bb10927ea7afc2336033574b74ebd6f73ef35ac0db1bb96229627c9d77555a0
视野开拓
第一篇 一、论劳动分工 1.劳动生产力最大的改进,以及劳动在任何地方运作或应用中所体现的技能、熟练和判断的大部分,似乎都是劳动分工的结果。 2.在享有最发达的产业和效率增进的那些国家,分工也进行得最彻底;在未开化社会中一人从事的工作,在进步社会中一般由几个人担任。 3.农业的性质与制造业不同,不容许做那么细致的劳动分工,也不容许将一种业务同领一种业务截然分开。……最富裕的国家在农业方面也像在制造业方面一样,一般都超过他们所有的邻国;但是它们普遍都以制造业的优越性而不以农业的优越性而著称。 4.这种由于劳动分工而使同一数量的人所能完成的工作数量得到巨大增长,是由于三种不同的情况:第一,由于每一个公认的熟练程度的提高;第二,由于节约了从一种工作转向另一种工作普通所丧失的时间;最后,由于发明了很多的机器,便利和简化了劳动,使一个人能干许多人的活。 5.我们只想说,使劳动得以如此便利和简化的所有那些机器的发明,最初似乎都是由于劳动分工。当人们的全部注意力集中在单独一个目标上、而不是分散在许许多多的事物上时,他们就更有可能发现比较容易和比较迅捷地达到任何目的的方法。 二、论引起劳动分工的原因 1.劳动分工提供了那么多的好处,它最初并不是由于任何人类的智慧,预见并想要得到分工能带来的普遍富裕。它是人性中某种倾向的必然结果,虽然是非常缓慢和逐渐的结果,这是一种互通有无、进行物物交换、彼此交易的倾向,它不考虑什么广泛的功利。 2.由于肯定能把自己产品的所有剩余部分(这是他自己消费不了的),去交换自己所需要的他人劳动产品的剩余部分,这就鼓励了每一个人去从事一种专门的职业,并培养和完善他所具有的从事这一职业的才能或天资。 3.成年人从事不同的职业所表现出来的非常不同的才能,在许多场合,与其说是劳动分工的原因,不如说是劳动分工的结果。 三、论劳动分工受到市场范围的限制 1.交换能力引起劳动分...-《国民财富的性质和原因的研究(下卷)》