漏洞概述 在 Boost Serialization v1.89.0 及以下版本中,存在不安全的反序列化问题。在特定条件下,未经验证的输入可能导致类型混淆和所有权混淆,从而引发地址泄漏、任意内存读取、VTable 劫持、双重释放、拒绝服务以及任意代码执行。Boost Serialization 库支持指针的序列化,这些指针可以被滥用以引用归档中的任意对象。 类型混淆发生在两个不同类的对象共享同一内存时,且它们的类方法在该内存上操作。所有权混淆发生在运行时违反了所有权模型,例如,原本假设唯一的指针在反序列化后共享,可能导致双重释放。 影响范围 类型混淆: - 地址泄漏 - 任意内存读取 - VTable 劫持 所有权混淆: - 双重释放 修复方案 1. 类型混淆修复: - 验证反序列化的预期类是否与对象引用匹配。 - 添加检查 和 以验证类型。 - 对于多态类型,可能需要遍历类继承关系。 2. 所有权混淆修复: - 不允许 被其他 引用。维护一个向量或查找唯一拥有的地址。 - 如果 尝试引用已由另一个 持有的指针,则报错。 - 指针仅在通过 存储时注册到向量中,以便为弱非拥有(原始)指针提供允许。 POC 代码 总结 该漏洞主要涉及 Boost Serialization 库中的不安全反序列化问题,可能导致多种严重的安全风险。修复方案包括验证类型和所有权模型,以防止类型混淆和所有权混淆。