Polygon 在相关修复已经部署和验证之后,公开了一批 Polygon PoS security 与 liveness issues。
这批问题通过两个 coordinated hard fork 修复:
- Austin — Bor v2.10.0
- Kyoto — Heimdall v0.11.0
Polygon 表示,两项修复先私下 rollout,在 Amoy testnet 验证,再完成 mainnet activation,最后才公开技术细节。
官方还明确说,没有观察到这些问题在主网造成 disruption。
因此,这不是一个“Polygon 正在被黑”的文章。
正确分类是:
Patched security disclosure / mandatory upgrade event。
为什么要先修复再公开?
Consensus / liveness vulnerability 有典型 disclosure dilemma。
如果 maintainer 在大部分 validator 还没升级时就把攻击路径公开,安全公告本身会给攻击者制造 exploit window。
Polygon 采用的流程是:
- 开发 patch;
- 私下 rollout;
- Amoy 验证;
- mainnet activation;
- fleet 安全后公开细节。
对于 block-processing / validator-level bug,这种 coordinated disclosure 是合理策略。
Austin:State-sync Gas Exhaustion
Austin 第一项问题涉及 state-sync event。
State-sync event 可以像普通 transaction 一样执行 contract code 与 precompile,但此前其 gas consumption 没有统一纳入一个 hard per-block cap。
Polygon 表示,如果一个 block 放入足够多 state-sync events,或者一个特别昂贵的 event,block processing 可能持续过久并造成 temporary stall。
Austin 增加明确 per-block state-sync gas bound。
这类漏洞主要影响 availability,而不是直接偷资产。
Austin:没有 Size Limit 的 TxDependency
第二个 Bor 问题是 TxDependency wire field。
这个字段作为 parallel execution 的 hint,用来描述 block 中哪些 transaction 不冲突。
此前它没有 size limit。
恶意 block producer 可以在 otherwise valid sibling block 中塞入非常大的 TxDependency blob,peer 在处理时可能 crash。
Austin 直接从 wire format 移除该字段。
Polygon 表示 parallel execution 的 correctness 不依赖 peer 信任 producer 提供的 hint,因此移除不会破坏正常 execution。
Austin Activation
Polygon 公布:
- Amoy:block 44,120,000
- Mainnet:block 91,949,700
官方把这两个问题定义为 resource exhaustion / DoS,而不是 consensus correctness failure,并表示没有观察到它们在主网造成 disruption。
Kyoto:Nested Protobuf Any
Kyoto 最严重的一项涉及深层嵌套 google.protobuf.Any。
Heimdall transaction 使用 Any 包裹 inner message,而 Any 还可以继续嵌套 Any。
如果没有 depth cap,攻击者可以低成本构造 deeply nested transaction,却让整个 validator set 同时承担高昂 decode work。
这是一种典型 asymmetric resource attack:
attacker cost 很低,network-wide validator cost 很高。
Kyoto 增加 byte-level pre-scan,在 nesting 超过 threshold 时直接拒绝 transaction。
而且同一规则同时应用于 CheckTx 和 ProcessProposal,避免 mempool 与 consensus path 对同一 transaction 出现不同判断。
Kyoto:Fee Coin Count
此前 transaction 可以声明没有上限的 fee coin list。
Validation 对 list 执行 O(n) scan。
Kyoto 在 scan 前增加 count cap,从输入层阻断无限扩大 validator work 的路径。
Kyoto:Checkpoint Signature
另一个问题涉及 checkpoint signature recovery byte。
此前在向 L1 提交前没有进行 canonical normalization,因此一份本来合法签署的 checkpoint,有可能以某种形式提交后在 L1 signature recovery 失败。
结果可能是 checkpoint anchoring stall,但攻击者不需要伪造 signature。
这属于 liveness / finality risk,而不是 key compromise。
Kyoto:Milestone、Downtime 与 Replay Hardening
Kyoto 还包含:
- producer downtime handling 改为 idempotent;
- milestone range voting 绑定 signed parent hash;
- checkpoint window continuity check;
- future-span creation failure 不再阻断 milestone commit;
- topup / clerk / stake 的 L1-event replay key 改进,避免窄条件下 collision/shadowing。
这些问题单独看很多是 edge case,但都位于 Polygon PoS validator、milestone、checkpoint 与 L1 event processing 的核心路径上。
Kyoto Activation
Polygon 公布:
- Amoy height:42,252,000
- Mainnet height:51,533,000
所有修复都在 activation 前完成验证。
节点必须升级到什么版本?
| Release | 对象 | 状态 |
|---|---|---|
| Bor v2.10.0 / Austin | 所有节点 | Mandatory / 已生效 |
| Heimdall v0.11.0 / Kyoto | 所有 validator 与 full node | Mandatory / 已生效 |
两者都是 binary upgrade,不需要 state migration 或 genesis change。
Polygon 明确提醒,如果旧版本节点已经越过 activation height,它已经脱离 canonical consensus,需要升级并重新 catch up。
为什么评 Medium,不评 High?
因为:
- 没有观察到主网 exploit;
- patch 在公开细节前已经部署;
- 没有 confirmed customer asset loss。
这些因素显著降低 severity。
但相关问题属于 block-processing 与 consensus-adjacent 路径。如果未修复,确实可能造成 network availability 或 validator-wide correlated resource exhaustion。
所以仍然值得单独进入 CEXVia risk database。
Evidence Status
Polygon 官方确认
- Austin / Kyoto 修复 security + liveness issues;
- 先私下部署与验证,再公开;
- Austin 修复两个 Bor DoS path;
- Kyoto 修复多项 Heimdall consensus/input validation 问题;
- 未观察到主网 disruption;
- Bor v2.10.0 / Heimdall v0.11.0 mandatory;
- 未升级旧节点越过 activation 后已脱离 canonical consensus。
当前没有证据
- 这些漏洞被实际利用;
- 由此造成用户资产盗取。
风险判断
Medium。
漏洞本身真实存在且靠近 consensus / availability 核心路径,但已经在公开前完成修复,并且没有 observed mainnet exploitation。
接下来观察什么?
- stale node 情况;
- 是否发布进一步 CVE / advisory;
- independent audit;
- post-fork operational issue;
- forked/downstream code 是否存在同类问题;
- Polygon 是否进一步系统化限制其他 unbounded input。
FAQ
Polygon 被黑了吗?
Polygon 表示没有观察到相关漏洞在主网造成 disruption,也没有报告由此导致的资产盗取。
Austin 修复什么?
Bor 两个 DoS 路径:state-sync gas 缺少 per-block bound,以及无 size limit 的 TxDependency wire field。
Kyoto 修复什么?
主要是 nested-message resource exhaustion、fee list、checkpoint、milestone 与 L1 event replay 等 Heimdall security/liveness 问题。
必须升级到哪些版本?
Bor v2.10.0 和 Heimdall v0.11.0。
不升级会怎样?
Polygon 表示旧节点越过 hard fork activation height 后已经脱离 canonical chain,需要升级并 catch up。