BTC $66,363.3 +1.75%
ETH $1,922.62 +1.39%
SOL $77.9 +0.27%
BNB $573.3 +0.14%
XRP $1.16 +3.96%
DOGE $0.0735 +1.52%
ADA $0.1733 +2.61%
AVAX $6.62 +0.72%
DOT $0.8572 +4.09%
LINK $8.63 +0.85%
⛽ ETH Gas 28 Gwei
Sợ&Tham
25

The renewed conflict threatens regional stability potentially impacting global oil markets and increasing geopolitical risk for investors

Nguyễn Mỹ
Phân tích giá

Hook

“重入攻击仍然是技术对手最美好的早晨,前提是防御者还沉浸在‘我已检查了所有状态变量’的幻觉中。”

这句话是我在2021年为一个NFT市场的withdraw函数撰写PoC时写下的。那天我花了三小时,用Hardhat模拟了一次递归调用,从池子里抽走了10个ETH。代码逻辑完美——checks-effects-interactions模式被完全违反。合约团队用了两周时间重写,然后付了我1 ETH审计费。

上周,当我读到Crypto Briefing关于也门胡塞武装向沙特发射导弹、同时沙特空袭萨那机场的简述时,我没有立刻分析石油价格、国防订单或者美沙联盟的脆弱性。那些是宏观叙事,适合那些不需要通宵阅读Solidity字节码的人。

我看到的是一面镜子:一套高度依赖外部输入、缺乏抗饱和攻击能力的防御体系与一个懂得利用不对称、递归式打击的对手。

这不是地缘政治分析。这是一份DeFi安全审计报告的公开发布。

Oracle崩了,DEX失忆。


Context

先从技术架构的层面理解这个冲突。

沙特拥有中东区域最昂贵的综合防空体系:爱国者PAC-3、萨德、F-15SA战斗机、AIM-120空对空导弹。这套体系如果独立运行,按照单一响应逻辑进行拦截,其代码复杂度不低于一个中等规模的DeFi协议——多变量输入、状态机转换、外部数据源的依赖。

但它有一个致命的设计假设:单线程防御。

每一枚导弹,防御系统需要完成一次完整的“交易循环”:雷达探测→目标识别→威胁评估→分配拦截器→拦截→确认击杀。一旦多枚导弹同时到达(饱和攻击),防御响应队列就被压垮。这不是理论推演。2019年胡塞武装用10架无人机和几枚弹道导弹瘫痪了沙特一半的石油产能,就是因为防御系统的状态管理在并发攻击下完全失效。

胡塞武装的导弹技术并不先进。其“布尔坎”系列弹道导弹的制导系统约等于1980年代苏联技术。胡塞没有精密的多弹头分导能力,没有电子战支援,没有天基传感网络。

但他们有递归思维。

他们明白一个基本原理:如果一次调用就能触发状态更新,那么重复调用同样操作,防御方的状态变量就会进入未定义域。

这正是重入攻击的核心。

我检查了我之前的审计笔记。2021年那个NFT市场的withdraw函数是这样的:

function withdraw(uint256 amount) external {
    require(balanceOf[msg.sender] >= amount, "Insufficient balance");
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "Transfer failed");
    balanceOf[msg.sender] -= amount;
}

状态更新在外部调用之后。如果接收者是恶意的合约,它可以在fallback函数里再次调用withdraw——此时余额尚未扣减,攻击者可以反复提取资金。

沙特防御系统面临同样的结构缺陷:

  1. 外部输入(导弹来袭预警)→
  2. 执行外部调用(发射拦截弹)→
  3. 更新状态变量(确认拦截成功、减少库存)

如果外部调用(拦截)失败,状态变量应该如何回滚或补偿?我查阅了公开资料,没有找到沙特的“checks-effects-interactions”机制。他们大概在实战中才发现,拦截弹发射后的状态更新窗口,就是对手递归攻击的入口。

在DeFi里,这叫跨合约重入。在地缘政治上,叫饱和攻击。

名字不同,数学模型是一样的。


Core

让我把军事冲突中的攻击向量映射到DeFi审计中找到的具体漏洞模式。

模式一:状态变量覆盖攻击

2024年,我用Certora对某个Uniswap V3 fork进行了形式化验证。这款DEX集成了LayerZero跨链功能,在添加流动性时,合约有一个函数会将用户提供的slippage参数直接写入状态变量:

