写点什么

CPU 特性漏洞!如何更新 microcode 以缓解未被修复的 Spectre 漏洞问题?

  • 2020-04-12
  • 本文字数:1466 字

    阅读完需:约 5 分钟

CPU特性漏洞!如何更新microcode以缓解未被修复的Spectre漏洞问题?

引言

近来 Google 的 Project Zero 团队公布的 Spectre 和 Meltdown 漏洞,可谓一石激起千层浪,业内各个硬件软件厂商开源社区都在积极参与漏洞修复。


据悉,漏洞会造成 CPU 运作机制上的信息泄露,低权级的攻击者可以通过漏洞来远程泄露(浏览器形式)用户信息或本地泄露更高权级的内存信息。


Meltdown 是最早被修复的,在 Kernel 中开启 KPTI 就可以缓解该问题, Spectre 则依然在火热进行中。而作为漏洞的始作俑者 Intel,Spectre 漏洞的 Intel 官方缓解方案也于近日放出。 当然目前很多更新并非真正的修复,而是在最大程度抵御和缓解相关攻击。

更新 microcode

通过更新 microcode 和系统补丁可以缓解 Spectre Var. 2 漏洞,也就是 CVE-2017-5715 branch target injection。 除了在 BIOS 中可以更新 microcode 之外,Kernel 也提供了更新 microcode 的机制。本文只关注在如何在 RancherOS 上更新 microcode。


下载最新的 Intel microcode 版本,注意 microcode 一般并不是适用所有的 CPU,比如 20180108 这个版本,主要是以下 CPU 才会起作用:




下载并解压缩之后,你会发现一个是 intel-ucode 目录下一些文件,另外一个单独的 microcode.dat 文件。 前者是支持热加载方式,也是现在比较推荐的方式;后者是传统更新方式,需要在 initrd 中加入 microcode 加载。 对于 RancherOS,前者比较合适,使用起来相对简单。


若要在内核支持更新 microcode,需要在编译内核时加入以下配置(RancherOS 已经开启):


CONFIG_MICROCODE=yCONFIG_MICROCODE_INTEL=yCONFIG_MICROCODE_AMD=yCONFIG_MICROCODE_OLD_INTERFACE=y #支持传统方式,开启此项
复制代码


安装过程比较简单,几乎每个版本的 microcode 都有相应的 releasnote,大致如下:


# Make sure /sys/devices/system/cpu/microcode/reload exits:$ ls -l /sys/devices/system/cpu/microcode/reload
# You must copy all files from intel-ucode to /lib/firmware/intel-ucode/ using the cp command$ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/
# You just copied intel-ucode directory to /lib/firmware/. Write the reload interface to 1 to reload the microcode files:$ echo 1 > /sys/devices/system/cpu/microcode/reload
复制代码


无论更新成功与否,在 dmesg 中都会查看到相关信息,比如:


$ dmesg | grep microcode [   13.659429] microcode: sig=0x306f2, pf=0x1, revision=0x36 [   13.665981] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba [  510.899733] microcode: updated to revision 0x3b, date = 2017-11-17  # 这条msg很重要
复制代码


查看 cpuinfo,再次确认 microcode 版本,不同的 CPU 型号,升级后对应的 microcode 版本是不同的:


$ cat /proc/cpuinfo |grep "model\|microcode\|stepping\|family" |head -n 5cpu family   : 6model        : 63model name   : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz stepping     : 2microcode    : 0x3b #之前是0x36
复制代码


然后在 cloud-config 中在 runcmd 添加脚本,保证每次启动都加载最新版本的 microcode:


runcmd:- echo 1 > /sys/devices/system/cpu/microcode/reload
复制代码

总结

