我们很高兴地宣布Solidity 恶意代码竞赛 终于回归了!
受 Underhanded C 竞赛 和 2017 年由 Nick Johnson 组织的第一次 Solidity 恶意代码竞赛 的启发,我们决定是时候进行一次急需的复兴了。
本次竞赛的目标是编写看似无害的 Solidity 代码,这些代码伪装成清晰直观的,但实际上包含恶意行为或后门。
通过举办这样的竞赛,我们的目标是
- 提高对智能合约安全的认识。
- 发现语言设计缺陷。
- 测试最近引入的语言特性和限制。
- 突出智能合约开发中的反模式。
- 建立新的安全智能合约开发最佳实践。
主题 🚪🔑
今年的主题是合约的可升级性,或者更具体地说,升级机制。
为了修复智能合约中的错误,通常需要执行升级。升级的问题在于,没有可行的自动机制来控制新代码是否仍然执行旧代码想要执行的操作。因此,升级机制通常设计成单个账户可以任意更改代码。
由于单个账户被授权任意更改其实现的智能合约违背了去中心化的理念,因此我们希望利用本次竞赛来寻找更合适的机制,无论是通过退出机制、拆分合约的方式还是任何其他你能想到的方法。
同时,这种机制必须存在一个不易发现的缺陷或后门,以便最终仍然有一个账户处于控制之中,即使看起来并非如此。
请注意,**缺陷应该存在于升级机制中**,而不是主合约中。因此,实际要升级的合约应该非常小,例如 ERC20 合约或简单的注册表。您不需要想出一个实际升级合约的理由。当然,围绕您的提交编写一个小故事是一个不错的选择,但不是强制性的。
竞赛详情 🧑💻
提交作品时间为 10 月 1 日至 10 月 31 日 2020 年。除评委外,任何人都可以参加(有关提交作品和参与的详细信息,请参阅 竞赛网站)。
评委将收到匿名提交的作品。今年的提交作品将由以下人员进行评估:
- Alex Beregszaszi,以太坊基金会 Solidity 联合负责人。
- Austin Williams,OpenZeppelin 的安全研究员。
- Christian Reitwiessner,以太坊基金会 Solidity 联合负责人。
- Gonçalo Sá,ConsenSys Diligence 的安全工程师。
- Stefan Beyer,Solidified 的首席审计师。
获奖者将能够从奖品池中选择他们想要的奖品。
奖品池包含
- 1 张 Devcon6 门票。
- 1 年 MythX 专业版计划。
- 1 年 MythX 开发版计划。
- 自动加入 Solidified 审计人员池并获得 Solidified 的付费审计。
- 1 年 OpenZeppelin 即将来临的安全产品的订阅。
此外,获奖者和所有合格的提交作品将获得一个定制的 NFT。
评判标准 ⚖️
在提交作品时,请考虑以下方面和属性
- **简洁性与简短性**:由于在复杂且编写不良的代码中隐藏漏洞要容易得多,因此短小精悍的提交作品将比冗长复杂的提交作品获得更高的分数。
- **合理性**:如果没有明确的理由就下降到内联汇编的代码,无论汇编级缺陷编写得多么巧妙,都会显得立即可疑。
- **原创性**:真正原创的想法将比使用已经众所周知的漏洞/后门机制获得更多分数。
提交作品 📩
**许可证**:您的提交作品的全部内容必须在开源许可证下获得许可。
**Solidity 版本**:请使用 Solidity v0.7.0 或更高版本。
提交作品时间为 2020 年 10 月 1 日开始。请在截止日期(2020 年 10 月 31 日)之前将您的提交作品发送至以下邮箱:sol_underhanded@ethereum.org。参赛作品应包含一个 ZIP 文件,其中包含一个 README 文件,描述您的提交作品及其工作原理(包括剧透),以及一个或多个 Solidity 文件。有关提交过程的详细信息,请参阅 竞赛网站。
感谢我们的支持者! 🥰
我们要感谢 ConsenSys Diligence、Solidified、OpenZeppelin 和以太坊基金会提供奖品、支持评审以及所有他们的投入,以及 Nick Johnson 于 2017 年首次发起本次竞赛!
如果您有任何疑问或遇到问题,请随时通过 sol_underhanded@ethereum.org 与我们联系或加入 Solidity Gitter 频道。
我们期待收到许多有趣的提交作品。玩得开心!