编码指针一致性

访客4年前黑客资讯683

控制流被劫持进攻是当今比较流行的拒绝服务攻击之一,包含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”)的详细地址室内空间还可以保证避免 暴力破解密码, *** 攻击在尝试破译以后程序流程很有可能会奔溃(它是此外一个创作者觉得是客观事实的假定)。

相关文章

国内访问被黑客封网站IP(黑客网站入侵)

国内访问被黑客封网站IP(黑客网站入侵)

本文目录一览: 1、网站被DDoS攻击怎么办?阿里云IP被封了 2、电脑论坛IP被封了,怎么办? 3、访问某网站被拦截,提示“当前访问疑似黑客攻击,已被创宇盾拦截。”怎么破? 网站被DDoS...

佰派智能锁怎么样 佰派智能锁参数

佰派智能锁怎么样 佰派智能锁参数

  传统的锁具根基上都被智能锁代替了,因为后者的成果性实在是过分于利便快捷了。面临市场的纷杂,品牌的良莠不齐,许多时候想买却不知道如何挑选。来看看佰派智能锁怎么样 佰派智能锁参数,仔细的相识一下这个锁...

FF赶走出纳事件怎么回事(劲爆!FF赶走出纳激怒恒

针对恒大提出的全面反诉,FF承认,根据此前双方签署的相关投资协议,恒大向FF派驻的出纳员拥有访问FF全部财务记录的权限,同时对每一项财务支出进行详细审核和批准。但“由于恒大拒绝履约,导致上述协议事实上...

手机摄像头被监视情况(手机摄像头被监控的可能性大吗)

手机摄像头被监视情况(手机摄像头被监控的可能性大吗)

本文目录一览: 1、手机被监视后能看到哪些内容? 2、手机前置摄像头被监视征兆 3、手机摄像头会不会被人监视? 手机被监视后能看到哪些内容? 手机被监视后对方能看到的内容具体如下:一、基本上...

深圳高端微信是真的吗,如何分辨他们真假【曹红燕】

深圳高端模特微信是真的吗,如何分辨他们真假【曹红燕】 今天给大家分享的内容是“深圳高端模特微信是真的吗,如何分辨他们真假【曹红燕】”,我是曹红燕,来自新疆维吾尔自治区,今年34岁,作为职业:海南中...

退款成功货不退的后果(退款不退货诈骗立案)

退款成功货不退的后果(退款不退货诈骗立案)

诈骗罪是指以非法占有为目的,用虚构事实或者隐瞒真相的方法,骗取数额较大的公私财物的行为。那么,淘宝买家退款不退货,属于诈骗罪吗? 网友咨询:然后退款属于诈骗吗?某宝支持假货仅退款不退货啊,卖家自动点的...