V8中WASM类型混淆漏洞CVE-2024-2887的来龙去脉
💡
原文中文,约27100字,阅读约需65分钟。
📝
内容提要
CVE-2024-2887漏洞涉及WASM类型混淆,源于WASM模块中类型数量检查不严,导致typeidx超出限制。攻击者可利用该漏洞进行安全攻击。
🎯
关键要点
- CVE-2024-2887漏洞涉及WASM类型混淆,源于WASM模块中类型数量检查不严。
- WASM的内存模型分为虚拟寄存器、栈和堆,堆由宿主环境的GC管理。
- WASM支持标量类型和引用类型,引用类型需要明确指向对象类型。
- 递归类型允许类型引用自身,WASM GC提案支持递归类型的定义。
- TypeSection是WASM模块中定义类型的节,解析时存在数量检查不完善的问题。
- 攻击者可以通过构造特定的WASM模块,突破类型数量限制,导致类型混淆。
- struct.new和ref.cast指令在处理类型时存在漏洞,可能导致错误的类型检查。
- 利用该漏洞可以实现类型混淆,进而进行安全攻击。
- 漏洞的根因在于向数组添加元素前未检查大小,导致类型溢出。
- 该漏洞提供了WASM类型混淆的利用示例,具有较高的稳定性和易触发性。
➡️