漏洞总结:HPX v1.11.0 反序列化类型混淆 漏洞概述 在 HPX v1.11.0 及更低版本中发现了一个不安全的反序列化漏洞。当反序列化不同类型的共享指针时,由于缺乏足够的类型检查,可能导致类型混淆(Type Confusion)。 该漏洞的根源在于 函数中,当遇到已存在的指针 ID 时,代码会直接进行浅拷贝(Shallow Copy),而没有验证当前反序列化的对象类型是否与原始类型一致。 影响范围 信息泄露:攻击者可以通过类型混淆读取任意内存地址,从而绕过 ASLR(地址空间布局随机化)。 控制流劫持:通过篡改虚函数表指针(v-pointer),攻击者可以劫持程序执行流。 任意代码执行:结合上述两点,攻击者可实现远程代码执行(RCE)。 权限提升:可能导致本地权限提升。 修复方案 建议在 函数中引入类型哈希(Type Hash)检查机制: 1. 在首次加载对象时,计算并存储其类型哈希。 2. 在后续遇到相同 ID 进行浅拷贝时,验证当前对象的类型哈希是否与存储的哈希匹配。 3. 如果不匹配,则抛出错误,防止类型混淆。 POC 代码提取 1. 地址泄露示例 (example_addr_leak.cpp) 2. 内存读取示例 (example_mem_read.cpp) 3. 控制流劫持示例 (example_vtable_hijack.cpp) 4. 核心漏洞代码片段 (Root Cause) 5. 建议修复代码