首页 > 其他分享 >KPTI——可以缓解“熔断” (Meltdown) 漏洞的内核新特性

KPTI——可以缓解“熔断” (Meltdown) 漏洞的内核新特性

时间:2024-06-10 11:32:38浏览次数:18  
标签:用户 TLB 熔断 页表 KPTI Meltdown 进程 内核

Linux 内核修复办法:内核页表隔离KPTl(kernel page table isolation)

  • 每个进程一张页表变成两张:运行在内核态和运行在用户态时分别使用各自分离的页表

  • Kernel页表包含了进程用户空间地址的映射和Kernel使用的内存映射

  • 用户页表仅仅包含了用户空间的内存映射以及内核跳板的内存映射

  • 当进程运行在用户空间时,使用的是用户页表

  • 当发生中断或者是异常时,需要陷入到内核,进入内核空间后,有一小段内核跳板将页表切换到内核页表
    image

  • KPTI最早是运用在x86上

  • KPTI补丁已经合并到Linux 4.15-rc4上

x86上的KPTI补丁主要工作:

  1. 内核页表和用户态页表的分离和切换
  2. 进程切换的优化:
  • 因为内核态的页表包含了所有地址空间的页表,所以可以安全的访问到用户态页表
  • 进程中用户态到内核态之间的切换,需要切换CR3寄存器
  • 采用per-cpu的PCID来优化

ARM上的KPTI

  • ARM64 只有Cortex-A75中招Meltdown漏洞
    ARM64上早已经采用了双页表的设计,但是。
  • ARM64上KPTI 的优化:
    • A75上虽然有两个页表寄存器,但是TLB上依然没法做到完全隔离,用户进程在meltdown情况下依然有可能访问内核空间映射的TLB entry
    • -个给当进程跑在内核态的使用,另外一个给进程跑在用户态每个进程上的ASID设置两份时使用。这样原本内核空间属于global TLB,就变成Process-Specific类型的TLB。
  • ARM64上TLB示意图

image

ASID的简介

  • 进程切换需要flush TLB,导致性能下降
  • TLB优化:(ASID)Address Space ID
    • Gobal类型的TLB:内核空间是所有进程共享的空间,因此这部分空间的虚拟地址到物理地址的翻译是不会变化的,可以理解为Global的。
    • Process-specific类型的TLB:用户地址空间是每个进程独立的地址空间。prev进程切换到next进程时,TLB中缓存的prev进程的相关数据对于next进程是无用的,因此可以冲刷掉,这就是所谓的process-specific的TLB。

ASID 优化

image

KPTI之前:

image

KPTI之后:

image

image

image

image

标签:用户,TLB,熔断,页表,KPTI,Meltdown,进程,内核
From: https://www.cnblogs.com/linhaostudy/p/18240520

相关文章

  • meltdown 安全漏洞原理是怎么样的?
    Meltdown是2018年初公开的一种严重的计算机安全漏洞,影响了多种处理器,包括英特尔、ARM和某些AMD处理器。其原理基于利用现代CPU的“推测执行”(speculativeexecution)和“缓存时间差异”(cachetiming)来泄露内存数据。以下是Meltdown漏洞的工作原理:基本原理推测执行(SpeculativeE......
  • 关于没有熔断降级导致服务重启问题
    场景1.k8s微服务触发重启容器配置的健康检查采用actuatorcurl127.0.0.1:8080/actuator/health2.容器重启钩子回调curl-XPOSThttp://127.0.0.1:8080/actuator/shutdown最终原因是因为调用第三方服务,超时设置3秒,重试3次,三方服务挂起导致tomcat连接池占满,健康检查请求进......
  • 微服务Spring Cloud17_熔断器Hystrix7
    一、简介Hystrix在英文里面的意思是豪猪,它的logo看下面的图是一头豪猪,它在微服务系统中是一款提供保护机制的组件,和eureka一样也是由netflix公司开发。主页:https://github.com/Netflix/Hystrix/ 那么Hystrix的作用是什么呢?具体要保护什么呢?Hystrix是Netflix开源的一......
  • 限流、熔断、降级
    目录一、限流-熔断-降级介绍1.1限流1.1.1限流指标TPSHPSQPS1.1.12限流方法流量计数器滑动时间窗口漏桶算法令牌桶算法1.2熔断1.2.1断路器的状态1.2.2需要考虑的问题1.2.3使用场景1.3降级1.4总结二、熔断限流技术选型2.1Hystrix2.2sentinel2.2.1Sentinel历史2.2.2Sent......
  • SpringBoot项目轻松集成Sentinel:熔断限流实战及核心代码解析
    一、引言Sentinel是阿里巴巴开源的一款轻量级流量控制组件,提供丰富的微服务流量控制能力,包括流量控制、熔断降级、系统负载保护等。本文将带你一步步实现在SpringBoot项目中集成Sentinel,实现服务的熔断限流,并给出关键代码示例及注意事项。二、集成Sentinel步骤添加依赖在......
  • Sentinel系列之(九)服务熔断
    服务熔断Sentinel整合Ribbon和OpenFeign@SentinelResource的fallback1.Ribbon系列1.1服务提供者新建cloudalibaba-provider-payment9003和cloudalibaba-provider-payment90049003和9004是一样的,以9003为例建Module【cloudalibaba-provider-payment9003】改POM<?xml......
  • 9.Polly在NET中的使用,重试、熔断、超时、降级、限流简单用法
    Polly是一个.NET弹性和瞬态故障处理库,允许开发人员以Fluent和线程安全的方式来实现重试、断路、超时、隔离、限流和降级策略。文档: https://gitee.com/hubo/Polly重试(Retry)出现故障自动重试,这个是很常见的场景,如:当发生请求异常、网络错误、服务暂时不可用时,就应该重试。......
  • Spring Boot2.x 集成 OpenFeign 实现 Hystrix 熔断降级与 Ribbon 负载均衡配置
    参考https://blog.csdn.net/zhangchaoyang/article/details/123453616https://blog.csdn.net/u010277958/article/details/88744263https://blog.csdn.net/iwlnner/article/details/110090595https://cloud.tencent.com/developer/article/2225692https://blog.csdn.net/z......
  • 在Spring Cloud中使用Hystrix服务完成熔断降级处理
    举例上次发布博文隔了好几天了,今天我们重点围绕SpringCloud的Hystrix服务的熔断降级处理进行,在之前篇的文章中,我们完成了SpringCloud的各个微服务模块的搭建,这个是既往的事实,如果你还不知道该如何搭建SpringCloud微服务,请参照我之前发的文章,SpringCloud系列文章就行。正式开始......
  • 写给开发者的软件架构实战:服务降级与服务熔断
    1.背景介绍随着互联网的发展,微服务架构已经成为企业应用中的主流。微服务架构将应用程序拆分成多个小的服务,这些服务可以独立部署和扩展。虽然这种架构带来了许多好处,如更高的灵活性和可扩展性,但它也带来了一些挑战。当服务之间的依赖关系复杂且网络条件不佳时,可能会导致服务之间的......