CPU芯片漏洞与macOS KASLR:Spectre攻击原理及防御措施
从CPU那一侧产生的, 属于是那些什么叫侧信道漏洞的东西了, 像那个Spectre, 或者是Meltdown, 又或者是L1TF这些种类, 它们是可以把macOS系统里的KASLR保护给绕开躲过去的, 这样一来, 就使得内核地址这一类的事情发生泄露变成了有可能的一件事情, 关于KASLR这个机制来说的话它只是单纯地增加了那个想要进行攻击的人所要付出的所谓成本罢了, 它是根本就不能用来替代对底层硬件漏洞进行修复工作的, 以下就是对于这些问题的相关原理的一些说明, 同时也是为了给出相应的防御方案内容的。

核心原理

KASLR这个东西, 就是 Kernel Address Space Layout Randomization, 它是通过把内核内存的那个大布局给随机化了一下, 好让那些攻击者没法儿直接就能定位到内核里的函数还有数据到底是藏在哪里的。
可是, 在CPU的那个最底层的微架构那里头, 存在侧信道漏洞, 这种漏洞它会去利用分支预测或者是缓存时序的这些个信息信息, 这样一来, 它就可以在用户态那个地方去读取内核内存里面的内容了, 进而拿到 KASR也就是 KASLR随机化之后产生的那个实际的地址, 这么一来的话, 这个随机化的机制就失效了。
苹果公司已经在2018到2019年期间, 对于受到影响的Intel芯片、AMD芯片以及Apple Silicon芯片, 发布了相关的内核补丁工作。
其中采用的核心技术手段包括KPTI(也就是我们说的内核页表隔离技术)还有分支预测器的隔离方案。你要是想知道具体的CVE编号细节的话, 可以去苹果公司的官方安全更新页面去一个一个地进行核对确认才行。
性能与安全的权衡

要缓解CPU侧信道漏洞, 就得把内核态和 user 态弄出严格的隔离感, 不过这种做法需要支付相应的代价, 这些代价包括:
KPTI这个技术会带来一种结果, 就是这个结果是上下文切换的开销增加了, 然后在一个典型的场景里面, 性能的下降幅度是处于百分之十到百分之三十之间的这样一个区间。
因为分支预测器刷新了, 系统调用的延迟就增加了嘛。
有部分macOS的系统版本, 是因为要考虑兼容这一方面的问题, 所以就把那些还没有把安全风险完全处理掉的那个程序调用通道给保留下来了。
运维的决策原则是要这样定, 也就是在生产的环境之中必须得去启用那些完整的缓解措施, 这个事是不接受为了性能方面就关闭掉KPTI或者也关闭掉KASLR的这种操作的。
防御与运维措施

1. 系统补丁: 把macOS以及服务器的软件更新至最新版本, 这个新版本里要包含对CPU漏洞进行缓解的全部措施, 同时呢, 还需要去对照Apple安全更新公告来确认是否覆盖对应的CVE。
2. 内核启动参数:确认未通过kern.bootargs禁用kpti、kaslr相关选项,用ioreg -l | grep -i kpti验证生效状态。
3. 微码更新: 系统会通过NVRAM或者是通过固件更新的形式, 来加载Intel、AMD以及Apple这些厂商发布的最新一版的CPU微码, 这样做是为了确保在硬件的层面上, 相关的安全缓解措施能够被落实到位。
4. 最小暴露面的意思是, 要把那些不需要的远程访问功能给关掉, 像是VNC和SSH这些东西都要停掉, 然后去限制一下管理端口的来源IP是谁, 通过这么做来把侧信道可能被远程利用的时间窗口给缩小了。
5. 要把高风险的负载给隔离开: 在多租户环境里面, 或者在容器环境里面, 使用独立的虚拟机去做这件事, 这样是为了避免因为共用cpu缓存和分支预测器, 而导致出现跨租户的侧信道攻击这个问题。
6. 监控与审计是这么做的, 大家要把那些不正常的内核访问日志弄出来, 还要把那些非预期的性能下降情况也给找出来, 然后把它们都纳入到告警里面去, 除此之外呢, 大家要定期对官方发布的那些安全公告进行复核。
常见误区

很多人觉得只要开了KASLR就会安全, 但其实CPU的硬件漏洞完全可以绕过地址随机化机制, 要知道KASLR只是纵深防御里的其中一层罢了。
人们往往觉得, 内网环境是不需要去特别关注的。然而事情的实际状况是, 侧信道攻击这种现象可以在本地进程之间发生。因此, 对于使用多用户的macOS系统以及共享开发机的情况来说, 同样存在着受到影响的风险。
性能方面的损失如果特别大, 就可以选择关闭, 以此来得到一定程度的缓解。可是, 一旦这种设置被关了之后, 那些对内核层面的内存隔离有严重依赖的情况, 比方说多用户一起使用的环境, 还有容器运行的场景之类的, 全都失去了保护, 彻底暴露在风险里面。
快速检查清单
这个系统目前是属于最新版本的安全更新。
[ ] KPTI、KASLR未被启动参数禁用
[ ] CPU微码已更新至厂商最新
已经实施了限制措施, 针对远程管理端口所允许的访问来源IP地址。
多租户环境这个情况里面, CPU缓存隔离这一步骤已经顺利完成。
已经把出现性能异常的指标, 全都放进了正在运行的监控以及告警流程里面去进行查看和管理。
上述各项措施的来源, 是由苹果公司发布的那个安全公告, 还有英特尔公司以及超微半导体公司的官方缓解指导文件共同构成的, 但是关于具体怎么进行部署这一事项, 还是要以当前所使用的系统版本里面的官方提供的那些文档为依据, 从而确定下来的。
常见问题
《CPU芯片漏洞与macOS KASLR:Spectre攻击原理及防御措施》主要讲什么?
从CPU那一侧产生的, 属于是那些什么叫侧信道漏洞的东西了, 像那个Spectre, 或者是Meltdown, 又或者是L1TF这些种类, 它们是可以把macOS系统里的KASLR保护给绕开躲过去的…
文章提到了哪些重点?
苹果公司已经在2018到2019年期间, 对于受到影响的Intel芯片、AMD芯片以及Apple Silicon芯片, 发布了相关的内核补丁工作;
文章给出了哪些建议?
1. 系统补丁: 把macOS以及服务器的软件更新至最新版本, 这个新版本里要包含对CPU漏洞进行缓解的全部措施, 同时呢, 还需要去对照Apple安全更新公告来确认是否覆盖对应的CVE。