Insecure Object Serialization
不安全的对象序列化
描述
应用程序使用了来自不受信任数据的不安全反序列化方案。
不安全的对象反序列化可能导致:
- 任意远程代码执行 (RCE)
- 修改应用程序逻辑
- 数据篡改,例如绕过访问控制
由于缺乏现成的漏洞利用程序并且需要针对目标漏洞利用进行调整,因此很难利用反序列化漏洞。
建议
为了防止对象序列化漏洞,应用程序必须:
- 仅接受来自受信任来源的序列化对象
- 仅使用序列化原始数据类型
如果无法采取这些措施,请考虑以下事项:
- 在任何序列化对象上实施完整性检查(例如数字签名),以防止恶意对象创建或数据篡改。
- 在对象创建之前的反序列化过程中强制执行严格的类型约束,因为代码通常期望一组可定义的类。但是,已证明有绕过此技术的手段,因此不建议仅依赖此技术。
- 在可能的情况下,在低权限环境中隔离并运行执行反序列化的代码。
- 记录反序列化异常和失败,例如传入的类型不是预期类型或反序列化引发异常。
- 限制或监控执行反序列化的容器或服务器的传入和传出网络连接。
- 监控反序列化,如果用户不断进行反序列化则发出警报。
链接
- Java unmarsheller security
- Deserialization of untrusted data (OWASP)
- Java deserialization cheat sheet
- CWE-502: Deserialization of Untrusted Data
标准
- CWE_TOP_25:
- CWE_502
- OWASP_ASVS_L1:
- V5_5_1
- V5_5_3
- OWASP_ASVS_L2:
- V1_5_2
- V5_5_1
- V5_5_3
- OWASP_ASVS_L3:
- V1_5_2
- V5_5_1
- V5_5_3
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213
- SECURITY255
- SECURITY258
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5