JS `V8` `CFI` (Control Flow Integrity) 保护机制与绕过研究

大家好,我是今天的主讲人,很高兴能和大家一起聊聊 JS V8 引擎的 CFI(Control Flow Integrity)保护机制,以及如何绕过它。这可是个相当有意思的话题,涉及到编译原理、漏洞挖掘、安全攻防等多个领域,保证让大家听得津津有味,并且收获满满! 开场白:CFI,安全的守护神? 想象一下,你正在玩一个超级玛丽的游戏,但是突然之间,游戏的代码被黑客修改了,玛丽不是跳到终点旗帜,而是直接跳到游戏崩溃的地方。这听起来是不是很糟糕? CFI,就是为了防止这种“跳跃错误”而生的。它就像一个严厉的交通警察,时刻检查程序的执行流程,确保程序只能按照预定的路线行驶,不能随意乱窜。 第一部分:什么是 CFI? 为什么要 CFI? 1.1 什么是 CFI? CFI,全称 Control Flow Integrity,控制流完整性。它是一种安全机制,旨在防止攻击者通过篡改程序的控制流来执行恶意代码。 简单来说,CFI 通过在编译时插入一些检查代码,确保程序在运行时只能跳转到预期的目标地址。如果程序试图跳转到未经授权的地址,CFI 就会阻止这次跳转,从而防止攻击。 1.2 为什么要 CFI? 传 …