首页分类文章区块链智能合约代码没错,钱却没了:2026年9月,8篇论文揭开智能合约的赛博攻防战

代码没错,钱却没了:2026年9月,8篇论文揭开智能合约的赛博攻防战

区块链 · 智能合约2026-09-161次浏览0 个评论

设想一个场景:你往一个智能合约里存了资产,合约代码在链上公开,审计公司出过报告,区块链浏览器上「已验证」的勾一挂,一切看起来天衣无缝。可就在你点下「转账」的那一毫秒,一个藏得很深的漏洞,把你刚存入的资产转进了别人的钱包。

这不是恐怖电影的开头,而是 2026 年链上资产被盗新闻的日常版本。问题出在一个残酷的事实上:智能合约一经部署就无法修改,代码即法律,法律写错了,就只能认栽。

好在防守方也在升级。2026 年 9 月,arXiv 上密集出现了一批关于「智能合约安全自动化」的论文——有教机器更聪明地找漏洞的,有教机器更快识别攻击的,也有反过来提醒我们「机器也会被人骗」的。攻与防两端,几乎同时进入了「机器对机器」的新阶段。

这篇文章用 2026 年 9 月最新提交的 8 篇论文,带你全景看清这场发生在链上的赛博攻防战:进攻方学会了什么,防守方学会了什么,以及——两边手里的工具,究竟靠不靠谱。

一、为什么合约安全这么难?

先理解为什么这个问题这么值钱,又这么难。

智能合约本质上是跑在区块链上的一段程序,你可以把它想成一台「自动售货机」:你投币(发一笔交易),它执行逻辑(代码),吐出结果(转账、改状态)。它的特殊之处有三条:

  • 公开:代码挂在链上,谁都能看,等于把你的保险柜图纸贴在大街上。
  • 不可改:一旦部署,代码再也不能变。发现 Bug 只能「认账」或者启动复杂的迁移流程。
  • 管钱:2026 年的链上生态里,智能合约管理的数字资产以万亿美元计(EchoFuzz 论文的原话是 trillion-dollar digital assets,见 arXiv:2609.14475)。

链条上的第三方系统也全都依赖它:桥(bridge)靠它搬运资产、钱包靠它记账、区块浏览器靠它的日志显示「发生了什么」。任何一个环节出错,都可能被利用来骗钱。

那漏洞到底多不多?2026 年 9 月,两位研究者发布了一个值得所有人注意的数据集:他们把美国国家漏洞数据库(CVE,Common Vulnerabilities and Exposures)里所有指向以太坊智能合约的记录整理成了可复用的数据集,命名为 CVE-Smart-Contracts(arXiv:2609.01186)。里面是 491 条指向已部署合约的漏洞记录,26 条指向项目(主要是库)、45 条缺少有效构件、还有 6 条被判定为明显的误报(refuted)。每条记录都带源码、运行时字节码、三套漏洞分类标签和函数级定位——这是目前最完整的「合约漏洞家底」之一。

这张表,是理解这场攻防战的起点——「漏洞」不是抽象概念,是有据可查、可以统计、可以批量分析的现实。

漏洞类型一句话解释常见后果
重入(Reentrancy)合约在被「收款」时,对方又趁机回调了一次反复取款,余额被掏空
整数溢出(Overflow)数值越界,变出天文数字或负数凭空铸币、价格错乱
权限失控(Access)本该受限的操作谁都能触发密钥、资金被任意调用
抢跑(Frontrunning)矿工/验证者看到你的交易后,先插一单交易被「插队」,利润被抢走
预言机欺骗(Oracle)拿喂价的数据做判断,价格被操纵清算错误、爆仓
事件语义错乱(Event)合约日志与现实状态对不上误导桥/钱包/浏览器

二、进攻的自动化:fuzzer 学会了「读代码」

传统上找合约漏洞,靠的是人工审计:请安全专家一行一行读代码。人慢,而且贵。所以这几年大家都在往「自动化找漏洞」上使劲——这里说的「进攻」,是安全研究者主动出击,在坏人之前先找到漏洞。

EchoFuzz:让大模型当模糊测试的「向导」

模糊测试(fuzzing)的思路很简单:往程序里灌入大量随机输入,看它什么时候崩溃或者干出坏事。但对智能合约来说,纯随机的输入效率极低——合约的状态转移逻辑复杂,组合爆炸,随机乱撞很难撞到真正危险的路径。

