编码指针一致性

访客4年前黑客资讯661

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

相关文章

找球球大作战黑客(外接球球心怎么找)

这个几何体为底面为等腰直角三角形ABC,直角顶点记为B,PA⊥平面ABC,这些几何体基本上上都是长方体的一部分,将其。 可以直接找球球大作战官方留言,他们会帮你处理的,你最好好好跟他(她)说说 这个问...

成功的网络营销需注重这三大步骤

网络营销是一门很大的学问,对于一些人来说可能算得上是比较入门的,但是如果你是想要真正的给公司做出好的口碑的话绝对不是件容易的事。我们需要做的是要认真的做好每一个步骤,这样的话才可以有更好的效果,下面我...

怎样可以拦截查看他人微信聊天记录

. 生活终于慢慢重回正轨,这离不开医护人员的守护,疫情之路,白衣执甲,“逆”行到底,你们是这个时代最可爱的一群人,在护士节的专属节日里,向可爱可亲的护士们,送上我们最真挚暖心的祝福,下面友谊长存小编...

木马病毒,谁知道怎么找黑客呢,找黑客入侵时时彩网

admin/live/header.php:(line:16-21) 182.18.31.71不需求其他字段{"id" : "1","name" : "知道创宇"}iis支撑各种脚本,假如能写w...

小米Note工程机现身 大黑边无敌了!

每一款手机上在公布以前必须历经许多 个环节,例如早期设计方案、硬件配置产品研发这些,最后做出去工程机以后代表着该设备不容易方向上的改动了,但一些关键点上的变化依然会有的。 日前,一款序号为X5LP2...

epic games平台的游戏能下载到百度网盘吗

epic games服务平台的手机游戏可否免费下载到百度云网盘?百度云网盘十分的好用是许多 客户下游戏的地区,那麼epic games服务平台中的手机游戏是否可以使免费下载到百度云网盘呢?下边就给大家...