控制流被劫持进攻是当今比较流行的拒绝服务攻击之一,包含ROP、JOP这些。相对的减轻、防御措施则包含数据信息实行维护DEP、栈维护、详细地址随机化ASLR、控制流一致性CFI这些。之上对策是大伙儿较为普遍和常见的,也是有很多人 写了很多的类似文章开展剖析。如今我觉得给大伙儿详细介绍非常少有些人谈及的一种防御措施——编码指针一致性CPI,期待对大伙儿有所裨益,疏漏之处,还请大伙儿吝惜指正。
CPI即code-pointer integrity,是由Volodymyr Kuznetsov(可译者库兹涅佐夫,很带劲是否有,强烈推荐大伙儿去看一看他的视頻,那英文更带劲)等于2014年明确提出的一种防御力控制流被劫持进攻的体制。核心内容是将过程占有的运行内存区划为缓冲区(safe region)和常规区(regular region),并根据硬件配置(也是有手机软件 *** ,但不常见)对2个地区干了隔离。缓冲区只有储放比较敏感指针和元数据(metadata,用于叙述比较敏感指针偏向目标的值,详细地址上末地,及其分派的时钟频率id,如下图所显示),另外对缓冲区的浏览要不是在编译程序时证实安全性的,要不是根据运作时安全大检查的。对常规区的浏览沒有一切独特之处。
运行内存系统分区如下图所显示:
例如下列这一段编码:
在CPI体制下,相匹配的过程在运行内存中应该是那样的:
CPI假定 *** 攻击早已有充足强劲的工作能力,她们:
对过程运行内存有彻底的决策权,但不可以改动代码段
能够对随意详细地址(代码段外的)开展读写能力
不可以干预程序流程载入
那样的假定早已大大的看低了 *** 攻击的工作能力,另外也可以确保编码插桩的开展和地区隔离的执行。
在落实措施时,是根据下列流程来开展的:
对源代码开展静态数据剖析
静态数据剖析时可能对比较敏感指针开展鉴别。假如一个指针的种类是比较敏感的,那麼这一指针便是比较敏感的。比较敏感种类关键包含:
偏向涵数的指针
偏向比较敏感种类的指针
有组员是比较敏感种类的复合型种类(建筑结构或数组)
泛型指针(void*, char*, 在界定建筑结构或类之前就申明的指针)
客户自定的比较敏感种类 (如储存有电脑操作系统UID信息内容的建筑结构)
全部在编译程序或运作是隐式形成的编码指针(回到详细地址,C 虚函数表,setjmp缓存文件)
此外,全部对比较敏感指针开展实际操作的指令也必须被鉴别,关键包含:
解引入
指针计算
分派或增加内存
因为比较敏感指针种类里包括char*那样的泛型指针,因此静态数据剖析的时候会看低静态数据指针总数,为了更好地降低花销,CPI将做为libc字符串函数主要参数和偏向变量定义的char*指针觉得不是比较敏感的。
二.编码插桩
编码插桩的目地取决于:
确保全部比较敏感指针储存在缓冲区
运作时建立和传送这类指针的有关元数据
解引入时查验元数据
插桩时可能在缓冲区和常规区都分派室内空间给比较敏感指针,但另外只有有?个是合理的。那样做可以处理运行内存合理布局更改产生的兼容问题,另外也可以防止相近void*那样的指针的敏感度发生改变产生的难题。那样的计划方案可以依照指针在常规区的偏移来测算其在缓冲区的相对详细地址。
静态数据剖析全过程中早已找到对比较敏感指针开展实际操作的指令,插桩可能对其开展目的性的改变,建立新的或是是立即延用以前现有的元数据。在其中,对比较敏感指针开展载入和储存的指令可能由CPI模式定义的指令替代以将比较敏感指针从缓冲区取下或是是存进缓冲区。call指令和ret指令的维护可能根据安全性栈(safe stack)来开展。
比较敏感指针的每一次解引入都需要开展插桩,便于在运作时查验元数据来检验该指针是不是安全性。泛型指针在缓冲区和常规区都占据运行内存,要不是比较敏感指针,则将其元数据中的末地设定为超过上界,这样一来,浏览元数据时便会评定为非法访问,进而变为浏览常规区开展相对实际操作。
下列是插桩全过程中出示的一部分接口函数:
三.隔离缓冲区
执行隔离的具体办法是与系统架构图有关的。关键有:
x86-32构架
在这里构架下,CPI取决于硬件配置段维护,促使缓冲区只有根据特殊、专用型的段存储器浏览,事实上是将该存储器作为程序流程装车器来应用。考虑到以下编码精彩片段:
隔离后具体指令变成:
这里应用gs存储器来执行隔离,而syscall指令通常还要浏览该存储器,因此CPI改变指令,禁止使用了有关实际操作。
x86-64构架
此构架下段维护已没法确保,但仍能够根据信息内容掩藏进行隔离,由于常规区中的详细地址不容易偏向缓冲区(不然便是比较敏感指针),信息内容也就不容易泄漏(创作者觉得这是一个客观事实,但趣味的是,这实际上仅仅一个不一直创立的假定)。该构架下48bit(Linux核心将x86-64的过程详细地址室内空间界定为“48 bit – 1 protect page”)的详细地址室内空间还可以保证避免 暴力破解密码, *** 攻击在尝试破译以后程序流程很有可能会奔溃(它是此外一个创作者觉得是客观事实的假定)。
睡眠对于新生儿来说是非常重要的,由于新生儿的大脑还未发育完全,因此好的睡眠质量是有助于宝宝的发育的,但是不少父母发现宝宝睡觉的时候容易醒,宝宝睡眠特别浅怎么办,如何判断新生儿睡眠是否正常呢。 新生儿...
获得奥斯卡奖的电影(精选20部往年奥斯卡获奖影片) 最近奥斯卡入围影片名单已经公布,作为世界久誉盛名且具有影响力的的电影奖项,奥斯卡推动了世界优秀电影人的创作,也让越来越多的佳片进入了普通大众的视野...
青春的梦想 青春的奋斗 | 金发小妞卖地瓜——一对美国姐妹的中国梦 “烤地瓜多少钱一个,是黄瓤的不?”日前,刚从医院结束一天见习生活的伊亚娜走在沈阳街头,在一个烤地瓜摊前操着地道东北口音问道...
本文目录一览: 1、如何用kali利用wifi入侵手机 2、玩kali怎么避免不进监狱? 3、怎么使用kali linux入侵.asp网站 4、虚拟机内kali怎样攻击校园网 5、ka...
1.两食指分别顶着刀叉柄 西餐的刀叉拿法是怎样的呢?最标准的拿法是,两食指分别顶着刀柄和叉柄。不要用两手的手指握实了刀柄叉柄,不雅观且需更为用力。 2.左叉右刀 左叉右...
嗨,大家好,欢迎收看本期的小Q会生活。我是小Q。有些人脸上平时会无缘无故长出一些脂肪粒,那脂肪粒长在脸上是非常难看的,有什么方法可以消除脂肪粒呢?今天小Q来教大家几个方法,我们一起来看一下吧。...