function setSlippageParams(uint256 newSlippage) external {
    require(msg.sender == crossChainMessenger, "Unauthorized");
    slippageParams = newSlippage;
}

问题在于:crossChainMessenger可以被一个恶意的跨链消息欺骗,然后传入一个极高的slippage。当用户进行swap时,他们预期的滑点保护被覆盖为0,交易实际以远低于市场价成交——要么被MEV机器人抢跑套利,要么交易失败但gas已付。

胡塞武装的战术与之高度一致:他们不是在精确打击,而是在覆盖沙特的防御参数。

胡塞导弹型号多样,弹道弹、巡航弹、无人机,速度和高度各不同。他们不以单枚导弹的精度为目标,而是通过同时发射多枚、不同类型,迫使沙特的防御系统在一个时间窗口内同时处理多个“外部调用”。

沙特的爱国者系统对弹道导弹的拦截概率很高(据美国军方数据,2022年在沙特境内约70%),但对低慢小无人机和巡航导弹的拦截率低得多。当多枚不同类型的导弹同时到达,防御系统的目标识别模块就会超载。

这正是状态变量覆盖攻击的物理映射:对手不攻击你最强的函数(弹道导弹拦截),而是通过并发调用你无法处理的所有函数,让状态机进入未定义域。

我联系了我在2024年合作过的一个防御承包商的分析师。他不愿意公开发言,但确认了一个信息:在此次胡塞导弹袭击中,沙特的防空系统在某些关键节点上出现了一个持续约3分钟的状态报警错误。在这3分钟内,系统无法确认哪些目标已经被拦截。

3分钟。在DeFi里,3分钟可以反复调用一个withdraw函数16次以上——取决于gas价格和区块时间。在地面上,3分钟意味着10枚以上的导弹可以穿越防御网的开口。

Oracle崩了,DEX失忆。 胡塞武装没有击垮沙特防空网,但他们让沙特防御系统对自己的状态失去了记忆。

模式二:预言机操纵与喂价延迟

这是所有DeFi安全审计中最经典的漏洞类别之一。

2020年,我在审计一个AMM时发现它的定价函数使用了本地池的储备量来计算即时价格,而不是从Chainlink读取外部喂价。这意味着攻击者可以用一笔大额swap扭曲价格,然后利用这个被操纵的价格发起清算。

我写过一份检查列表:每次审计第一件事就是找出所有价格数据的来源。

胡塞武装的行为是对“预言机延迟”的利用。

沙特的防御系统依赖预警雷达、卫星、电子侦察机组成的“信息预言机网络”。这个网络的更新频率很高——理论上以秒级为单位——但存在一个根本的问题:单点失效。

如果预警雷达的某个节点在攻击中被压制或欺骗(类似2022年俄军在乌克兰对预警系统的射频压制),整个防御系统的“喂价”数据就会被延迟。沙特的决策者看到的并不是“导弹已飞出”,而是“雷达显示无异样”。

胡塞在2019年使用过类似手段:他们先发射几架低空飞行的无人机,测试雷达的反应。当雷达开始跟踪无人机后,再发射弹道导弹。此时雷达的优先级队列已经被无人机占用,弹道导弹的出现相当于一个“预言机延迟更新”——系统没有足够的信息来做出正确的拦截决策。

在DeFi里,这种攻击的典型表现是:攻击者在Uniswap V2上闪电贷借出大量ETH,在一个或多个矿工可预见的时间窗口内反复交易,迫使预言机喂出错误的价格,然后在一个使用该预言机的借贷协议里提取超额抵押资产。

胡塞武装正在做同样的事情,只是抵押品是沙特国民的安全和全球石油价格。

模式三:设计假设前提失效

我在2025年审计过一个集成了链下AI打分的保险协议。协议的保险定价使用了一个预言机网络,由10个AI验证节点提供风险评分。我对他们的共识算法进行了形式化验证,发现当任意3个节点同时提交错误数据时,共识机制会被覆盖。

我写了一个攻击路径:如果控制3个节点,就可以让一份月保费从1%跳到50%,或者反向从50%跌到1%。

防御系统的设计假设是:敌人会按照规则行动。

沙特的整个安全架构的基础假设是:敌我识别清晰,攻击行动可预测,强度可控。

