0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

芯片漏洞实战之破解KASLR

Linux阅码场 来源:https://paper.seebug.org/497/ 作者:蒸米,白小龙 2020-11-26 13:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Meltdown和Spectre分析以及CPU芯片漏洞攻击实战,教你如何破解macOS上的KASLR。

作者:蒸米,白小龙 @ 阿里移动安全 来源:

https://paper.seebug.org/497/

0x00 影响

早上突然就被Meltdown和Spectre这两个芯片漏洞刷屏了,但基本上都是一些新闻报道,对漏洞的分析和利用的信息基本为0。作为安全研究者,不能只浮在表面,还是要深入了解一下漏洞才行,于是开始研究这方面的资料。结果发现其实这个硬件漏洞的影响非常广,不光是IntelARMAMD也受影响,只是AMD的影响比较小罢了。因此基本上所有的操作系统(Windows,macOS,LinuxAndroid等)都有被攻击的风险。漏洞有两种攻击模式:一种被称为Meltdown,是在用户态攻击内核态,造成内核信息泄露。另一种被称为Spectre,一个应用可以突破自己的沙盒限制,获取其他应用的信息。另外,因为是硬件漏洞,这个攻击对云的影响非常大,利用这个漏洞,一个guest可以获取host或同一台服务器上其他guest的信息,可以说是一个非常严重的漏洞,因此亚马逊和google都在紧急加班修复漏洞。比如google就公布了漏洞修复的进度在:https://support.google.com/faqs/answer/7622138。虽然是硬件漏洞,但是在系统或软件层面上通过牺牲性能的方法还是可以进行修补的。

0x01 原因

那么我们现在知道漏洞很严重了,那么漏洞形成的原因是什么呢?关键点在于Speculative execution(推测执行)。推测性执行是一种优化技术,CPU会执行一些可能在将来会执行任务。当分支指令发出之后,传统处理器在未收到正确的反馈信息之前,是不会做任何工作的,而具有预测执行能力的新型处理器,可以估计即将执行的指令,采用预先计算的方法来加快整个处理过程。如果任务最终没有被执行,CPU还可以回滚到之前的状态,就当做什么都没发生过一样。但是这样真的安全吗?答案是,并不安全。攻击者通过寻找或构建一些指令就可以在CPU回滚的时间窗口里进行一系列的攻击。比如Google Blog中提到的边界检查绕过(CVE-2017-5753),分支目标注入(CVE-2017-5715), 恶意数据缓存加载(CVE-2017-5754)。

举个例子,如果CPU执行下面这段代码:

arr1->length没有被缓存的时候, CPU会从arr1->data[untrusted_offset_from_caller]处读取数据,如果untrusted_offset_from_caller的值超过arr1->length,就会造成越界读。当然,正常情况下这并不会出现什么问题,因为在执行到判断语句那一行的时候,CPU发现不对,后面的语句不应该被执行,于是会将状态回滚到越界读之前。

但是接下来,问题就出现了。假设arr1->length,arr2->data[0x200]和arr2->data[0x300]都没有被缓存,CPU会继续推测执行下面的代码,在这里index2会根据value&1产生两个不同的值0x200,0x300,而Value就是越界读到的值。接下来,代码会根据Value的值去读取arr2->data[0x200]或arr2->data[0x300]的值并且这个值会被加入到缓存里。接下来,我们可以再次尝试去读取arr2->data[0x200]和arr2->data[0x300],读取时间短的那个值说明被缓存过了,因此就可以判断出value&1的值为0还是1,从而做到内核信息泄露。

其实,在google的blog发布之前,就已经存在类似的攻击了,只是危害没有这么大而已,今天我们就直接实战一个利用Intel CPU芯片漏洞来破解macOS KASLR的攻击。

0x02 芯片漏洞实战之破解KASLR

