在最近审查了一些高度复杂的漏洞(yETH、Balancer、KyberSwap Elastic)后,我有一些想法: 虽然实际的漏洞机制,即盗取资金的步骤,非常复杂,但实际的潜在漏洞往往相对简单:舍入错误、精度损失、约束不够等。 在我看来,这些漏洞都简单到大多数经验丰富的研究人员至少可以将其识别为低级/信息性发现,但只有精英研究人员才能将其构造成关键漏洞。 我从中得到的启示是,为了更好地保护协议,我们需要更清晰地理解系统的边界,以便能够清楚地定义和执行约束。 在漏洞悬赏和竞争审计的模式下,我们优先考虑实际的漏洞,通过一种进攻性的安全方法。如此之多,以至于我们可能无法保护系统免受已知和未知漏洞的攻击,通过一种防御性的安全方法。 虽然进攻性的方法令人兴奋且光鲜,但在我看来,它的限制性更强。如果你发现了一个关键漏洞,这并不能告诉你是否已经保护了系统免受其他漏洞的影响,但如果你添加了一个经过深思熟虑的约束,可能会防止整个类别的漏洞。