关于 Spectre Var. 2,我们依然在持续关注, 直接在内核编译中使用 Retpoline 指令替换技术,可以更简单方便的缓解 branch target injection, 现在内核已经支持了 Retpoline 指令替换的设置,但是也需要最新版本的 GCC 编译器的特性支持, 而带有 GCC 的新补丁的正式版本还没有发布,一旦 GCC 新版本发布,我们会马上更新内核并发布新的 RancherOS 版本。


2020-04-12 20:391483

评论

发布
暂无评论
发现更多内容

干货 | 用JAVA实现多语言翻译组件

LigaAI

Java 国际化

lsyncd实现文件实时同步

阿呆

lsyncd

解读新技术,解锁新玩法,HarmonyOS开发者日杭州站等你来参加

科技汇

大数据训练营 - 第二次作业hadoopRPC

西伯利亚鼯鼠

网络攻防学习笔记 Day80

穿过生命散发芬芳

网络攻防 7月日更

11道高频React面试题及详解,另附有React面试题集合

前端依依

面试 大前端 React

第七届军博会圆满闭幕,数军科技多项成果获关注

科技热闻

供应链、产品溯源以及区块链所面临的巨大阻碍是什么?

CECBC

有奖体验活动,最新1.3版本试用

Geek_6cdeb6

人工智能 机器学习 深度学习 学习 AI

手把手教你,从零开始搭建Spring Cloud Alibaba!这份笔记太牛了

技术实践 | 网易云信视频转码提速之分片转码

网易云信

七种颜色的事件风暴法

escray

学习 极客时间 7月日更 如何落地业务建模

为什么电脑自带的录屏功能不好用?

淋雨

视频剪辑 Camtasia 专业录屏

下一代人工智能:逻辑理解?物理理解?

安第斯智能云

人工智能

Tapdata 与巨杉数据库完成产品兼容互认证

tapdata

Tapdata 巨杉数据库 产品兼容性互认

Alibaba永远滴神!阿里内部最新Java基础到中高级核心知识手册

Java~~~

Java 编程 程序员 架构 面试

爬虫入门到放弃03:爬虫如何模拟人的浏览行为

叫我阿柒啊

爬虫 代理IP user-agent

浪潮云说直播间,就在今天!

模型端侧加速哪家强?一文揭秘百度EasyEdge平台技术内核

百度大脑

人工智能 深度学习 百度 飞桨

如何抓住用户体验的关键时刻?

石云升

用户体验 关键时刻 7月日更

完美收官!字节4面斩下2-2Offer,入职就是30K16薪,全凭这套“面试+架构进阶知识点”pdf

Java 程序员 架构 面试

如何实现70%丢包下音视频的高可用 - 数据篇

ZEGO即构

音视频 数据处理 传输协议 弱网环境高可用 Qo

百度智能云人脸离线识别SDK再升级,优化复杂光线识别效果,急速通行无惧暗光

百度大脑

人脸识别 百度智能云

Uber 多区域 Kafka 的灾难恢复

奔着腾讯去

Apache kafka 分布式

专科程序员与本科程序员之间有什么区别?薪资待遇又差多少?

Java 编程 程序员 架构 面试

去中心化交易所搭建|区块链数字货币交易平台开发

Geek_23f0c3

APP开发 去中心化交易所系统开发 区块链、

Realtime DB技术详解

安第斯智能云

数据

星环研发总监为你揭秘TDH8.0的前因后果 | TDH8.0 使用必读 3

星环科技

数据库 大数据 多模型数据

2021InfoComm|钉钉会议 Rooms 的 "全场景" 智能化解决方案

阿里云CloudImagine

音视频 钉钉 视频会议 会议 会议室

耗时半年,堪称神迹!阿里架构师整合出258W字Java全栈面试题

Java架构追梦

Java 阿里巴巴 面试 java架构 跳槽

天不生我SpringBoot高级笔记 编程万古无常夜!

白亦杨

Java springboot

CPU特性漏洞!如何更新microcode以缓解未被修复的Spectre漏洞问题?_文化 & 方法_Rancher_InfoQ精选文章