这种攻击比较简单,但是是后面高级攻击的基础,因此我们先从这个攻击讲起。之前我们讲到,为了让CPU效率更高,它们依靠推测性执行在任务到来之前就提前执行任务。同样,数据预取就利用这个思想推测性地先将数据加载到缓存中。Intel的CPU有五个软件预取指令:prefetcht0,prefetcht1,prefetcht2,prefetchnta和prefetchw。这些指令作用是提示CPU,告诉他一个特定的内存位置可能很快被访问。然而,Intel的手册中却提到,预取“未映射到物理页面的地址”会导致不确定的性能损失。因此,我们可以通过CPU预读指令执行的时间长短来判断这个地址有没有被映射到物理页面上。

我们知道KASLR的原理是在内核的基址上增加一个slide,让攻击者无法猜测内核在内存中的位置。但是内核肯定是被映射到物理页面上的,因此我们可以使用预取指令去遍历内核可能的起始地址,如果执行预取指令的时间突然变短,就说明我们猜中了内核的起始地址。我们在网上成功找到了破解macOS 10.13 KASLR的POC,并做了一点简单的修改:https://pastebin.com/GSfJY72J

其中关键代码如下:

这是一段汇编,参数会传入想要预取的地址,然后利用rdtscp和rdtscp来统计指令执行的时间,并返回。于是我们从内核可能的起始地址开始,不断地执行这段汇编代码,直到我们找到内核的起始地址为止。

可以看到在0x15c00000这一行,指令执行的时间明显缩短了。因此,我们可以猜出Kernel Side为0x15c00000。

0x03 修复

根据某内部漏洞修复人员在twitter上的回复,苹果已经在macOS 10.13.2上对此类芯片漏洞进行了修复,采用了牺牲性能的针对用户态使用两次映射的方式来解决该问题。并号称10.13.3上有更好的解决方案。另外iOS的A*系列芯片暂时还不受这类漏洞的影响。

0x04 总结

本篇文章只是给芯片的一系列漏洞开了个头,我们随后还会有更多关于芯片漏洞的分析和利用实战,欢迎继续关注本系列的文章,谢谢。

参考文献:

1. https://googleprojectzero.blogspot.hk/2018/01/reading-privileged-memory-with-side.html

2. https://siguza.github.io/IOHIDeous/

3. Prefetch Side-Channel Attacks: Bypassing SMAP and Kernel ASLR, CCS 2016.

责任编辑:PSY

原文标题:性能VS安全?CPU芯片漏洞攻击实战(1) - 破解macOS KASLR篇

文章出处:【微信公众号:Linuxer】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    462

    文章

    53534

    浏览量

    459065
  • 漏电
    +关注

    关注

    4

    文章

    161

    浏览量

    21261
  • intel
    +关注

    关注

    19

    文章

    3506

    浏览量

    190562

