Solana 程序重定位漏洞:空字节码即可执行任意操作
2026 年 5 月 27 日,一篇研究文章披露了 Solana SBPF(Solana 字节码格式)v0、v1 和 v2 程序中的一个严重漏洞,影响 anza-xyz/sbpf crate 版本 v0.14.2。该缺陷存在于 ELF 加载过程中的重定位处理:SBPF 虚拟机的加载器未验证重定位写入是否指向合法指令操作数,从而允许对 ELF 文件内任意偏移进行写入。攻击者可部署一个 .text 段为零(无代码)的程序,在重定位过程中被完全覆盖,以执行任意操作,例如记录自定义消息。该技术利用了 R_BPF_64_32 重定位类型(用于函数调用),该类型将 32 位 Murmur3 哈希写入立即数字段。通过构造重定位条目,攻击者可以用所需指令覆盖整个字节码。该漏洞仅影响 SBPF v0-v2;v3+ 程序不受影响,因为它们跳过了重定位处理。这可能导致恶意程序绕过验证,在 Solana 网络上执行未授权操作。
关键事实
- SBPF v0-v2 重定位处理漏洞允许任意字节码写入。
- 通过构造重定位条目,可覆盖零化的 .text 段。
- 利用 R_BPF_64_32 类型写入自定义指令哈希。
- 影响 anza-xyz/sbpf crate v0.14.2;v3+ 程序安全。
- 概念验证演示在 Solana 上记录任意消息。
KeyAudit 数据视角
📊 KeyAudit 数据库:Solana 历史泄露记录 717550 条