本文回顾了 DeFi Security Summit、DeFi World 和 DevCon 上关于 Web3 安全的讨论,总结了 2025 年 Web3 安全的风险和机遇,包括常见的智能合约漏洞、针对开发环境的钓鱼攻击,以及未满足的不变量等。
Web3 安全 2025
在期待已久的 2024 年 DevCon 之前,最突出的事件之一是 DeFi 安全峰会。这次峰会让我了解到,在这个我们不断进行的猫鼠对抗游戏中,许多恶意行为者领先了多远,不仅通过开发加密产品,甚至仅仅通过拥有加密资产。
DeFi 安全峰会绝对是一次令人大开眼界的资讯疗法,由攻击者和防御者、黑客和建设者、价值创造者和小偷、安全学徒和巫师之间技术战斗前线的人员提供。
可悲的是,截至 2025 年第二季度,似乎没有太多关于该活动的精选文章,这就是为什么我承担起分享我自己的回顾的任务,将 DFSS、DeFi World 和 DevCon 的最重要内容汇集起来,然后将它们与最新的信息进行对比,同时结合我作为 DeFi 开发者的个人观点。
讲座的重点是不同的特定主题,但这些主题都可以归类为以下几种模式:
截至 2025 年,常见的智能合约漏洞包括访问控制缺陷、价格预言机操纵、逻辑错误、缺乏输入验证、重入攻击、未检查的外部调用、闪电贷攻击以及整数溢出/下溢。这些漏洞可能被利用来窃取资金、操纵合约行为或引起其他问题。最臭名昭著的 dApp 特有漏洞是:
ERC-4626 金库中的首次存款人通货膨胀攻击
使用 transfer()
而不是 safeTransfer()
缺少访问控制验证(任何地方)
缺少对活跃 L2 排序器的检查
rebasing 代币中的转移费用 (Fee-on-transfer)
ERC-20 代币中的舍入和精度损失问题
在 DEX 上使用现货价格而不是 TWAP
UUPSI 可升级性的错误实施
自定义金库和池中缺少滑点检查
社交面正以前所未有的方式被利用。这种攻击爆发在历史上非常突出,即使对于 web2 也是如此。
早在 11 月在曼谷举行的 DeFi 安全峰会上,在一个名为 “加强开发环境以防范后门攻击” 的研讨会上,Tincho 和 Matta 向观众讲授了如何在通过招聘编码挑战(或以任何目的与任何仓库交互)时,避免被搞砸。
阿根廷 Web3 安全研究员 Tincho 和 Matta
虚假招聘人员可以通过中毒存储库以多种方式欺骗、网络钓鱼和攻击 web3 开发人员,例如通过 lockfile 注入、恶意 GitHub Hook/操作、任意命令执行和依赖项替换,这些都可能是由于用户盲目升级软件包、混淆依赖项名称、未能正确配置 IDE 或仅仅是运行隐藏在 package.json
中的恶意脚本所致。
他们分享了此类武器化的开发工具的示例:
允许进行模仿和代码执行的 恶意 GitHub Hook
利用配置不佳的 恶意 VS Code 扩展
后门 Foundry 存储库
恶意 Node.js 依赖项(npm 抢注)
泄漏机密的仓库内的 混淆代码
武器化的 Docker 容器,等等……
在查看了过去这些攻击的实例之后,我们学习了一些强化开发环境的良好实践。
早在 DeFi 安全峰会上,一次演讲就不能再强调所有可以利用的机会:已部署智能合约中未满足的不变性和静态分析问题。
许多协议和项目已在生产环境中部署了不满足被认为是显而易见且绝对必要的不变性的合约。此外,它们中的许多都存在简单的静态分析可以发现的代码问题,更糟糕的是:其中一些问题是编译器本身告诉你要修复的警告! 🤦♂️ SMH…
无论如何,这是个好消息……(对我们来说,哈哈)
当然,这家伙听起来就像是 7 世纪的维京人或 17 世纪 80 年代的海盗,在向他们的人民讲述北海周围繁荣的沿海村庄或未经保护地在西班牙船上运输的所有财富,主要的区别在于,我们这种海盗行为更有动力比当时真正的海盗行为更有道德和守法。(👈🏻 黑帽黑客是不好的 ‘mkay!)
海盗黄金时代。白帽海盗在当时并不存在。
当然,寻找智能合约中未满足的不变性是更容易找到错误并可能作为白帽黑客将其报告给团队的绝佳策略。这也是参与 Code4rena、Sherlock 或 Immunefi 等平台上漏洞赏金或审计竞赛的一个好策略,在这些平台上,每月总共奖励数十万美元的赏金和奖金。
Ethernaut 和 Speedrun Ethereum 是学习 Solidity 的两种最广为人知的挑战。如果你仍然没有掌握这门语言,请务必查看它们!
一旦你对你的 Solidity 技能充满信心,你一定会喜欢解决 Damn Vulnerable DeFi
静态分析可以节省审计人员的时间,因为它可以节省他们检测明显的表面级漏洞的时间,以便他们可以专注于智能合约中更复杂和更难找到的漏洞。
模糊测试涉及向智能合约发送大量随机、意外或无效的输入,以触发意外行为或漏洞。基本上,这可以解释为在受控环境下暴力破解系统。
模糊测试具有很高的漏洞发现率,并且特别擅长发现边缘情况和意外的输入场景。它提高了识别手动测试错过的边缘情况的可能性。但是,编写有效且高效的模糊测试不变式和配置参数需要安全审计员付出大量努力。
运行时分析涉及实时监控和分析程序的执行,以识别漏洞。此方法检查智能合约在区块链或模拟环境中执行时的行为方式。
与模糊测试相比,运行时分析的代码覆盖有限,因为仅分析执行的路径,可能会遗漏未测试的路径。但是,它可以证明在时间和精力方面更有效率。
2016 年上海攻击事件: 是在上海 Devcon2 期间对以太坊网络的一系列攻击。那些令人痛苦的夜晚,客户端多样性的力量使以太坊网络免于停止。
DAO 黑客攻击: DAO 是以太坊最早的去中心化自治组织之一,被设计为加密社区的风险投资基金。但是,其智能合约中的重入漏洞允许攻击者在合约更新其余额之前重复取款。从 DAO 中总共提取了惊人的 360 万 ETH(当时价值 6000 万美元)。几乎占筹集资金总额的三分之一。它暴露了智能合约安全中的关键漏洞,并标志着以太坊历史上的一个转折点。
我和你学到的教训:
安全是不可商量的: 作为创始人,你必须从一开始就优先考虑安全。智能合约在设计上是不可变的。一旦部署,漏洞可能会产生不可逆转的后果。与像 Cyfrin、CertiK 或 Quantstamp 这样的顶级审计公司合作,是对你的 web3 项目寿命的投资。
采用安全编码实践: 实施像 检查-效果-交互 这样的模式来缓解像重入攻击这样的风险。这些实践应该融入到你的开发生命周期中。
为治理挑战做好准备: 危机通常会暴露治理弱点。确保你的 DAO 或协议具有明确的应急响应流程,同时保持与社区的透明度。
随着加密货币获得了更大的接受度,非法的链上活动也变得更加多样化。例如,一些非法行为者主要在链下运营,但将资金转移到链上进行洗钱。
按年份划分的被标记为“已确认参与非法活动”的地址收到的加密货币的美元价值。
新的智能合约工程趋势和伴随硬分叉而来的区块链协议功能引入了新的潜在攻击媒介,这意味着用户、开发人员和审计人员需要牢记新的安全注意事项,以避免诈骗和漏洞。
预言机漏洞可能会导致一系列严重的后果,包括财务损失、系统不稳定和敏感数据泄露。攻击者可以利用这些漏洞来操纵价格、耗尽流动性并利用业务逻辑,从而导致重大的财务损害。此外,他们可以获得未经授权的对关键用户和公司数据的访问权限以执行进一步的攻击。
一些解决方案包括:
🤪👀 理智检查器
🔌🤔 可插入的第二意见预言机
🕰🏋️♂️ TWAP [时间加权平均] 价格预言机
_了解更多:"使用 ZK-预言机增强协议安全性"_
跨链挑战: 桥通常需要 5 个步骤:
ChainA: 你向桥发送一个 tx 消息。
链下: 受信任的预言机将消息编译成受信任的根。
ChainB: 受信任的预言机将受信任的根返回给你。
链下: 你生成受信任的根的证明并将其发送到桥。
Chain B: 桥发送你的 tx + 证明并执行它。
考虑到这一点,我们获得了几个攻击媒介:
重放攻击的风险: 攻击者可以代表他自己重放你的交易。但是,由于这个原因,桥需要随 tx 一起提交 nonce。
允许任意 calldata 的不受限制的外部调用: 一些开发人员选择以 UX 换取安全性,结果适得其反。桥函数应始终使用访问控制修饰符。
ERC-20 代币小数: 一个非常常见的痛苦来源。某些链中的代币具有 6 个小数位,而其他链中的代币具有 18 个小数位。由于小数位甚至不是 ERC-20 的一部分,因此有很多种可能出错的方式。这是我亲自解决的一个问题。
Kirk Baird 在泰国曼谷诗丽吉王后国家会议中心举行的 2024 年 DeFi 安全峰会上发表了他的演讲
观看他的演讲:"桥中的常见漏洞"
在 2024 年 DeFi 安全峰会上,我们邀请了现任 Privy 安全工程师和前 Uniswap 安全主管 Andrew MacPherson 发表了一篇绝对有见地的演讲,题为 “Web3 安全令人尴尬”,他在演讲中敦促该行业采用更好的实践并超越过时的安全范例。
“我们正在辜负我们的用户,这是我们的错。作为安全人员,保护我们的用户是我们的工作,我们必须做得更好”
-- Andrew MacPherson
Andrew MacPherson 在泰国曼谷诗丽吉王后国家会议中心举行的 2024 年 DeFi 安全峰会上发表了他的演讲
正如我们所知,必须请求允许才能使用我们自己的资金进行操作的想法在加密货币中是非常糟糕的……但是,这也是耗尽人们全部资金如此容易的原因。这就是为什么到 2025 年,drainer 变得如此受欢迎。
此外,网络钓鱼非常普遍: 在 2024 年第一季度,因网络钓鱼损失了 3.14 亿美元,到年底,在 296 起事件中损失了 10 亿美元。
“这些数字令人尴尬。”
缺乏像零售银行中那样的安全保障使得黑客、网络钓鱼者和诈骗者能够以更少的麻烦成功地进行操作。就像你每天使用的 ATM 非常慢且有限一样,当你的 PIN 码泄露时,它仍然比你的钱包在你的私钥泄露时更安全。
请记住,正如我想转述 Andrew 的话——web3 中的安全性很糟糕…… 非常糟糕…… 毫无疑问…… 并且很明显,web2 黑帽已经意识到了这一点,并且 web2 黑帽黑客浪潮即将到来 web3。
做好准备:web2 黑帽行者来了……
Web3 为攻击者提供了高投资回报: 因此,web3 显然会吸引所有那些超级高技能的数字窃贼,他们越来越觉得入侵传统的 Web 平台以及本地环境和设备以获取看起来像面包屑的战利品越来越无聊和困难, 除了“低奖励”的 DeFi 抢劫案。
转向不变量驱动的测试: 单元测试很好,可以帮助提高 web3 应用程序的质量,但是,越来越多的去中心化应用程序正在转向以不变量驱动的方法来围绕智能合约进行开发。
模糊测试 + 运行时分析 + 静态分析: 关于模糊测试是否优于运行时分析,或者反之亦然,已经进行了漫长的争论,并且仍在进行中。许多安全专业人士提倡混合使用模糊测试、静态分析和符号运行时执行,以实现更全面的安全性。
构建以不变量为中心的代码库: 经典的 Hardhat 或 Scaffold-ETH 存储库已经过时了!Foundry 凭借其惊人的内置工具以及与模糊测试引擎的特殊兼容性,已成为最可靠的开发环境。
安全审计中发现的许多关键错误本可以由具有运行时分析或有针对性的模糊测试的开发人员更早地识别出来。
团队之间的协作 将开发人员和审计员对齐以避免优先级错位的重要性。将安全性更接近开发过程肯定会提高整个领域的标准。
一直以来,Web 上的项目都依赖外部审计来保护自己。但是,尽管经过多次外部审计,但像 Penpie(2700 万美元被盗)、Ronin(1200 万美元被盗)和 Euler(1.97 亿美元被盗)这样的知名项目都遭受了毁灭性的攻击。
这突出了部署前进行严格测试的必要性。
DevSecOps 是一种将安全性集成到 DevOps 管道中的新趋势,项目可以使用它来减少对外部审计的依赖。像 Olympix 这样的框架支持 DevSecOps 工作流程,以实现主动的智能合约安全性。
用于降低风险的主动安全措施和工具是像 Venn Network 这样的解决方案,它是一种去中心化的网络安全基础设施,通过充当交易防火墙来保护区块链应用程序和协议免受恶意交易和经济风险。
Venn 根据节点运营商、安全团队、协议和开发人员对生态系统安全、性能和增长的贡献来奖励他们。
Venn 网络的**数据流图
如今,大多数漏洞可以在发生之前或正在进行时被检测到,但由于自然的人为疏忽和缺乏先进的检测技术,即使在审计或监控期间,仍可能会发生其他一些漏洞。
Forta Firewall 是一种 AI 驱动的解决方案,它使用在以前的智能合约存储和余额行为上训练的机器学习模型。他们可以使用启发式技术生成自己的工作流程来主动寻找异常。
_你可以在此处了解有关 Forta 的更多信息 "AI 驱动的恶意交易检测和预防"_
倾听小组讨论总是很有见地的,因为它们让我们倾听该行业中一些最具影响力的人士的精选样本,这使我们能够了解 web3 领域中的叙事、话语、修辞和一般情绪。
截至 2025 年,最激烈的争论之一是关于终止开关。
“终止开关”是指一个命令或按钮,允许立即关闭或禁用智能合约或其中的特定功能。它本质上是一个命令或按钮,当触发时,允许停止可能导致资金被盗或其他问题的合约操作。
"终止开关"与去中心化两难
在 2024 年 DeFi World 的一个小组讨论中,我在一位小组成员提出终止开关的主题并分享了他的热门观点后,看到一个小组讨论变得激烈起来:
“在许多情况下,我们最终确实看到了对终止开关的需求……”
这释放了另一位小组成员内心的愤怒,因为那句话有点让他恼火。然后来回开始了,并且在亲终止开关方面的一些有效观点之后,去中心化的捍卫者通过声明结束了这个话题:
“即使终止开关可以挽救用户的资金,我们都应该努力遵守加密的原则,并避免将它们包含在我们的 dApp 中,我的意思是:如果我们都以去中心化的精神行事,我们将在某个时候达到一切都将按预期运行的现实。”
…
对吧?……
在发生安全漏洞时保护用户和资源将是大多数协议所有者和管理员压倒一切的明显动机,对吗?……
对吧?……
好吧,在这种情况下,加密和 web3 中自由主义者启发的教条显然对人群中的理想主义者来说更重要,但许多 web3 专业人士不这么认为。
- 原文链接: mirror.xyz/0x1aA450fcF88...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!