类型混淆漏洞
类型混淆漏洞 是什么?
类型混淆漏洞一种内存安全漏洞,代码以与对象实际分配类型不兼容的类型访问对象,通常可导致任意读写或代码执行。
类型混淆漏洞发生在程序通过指针或引用读写内存时,该指针的声明类型与底层对象的实际类型不一致。典型成因包括错误的向下转型、多态处理失误,或 JIT 的猜测式优化在攻击者改变结构形状后失效。一旦运行时把对象当成错误类型,方法表、vtable、长度字段以及内联数据都会被误解,攻击者由此获得受控的读写原语,常进一步升级为代码执行。Chrome 的 V8、Safari 的 JSC 等 JavaScript 引擎以及浏览器渲染器是常见目标,经常出现在 Pwn2Own。防御方法包括强类型系统、运行时类型检查、沙箱化和内存安全语言。
● 示例
- 01
CVE-2021-30551:V8 类型混淆漏洞作为 0-day 攻击 Chrome。
- 02
本应使用 dynamic_cast 的地方使用了 static_cast,导致子类写入了无关对象。
● 常见问题
类型混淆漏洞 是什么?
一种内存安全漏洞,代码以与对象实际分配类型不兼容的类型访问对象,通常可导致任意读写或代码执行。 它属于网络安全的 应用安全 分类。
类型混淆漏洞 是什么意思?
一种内存安全漏洞,代码以与对象实际分配类型不兼容的类型访问对象,通常可导致任意读写或代码执行。
类型混淆漏洞 是如何工作的?
类型混淆漏洞发生在程序通过指针或引用读写内存时,该指针的声明类型与底层对象的实际类型不一致。典型成因包括错误的向下转型、多态处理失误,或 JIT 的猜测式优化在攻击者改变结构形状后失效。一旦运行时把对象当成错误类型,方法表、vtable、长度字段以及内联数据都会被误解,攻击者由此获得受控的读写原语,常进一步升级为代码执行。Chrome 的 V8、Safari 的 JSC 等 JavaScript 引擎以及浏览器渲染器是常见目标,经常出现在 Pwn2Own。防御方法包括强类型系统、运行时类型检查、沙箱化和内存安全语言。
如何防御 类型混淆漏洞?
针对 类型混淆漏洞 的防御通常结合技术控制与运营实践,详见上方完整定义。
类型混淆漏洞 还有哪些其他名称?
常见的别称包括: 错误转型, 类型不匹配漏洞。
● 相关术语
- vulnerabilities№ 1193
释放后使用
程序在内存被释放之后仍继续使用该内存的安全缺陷,通常使攻击者得以控制对象状态并劫持执行。
- vulnerabilities№ 667
内存破坏
对一类漏洞的统称:程序在预期内存范围之外读写,破坏类型安全、控制流或数据完整性。
- appsec№ 564
JIT 喷射
一种利用 JIT 编译器在合法生成的可执行内存页中夹带攻击者选定的可执行字节的漏洞利用技术。
- appsec№ 129
浏览器沙箱
操作系统层的隔离机制,限制浏览器的渲染进程和辅助进程,防止被攻陷的网页代码读取文件系统或其他应用。
- appsec№ 1075
推测执行侧信道
一类微架构漏洞,CPU 沿本不应执行的路径推测执行指令后,通过缓存和预测器泄露数据。
- vulnerabilities№ 399
漏洞利用
利用某个漏洞、引发代码执行、权限提升或信息泄露等非预期行为的代码、数据或技术。