原文标题:性能VS安全?CPU芯片漏洞攻击实战(1) - 破解macOS KASLR篇

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    智慧物流提速:RFID如何破解仓储“效率困局”?

    转型夯实智慧物流基础”,在众多技术方案中,RFID(无线射频识别)仓储管理系统凭借“秒级盘点”“动态可视”的核心优势,成为企业落实规划要求、破解传统仓储痛点的关键抓手。今天,我们就来拆解RFID的技术逻辑与实战价值。 一、从“
    的头像 发表于 11-17 14:20 103次阅读

    EMC电路怎么整改:如何缩短整改周期的实战案例

    EMC电路怎么整改:如何缩短整改周期的实战案例|南柯电子
    的头像 发表于 10-20 10:17 250次阅读

    中科微电ZG2131:300V驱动芯片国产化替代的实战样本

    中科微电ZG2131的崛起,标志着国产驱动芯片从“可替代”向“优替代”的跨越。它不仅打破了进口芯片的市场垄断,更重塑了行业对国产芯片的认知——国产器件不再是“无奈选”,而是“优化
    的头像 发表于 10-17 09:47 240次阅读
    中科微电ZG2131:300V驱动<b class='flag-5'>芯片</b>国产化替代的<b class='flag-5'>实战</b>样本

    工业交换机破解复杂车间组网难题,技术人必看实战指南

    如何破解?本文将深度解析工业交换机的技术优势,并分享实战组网方案。 为什么普通交换机无法胜任工业场景? 环境适应性差。 常规交换机在高温、多粉尘、强电磁干扰环境下故障率高,导致生产中断。 网络稳定性不足。 数据延
    的头像 发表于 08-25 10:09 372次阅读

    以驱动芯片破解扫地机三大核心痛点

    设备的行走稳定性、续航时长与适配能力。钧敏科技深耕行业多年,主推英能的ZH6358 与必易微的KP93102 驱动芯片方案,正以硬核技术破解三大核心痛点,为扫地机厂商与用户带来双重革新。
    的头像 发表于 06-10 09:45 1007次阅读

    紫光同芯安全芯片如何破解防伪溯源行业痛点

    近日,2025安全识别技术展览会暨高峰论坛期间,紫光同芯高级产品经理刘嘉维发表了题为《防伪溯源最佳实践安全芯片技术》的主题演讲,系统性阐述了安全芯片如何破解防伪溯源行业痛点,并分享了
    的头像 发表于 06-05 10:24 968次阅读

    如何利用iptables修复安全漏洞

    随着网络安全威胁的不断增加,安全中心扫描越来越频繁。尤其是在大数据安全中心的漏洞报告中,许多漏洞在生产环境中无法通过服务升级来修复。
    的头像 发表于 03-18 18:02 874次阅读

    微软Outlook曝高危安全漏洞

    近日,美国网络安全和基础设施安全局(CISA)发布了一项紧急安全公告,揭示了微软Outlook中存在的一个高危远程代码执行漏洞(CVE-2024-21413)。该漏洞的严重性不容忽视,已成为恶意网络
    的头像 发表于 02-10 09:17 821次阅读

    AMD与谷歌披露关键微码漏洞

    近日,AMD与谷歌联合公开披露了一个在2024年9月发现的关键微码漏洞,该漏洞主要存在于AMD的Zen 1至Zen 4系列CPU中,特别是针对服务器/企业级平台的EPYC CPU。 这一漏洞被编号
    的头像 发表于 02-08 14:28 799次阅读

    华为荣获BSI全球首批漏洞管理体系认证

    近日,华为宣布成功获得国际领先的标准、测试及认证机构英国标准协会(BSI)颁发的全球首批漏洞管理体系认证证书。这一殊荣标志着华为在漏洞管理方面达到了国际领先水平,其卓越的漏洞管理及实践得到了权威认可
    的头像 发表于 01-22 13:42 850次阅读

    LwIP应用开发实战指南—基于野火STM32

    LwIP应用开发实战指南—基于野火STM32—20210122
    发表于 01-17 14:34 9次下载

    华为通过BSI全球首批漏洞管理体系认证

    近日,华为通过全球权威标准机构BSI漏洞管理体系认证,涵盖了ISO/IEC 27001信息安全管理、ISO/IEC 29147漏洞披露及ISO/IEC 30111漏洞处理流程三大国际标准。华为凭借其
    的头像 发表于 01-16 11:15 1021次阅读
    华为通过BSI全球首批<b class='flag-5'>漏洞</b>管理体系认证

    浅谈加密芯片的一种破解方法和对应加密方案改进设计

    Key计算临时过程秘钥Key’,再使用临时过程秘钥Key’对数据做加解密和密文通讯,这样来做到每一颗芯片、每一次通讯的加密数据都是不一样,防止数据在通讯线路上被破解。 如上图,主MCU函数FUNC
    发表于 12-20 15:31

    浅谈加密芯片的一种破解方法和加密方案改进设计

    Key计算临时过程秘钥Key’,再使用临时过程秘钥Key’对数据做加解密和密文通讯,这样来做到每一颗芯片、每一次通讯的加密数据都是不一样,防止数据在通讯线路上被破解。 如上图,主MCU函数FUNC
    发表于 12-20 15:10

    电源设计对热阻的认识

    电源热设计--对热阻的认识 之前做了这么多电源还有高频机,我一直没有想过如何设计散热,或者说怎么样的散热设计才不会让芯片过温而损坏。对于发热元件,散热是必须要考虑的事情,好的散热有利于元件最大化
    的头像 发表于 12-18 11:24 912次阅读
    电源设计<b class='flag-5'>之</b>对热阻的认识