9 月 13 日提交的 EchoFuzz(arXiv:2609.14475,被 ICSE'2026 接收)换了个思路:让大语言模型(LLM)当向导。它把「静态分析」和「逻辑理解」结合起来,让 LLM 针对每个特定合约,生成「易受攻击函数调用序列」(Vulnerable Function Call Sequences, VFCS)——也就是一条条最短的、能保持行为意义、又能把 Bug 暴露出来的执行路径。有了这些路径作为「向导」,fuzzer 就不再是海里捞针,而是沿着可疑路线精确凿进。

flowchart LR
    A["合约源码"] --> B["静态分析 + 逻辑理解"]
    B --> C["LLM 生成 VFCS 候选"]
    C --> D["迭代模糊测试"]
    D --> E["实时反馈"]
    E --> F["LLM 自适应引导"]
    F --> D
    D --> G["发现未覆盖分支 / 漏洞"]
    G --> H["报告漏洞"]

效果如何?论文给出的硬数字是:分支覆盖率比当前最先进方法(SOTA)提高 29%,检出的漏洞数量提高 62%;更关键的是,它在真实世界的合约里发现了 37 个此前完全未知的漏洞(arXiv:2609.14475)。「此前未知」四个字的分量,在于这意味着它找到了连公开工具库都不知道的洞——这是真正的增量。

IntentFuzz:给跨链桥做「协议感知」体检

如果说 EchoFuzz 是普适的「体检仪」,那 9 月 11 日提交的 IntentFuzz(arXiv:2609.13004)就是给最危险的部位——跨链桥——定制的「专科体检」。

跨链桥负责在不同区块链之间搬运价值,是历年黑客攻击的「重灾区」。其中有一类「意图式桥」(intent-based bridge):用户声明一个目标结果(比如「我要在另一条链上收到 100 USDT」),然后由一群「求解者」(solver)去完成这个意图,链下结算层最后再对账。这类桥的复杂性在于:很多问题不是合约本身的 Bug,而是被「合法地委托」给了链下结算层。以前的检测工具要么只认已知坏模式,要么需要人手工写测试断言,都有局限。

IntentFuzz 的聪明之处,是它直接从无标注的 Solidity 源码里恢复出这座桥的「意图结构」,自动识别出 deposit(存入)和 fill(兑付)函数各自的角色,然后按协议逻辑合成多步模糊测试序列。这样它就能区分:哪些是合约必须自己守住的不变量,哪些是「本来就应该交给链下结算」的暴露——不误伤,也不漏报。

它的战绩:9/9 个基准协议正确恢复意图结构;跨 24 个真实部署,确认了 17 个真实的不变量违反;一旦启用 LLM 增强层,这个数字升到 22 个,横跨 8 个含漏洞的 GitHub 仓库,每一个都能对着已部署的公开字节码复现(arXiv:2609.13004)。换句话说,这座桥上有 22 处「合约没守住自己底线」的地方,它全给找出来了。

三、防守的自动化:检测器想「看懂」攻击

光会找漏洞还不够。链上每天跑着海量交易,攻击一旦发生,早一秒发现就少一分损失。所以防守侧的自动化,目标是实时看懂每一笔交易在干什么

TxLucent:只看函数名,就能识破攻击?

9 月 11 日提交的 TxLucent(arXiv:2609.12315)提出了一个大胆主张:「函数名序列就够了」(Function Name Is All You Need)。

现有攻击检测器有两个痛点:一类靠人手工编写规则,脆弱、跟不上新攻击;另一类需要拿到合约源码才能分析,而链上大量合约根本没开源——论文对 424 起真实攻击事件的实证显示,98.46% 的调用轨迹可以解析成函数名,但只有 74.78% 的调用涉及有源码的合约(arXiv:2609.12315)。源码是大门槛,函数名不是。

于是 TxLucent 只做一件事:把一笔交易的调用轨迹(call trace)映射成一串函数名序列,再用 Transformer 模型去学这串序列背后的「语义」。走了一个「熟悉套路」的攻击、一次不寻常的函数调用组合,模型就能嗅出来。它的成绩单相当漂亮:在 424 起已知事件、14611 笔攻击交易上,漏检率只有 1.56%;在以太坊超过 5 亿笔良性交易的估算中,假阳性率约 0.0017%;而分析一笔交易平均只要 24.90 毫秒——毫秒级,意味着可以部署在链上做实时监控。

flowchart TB
    A["链上实时交易"] --> B["提取调用轨迹 call trace"]
    B --> C["映射为函数名序列"]
    C --> D["Transformer 语义学习"]
    D --> E["攻击判定"]
    E -->|"疑似异常"| F["告警 / 阻断"]
    E -->|"正常"| G["放行"]

这个数字值得慢慢品:假阳性率 0.0017%,意味着它在「极其安静地放行正常交易」的同时,还能抓住 98% 以上的已知攻击——防守自动化终于从「反应式告警」逼近「毫秒级实时拦截」。

看这张流程图也要理解它的「不必依赖」哲学:它既不要人工规则,也不要源码,只要「函数名叫什么」。2026 年的链上生态里,超过两成被调用的合约根本没有公开源码(剩那 74.78% 之外的部分),手写规则又永远追不上新攻击——所以「只用函数名」不是偷懒,而是刻意选了一条最难被环境卡死的路。当然它也有边界:函数名全靠开发者「起名规范」来传递语义,遇到故意起迷惑性名字的恶意合约,这条信息通道本身就不再可靠;论文也没有声称它是银弹,而是把它定位成「实时防线里的第一层报警器」——先喊,再让人判断。

EventSpec:骗子造假账,机器查「对账」

还有一个很少被注意、却坑人无数的角落:事件日志

智能合约运行时会「发射」事件日志(event log),桥、钱包、区块浏览器这些链下系统,全靠读日志来判断链上发生了什么。问题是:以太坊虚拟机(EVM)根本不校验事件语义——你发射个「已转账 100」的日志,程序却完全可以在没转钱的情况下发射。日志和真实状态一背离,链下系统就被带偏了:桥的中继器可能把没到位的资产当到位,钱包可能把失败的交易显示成成功。

9 月 7 日提交的 EventSpec(arXiv:2609.07865)专门治这个病。研究者从审计报告和事故案例出发,用开放卡片分类法归纳出 5 类事件语义缺陷:事件碰撞、状态-事件不匹配、未授权事件发射、事件发射不匹配、事件参数不匹配。然后它从大量合约语料里「推断」每个合约应该遵守的事件规范,再用差分检查找出目标合约哪里违背了规范。

它在 6617 个真实合约上跑出 90.17% 的整体综合精度(arXiv:2609.07865)。更实际的是,它附带一个链下评估工具,在桥中继器、区块浏览器、NFT 市场上演示了两种真实攻击的可行性,并报告了 6 个钱包问题,其中 4 个已确认(包括一笔 600 美元的赏金),2 个待定——连真金白银的 bug bounty 都拿到手了。这提醒我们:合约安全的战场,已经延伸到链上代码之外,「链下系统怎么解读链上事件」同样是可以被攻击的软肋。

四、连「投票」和「排队」都有人钻空子

如果说前面几篇是在「抓代码 Bug」,那接下来这两篇抓的是代码之外的漏洞——藏在治理流程和交易顺序里。这些洞更阴险,因为代码本身没错,错的是「玩法」。

Mind the Gap:投票通过了好提案,执行的却是坏代码?

去中心化自治组织(DAO)的治理方式是提案投票:A 提交一份提案,附上文字描述,大家看着描述投票,通过了就执行「描述背后的代码」。

这里有个致命缝隙:描述和代码是两回事。恶意提案人可以递交一份「看起来非常合理」的描述骗过投票,而背后要执行的代码其实是转账、夺权。离京理工等团队 9 月 11 日提交的 Mind the Gap(arXiv:2609.13601,被 ACM CCS 2026 接收)把这种攻击命名为「描述-执行不匹配攻击」(Description-Execution Mismatch, DEMI),并给出了第一套系统性检测框架。

它怎么检测?两个招法:第一,不带任何特定 DAO 的假设,直接从历史链上交易「学会」每个 DAO 的治理画像,把新提案完整地走一遍治理生命周期,模拟出它到底会执行什么;第二,不让 AI 拍脑袋下「整体判断」,而是逼它给每一个具体动作提供「逐段文字理据」——这个「证据映射」(evidence-mapping)设计,大幅提高了精度和召回。

战绩:在该框架下,92.7% 的活跃 DAO 和 89.3% 的已执行提案能成功推得执行结果(远超既有平台);检测器达到 81.7% 的平均精度、98.3% 的平均召回;而且证据映射方法能跨不同大模型供应商泛化——不依赖某一个模型。它甚至还做了红队/蓝队对抗测试:即使攻击者知道检测器的存在、针对它做自适应攻击,防守方也能挡下大多数(arXiv:2609.13601)。

一句话:「投票前先让机器替你把代码执行一遍」,这可能是未来 DAO 治理的标配。

Frontrunning:排队的人被「插队」,连这都防不住

抢跑(frontrunning)是更古老也更普遍的问题。你在链上提交一笔交易(比如「用 100 块买 X 币」),它会被放进公开的待处理池(mempool)等待打包。矿工/验证者能看到池子里每一笔交易,而且有权决定顺序——于是他们可以先自己买一笔 X 币,等你的交易把价格推上去,再高价卖掉,稳稳吃你差价。这笔「排队费用」,是以太坊上持续存在且丢失以百万美元计的问题。

9 月 10 日提交的 arXiv:2609.11535(被 ACM CCS 2026 接收)一上来就泼了盆冷水:整个领域连「什么算抗抢跑」都还没有严谨定义。更扎心的实锤是——一项涵盖 287 次智能合约审计、393 个已报告漏洞的研究显示,55% 的漏洞落在当前最先进检测标准的覆盖范围之外(arXiv:2609.11535)。也就是说,现在市面上绝大多数「防抢跑」的检测工具,根本对不齐真实世界的攻击面。

这篇论文的核心洞察很有颠覆性:抗抢跑不是合约自身的固有属性,而是取决于「诚实的用户怎么跟它交互」。同一份合约,用 A 方式交互会被抢,用 B 方式交互就安全。基于这个观察,他们设计了一个能合成「安全交互条件」的算法,并把原型用到已审计过的真实合约上,挖出了两个以太坊合约里此前未发现的漏洞

这件事的意义在于方法论:过去我们问「这合约防不防抢跑」,现在应该问「在什么交互条件下它安全,我应该怎么用才不被抢」。

「绕过常规审计」的偏门攻击原理来源
DEMI 描述-执行不匹配描述骗投票,代码谋私arXiv:2609.13601
抢跑 Frontrunning交易被验证者插队arXiv:2609.11535
事件语义欺骗日志造假,误导链下系统arXiv:2609.07865

五、更深的阴影:机器会被骗,而且骗得挺容易

读到这里,你可能已经默认「自动化 = 更安全」。9 月 12 日提交的一篇论文,专门来泼这盆冷水——它研究的是:当 AI 本身被当成检测工具时,它有多容易被骗?

场景是这样:链上有大量开源验证不到的合约,只有一堆字节码。过去,调查取证人员可以请大语言模型帮忙「读」这些字节码,判断它是不是有恶意(比如藏着个「抽干资金」的后门)。这听起来很方便——但如果合约是专门设计来骗 AI 的呢?

Deception Delta(arXiv:2609.14098,被 ACM CCS 2026 接收)就是这样一项对抗性评估:研究者精心打造了 13 个合约(9 个带伪装向量,4 个作对照),用 22 个当红前沿大模型、6 种不同提示策略,做了 8528 次可分析的检测。结果让人后背发凉:

  • 对抗性伪装让「抽干资金」行为的检出率掉了整整 20.0 个百分点(95% 置信区间 [17.2, 22.8]),而且是相对功能匹配的对照组而言;
  • 多跳调用链、XOR 掩码的函数选择器、从存储里取参数的抽干逻辑——几乎所有模型都识别不出来
  • 比「没检测出来」更糟的是出现了「合理化」(rationalization):模型其实正确描述了隐藏的抽干机制,却接受了合约给它的那套「我很安全」的说辞,把它判成了良性——给出的是「正面但错误」的安全证据。这比沉默更危险,因为它让调查者以为「查过了,没问题」;
  • 加一句「你要小心诈骗」的防护提示,没有整体帮助,甚至让单个模型的表现双向变得不稳定
  • 结构层面的欺骗对 6 种提示策略几乎不敏感——这更像能力局限,而不是换种问法就能解决的「提示问题」。22 个模型里,只有 5 个(来自 2 家供应商)检出率超过了一半。

论文自己的边界声明也值得原样转述:在「单轮、仅原始字节码」的协议下,当前 LLM 不能作为可靠的独立取证工具;这个结论延伸到多轮对话、带工具、能看源码或带反编译器的后续流程(arXiv:2609.14098)。

笔记里还有个容易被忽略的细节:这个「减 20 个百分点」不是发生在「人脸识别认错人」那种模糊场景,而是发生在「钱会不会被抽干」这种二选一的判断上。对照组里模型大多能认出抽干行为,一旦加上伪装,立刻掉两成。这说明伪装技术不是「让 AI 更困惑一点」,而是真能系统性压低 AI 的命中率——对做取证的人来说,这等于一个「看不见的衰减器」:你觉得工具还和以前一样灵,其实它已经聋了半只耳朵。

而且论文戳破了两个常见误区。第一个误区是「多问几句就好了」:很多人以为换个更凶的提示词(prompt)、加一段「小心恶意合约」的警告,AI 就会更警觉。实测告诉我们,简单防护指令没有总体收益,甚至让个别模型双向乱跳——有时变灵、有时变蠢,你根本没法预测。第二个误区是「换个模型就好了」:结构层面的欺骗对 6 种提示策略几乎不敏感,更像能力局限而不是提示工程问题。22 个模型里只有 5 个(来自 2 家供应商)检出率超过了一半——也就是说,这不是你「用错了一家」的事,而是整个技术栈的普遍短板。

六、总结:攻防都已自动化,但「最后一道判断」必须是人

把 8 篇论文串起来,能看到 2026 年 9 月这个时间点上智能合约安全的完整拼图:

  • 进攻端自动化(找漏洞):EchoFuzz 让 LLM 引导 fuzzing 找到 37 个未知漏洞;IntentFuzz 在跨链桥上确认 22 处真实违反;CVE-Smart-Contracts 把漏洞变成可批量研究的数据集——找洞的速度,比人快了几个量级
  • 防守端自动化(识攻击):TxLucent 用函数名序列做毫秒级实时检测;EventSpec 揪出事件日志造假;Mind the Gap 在提案执行前就模拟出「坏代码真面目」——识破攻击的覆盖面,正在从代码扩展到治理和事件层
  • 但工具会错:55% 的审计漏洞不在 SOTA 检测标准内;大模型会被对抗合约骗掉 20 个百分点的检出率,还会产生「安全的假象」。

由此,一个清晰的路线图浮现:未来真正靠谱的防线,是「自动化工具 + 交叉验证 + 人工审计」的三层结构。自动化负责「广撒网」和「实时盯盘」,把海量可能性压缩成可疑清单;交叉验证负责让不同工具互相检验,抵消单一工具的盲区;而最关键的一些判断——这个合约能不能上线、这笔交易要不要拦截——最终还是要落到人的肩膀上。

技术永远在解决旧问题、暴露新问题。今天我们用机器去对抗机器,明天就可能需要更聪明的机器、以及更清醒的人。

给普通人的一句话

别把「审计过」当成「一定安全」,也别因为工具越来越厉害就放松警惕——在链上,最值钱的资产不是币,而是你愿意为「不确定」留出的那份谨慎。


参考文献

  1. EchoFuzz: Empowering Smart Contract Fuzzing with Large Language Models — arXiv:2609.14475(ICSE'2026)
  2. The Deception Delta: Adversarial Evaluation of LLM-Based Smart Contract Bytecode Forensics — arXiv:2609.14098(ACM CCS 2026)
  3. IntentFuzz: A Protocol-Aware Fuzzer for Automated Invariant Violation Detection in Intent-Based Cross-Chain Bridges — arXiv:2609.13004
  4. Mind the Gap: Detecting Description-Execution Mismatch Attacks in DAO Governance — arXiv:2609.13601(ACM CCS 2026)
  5. On Identifying Sound Conditions for Frontrunning Resistance — arXiv:2609.11535(ACM CCS 2026)
  6. EventSpec: Defining and Detecting Event-Semantic Issues in Blockchain Ecosystems — arXiv:2609.07865
  7. Smart Contracts Claimed Vulnerable by the CVE Database, with Labels and Source Locations — arXiv:2609.01186
  8. Function Name Is All You Need to Detect Blockchain Application Attacks — arXiv:2609.12315

评论

0

评论加载中…

发表评论

0/2000