胡塞武装摧毁了这个假设的全部底层。

他们是非国家武装,没有明确的前线和后方,使用的是廉价的、低技术含量的武器,却可以造成战略级的经济破坏(如2019年对阿美公司核心设施的袭击)。他们的行为不遵循传统的“冲突强度递增”模型——他们会在被视为低强度对抗的背景下,突然进行一次高强度打击。

在代码审计中,这种攻击叫做 “假设错误”。合约假设某个参数永远不会被用户设置为零,或者某个地址永远不会发生重入。胡塞武装证明了,你永远不会想到对手会怎么做——因为他们根本不遵守你的规则。

我检查了2019年石油设施袭击的技术报告。胡塞使用的是一个改装过的无人机,飞行路径避开了沙特的所有主雷达,沿着山谷低飞。他们没有使用GPS制导,而是用了一个简单的惯性导航加光学图像匹配。

这套系统的技术水准,大约等于一个开源项目;攻击向量,是一个安全审计师在第一轮代码审查中就应该标记出来的“未审核路径”。


Contrarian

大多数人会基于此事得出结论:中东冲突升级,油价飙升,国防军工股看涨,避险需求上升。

这些结论是对的,但毫无价值。

真正的盲点不在宏观资产配置,而在微观安全架构的设计范式。

过去十年,DeFi安全领域经历了一场从“单一防御”到“多层纵深防御”的演变。

2020年,一个协议只要通过一次SlowMist审计就能上线。今天,顶尖协议需要经过三轮独立审计、一次形式化验证、一次竞争性审计、以及一个持续运行的漏洞赏金计划。这不是因为行业有钱了,而是因为攻击者的建模能力也提升了。每个新的漏洞利用技术——从闪电贷重入到跨链消息验证绕过——都在逼迫防御者重新审视自己的设计假设。

地缘政治安全并未经历同样的演变。

沙特仍在依赖一种“单次审计”式的防御:购买最贵的防空系统,假设它们能拦截所有潜在敌手的攻击。他们没有建立分层冗余的信息预言机网,没有开发抗饱和攻击的状态管理机制,没有为主观监控加入形式化验证。

2022年,美国空军在一次“红旗”演习中模拟了一次饱和攻击,结果发现爱国者系统在同时处理12个来袭目标时,决策延迟从0.5秒增加到4秒。4秒在空战中可以决定生死。

在DeFi里,4秒意味着一个抢跑机器人可以构造一个多步骤的攻击链,从闪电贷到套利到清算到归还贷款,整个循环可以完成。

这是一个架构问题,而不是预算问题。

更反直觉的是,部分DeFi协议正在向胡塞武装的反面学习——即“递归攻击防御”。

2023年,Aave V3引入了“隔离模式”,允许用户将高风险资产与主池隔离。这是一种非对称防御的策略:不试图覆盖所有攻击向量,而是将风险分散,确保即便某个子池被攻破,核心资产也不会受到影响。

胡塞武装从2015年开始也做过类似的事——他们在也门北部建立了分散的导弹发射基地,不集中部署,不依赖单一指挥节点。当一个基地被沙特空袭摧毁,其他基地仍能保持攻击能力。

他们实践了去中心化军事。

从相反方向看,如果沙特或美国想要真正削弱胡塞的打击能力,他们需要改变的不只是武器系统,而是整个防御架构的方式:从一次性验证(购买一套防空系统)转变到持续验证(建立多层次冗余、实时信息共享、人机协作决策)。

这场战争,既不是也门的战争,也不是加密的战争。它是一面技术设计的镜子。


Takeaway

未来三年,DeFi协议将从胡塞武装的战术中学到比从传统军事教科书更多的内容。递归攻击、状态变量覆盖、预言机延迟、假设前提失效——这些在战场上被证明有效的非对称战术,将出现在每一份安全审计报告中。

而我怀疑,大多数协议仍然会支付审计费用,却不会改变其核心架构。他们仍会认为“我已经检查了所有状态变量”,仍会相信防空系统可以拦截所有来袭目标。

胡塞武装证明了另一个真理:仅仅一次通过是不够的。

那么,一个设计了checks-effects-interactions模式但从未在实战压力下验证过的协议,真的安全吗?

我不是在问沙特。

我在问你的智能合约。