Linux 6.2 为 AArch64 实现动态 ShadowCallStack 支持


使用 Clang 构建的 Linux 内核在 5.8 版本中已支持 ShadowCallStack (SCS)。ShadowCallStack 是一种 LLVM 插桩模式,可将函数的返回地址保存到非叶函数的函数 prolog 中单独分配的 ShadowCallStack,并从函数 epilog 中的 ShadowCallStack 加载返回地址,从而防止返回地址覆盖(比如堆栈缓冲区溢出)。返回地址也存储在常规堆栈中,以便与展开程序兼容,但除此之外就没有用处。这样可以确保攻击行为(修改常规堆栈上的返回地址)不会对程序控制流造成任何影响。

在 aarch64 上,此插桩机制使用x18寄存器来引用 ShadowCallStack,这意味着不必将对 ShadowCallStack 的引用存储在内存中。因此,实现的运行时可避免将 ShadowCallStack 地址暴露给能够读取任意内存的攻击者 。

目前尚处于开发阶段的 Linux 6.2 正在实现动态 ShadowCallStack,以避免 SCS 在支持指针身份认证 (PAC) 的处理器上的开销。

正如上文所提到的,ShadowCallStack 对于防止返回地址覆盖(比如堆栈缓冲区溢出)很有用。但是在具有指针身份验证的 AArch64 处理器上,很难证明 SCS 的有用性。因此对于 Linux 6.2,计划启用动态 SCS 支持,允许它在启动时进行启用/禁用。此项动态 SCS 支持特性是在启动/运行时通过代码修补完成的。

因此,对于那些由于其他硬件保护已经到位而不想为其 AArch64 SoC 提供此安全功能的用户来说,不需要禁用 SCS 的替代内核构建。通过 Clang 为 ARM64 实现动态 SCS 支持的代码如果没有出现任何问题,将在下个月提交到 Linux 6.2 合并窗口。


相關推薦

2022-11-21

RHEL 完全兼容,由 CentOS 创始人 Gregory Kurtzer 创建和领导,支持 x86_64 和 AArch64 处理器架构。 新版下载地址:https://rockylinux.org/download/ 主要变化 NetworkManager 已 rebase 到 1.40。此版本的 NetworkManager 注释可在此处获得。 新的 mod

2023-05-09

GCC 8.0+ 是构建主机的最低要求版本 此版本中的 BitBake 支持新的 addpylib 指令,以在层内启用 Python 库。有关详细信息,请参阅扩展 Python 库代码。 BitBake 有多项内部更改,这些更改可能会提高内存和磁盘使用率以及解析时间,

2022-11-12

源的 Linux 发行版,最初由 CloudLinux 创建,提供一个社区支持的生产级企业操作系统,与 Red Hat Enterprise Linux(RHEL)二进制兼容。AlmaLinux 的第一个稳定版本于 2021 年 3 月 30 日发布。 2021 年 3 月 30 日,AlmaLinux OS Foundation(AlmaLinux

2022-06-09

虽然 Docker 已支持在 AArch64 Linux 上运行,但主线 Linux 内核的默认配置“defconfig”缺少一些允许其开箱即用运行的功能。一位 Arm 工程师提议调整这些默认值,以更轻松、直接地在 64 位 Arm 上运行 Docker。 用于构建内核主线的 Linux

2023-08-24

目的构建,但是同时也支持其他 native 语言的构建,可以实现跟 C/C++ 进行混合编译,同时编译速度也是非常的快,可以跟 Ninja 持平。 Xmake = Build backend + Project Generator + Package Manager + [Remote|Distributed] Build + Cache 尽管不是很准

2023-04-07

修复 invalid.test [llvm-objdump] --private-headers:将错误更改为动态部分转储的警告 ... 完整的更新项请在发布公告中查看。

2022-12-04

使用 crypt 密码哈希 API 的软件现在使用 libxcrypt 提供的实现,而不是 glibc 的实现,这使得支持更安全的算法成为可能。 对 libxcrypt 认为不强的算法的支持从这个版本开始被废弃,并将在 NixOS 23.05 中删除。 这包括系统登录

2023-05-18

RHEL 完全兼容,由 CentOS 创始人 Gregory Kurtzer 创建和领导,支持 x86_64 和 AArch64 处理器架构。 Rocky Linux 9.2 正式发布。此版本目前可用于 x86-64、aarch64 和 s390x 架构。 重大变化 centos-release-nfv 提供建立在 RHEL 9 buildroots 上的内容

2023-05-27

pdate 8 都可以在 systemd中运行容器化工作负载 ,以实现更可靠的部署。此集成允许 systemd 管理服务依赖性、监控生命周期和服务状态、在出现故障时重启服务以及管理容器的自动更新/回滚。 Podman 4.4 现在包含在 Or

2022-05-21

本 13.0.1 PCP 更新至版本 5.3.5 Grafana 更新到版本 7.5.11 动态编程语言 添加了 php:8.0 模块流。这个新的模块在 7.4 版本上提供了几个错误修复和增强功能。 添加了 Perl 5.32 模块流。这个新的模块包括对 Perl 版本 5.30 的许多错

2022-12-17

优化补丁的一部分,其他更多优化项,如减少缓存大小、动态配置缓存项、优化参数设置等,可以在 exFAT 优化的 PR 邮件中细阅。

2022-12-21

。 然而,LAM 随即遭受了 Linus 的猛烈批评,不仅是内核实现代码,Linus 甚至连“LAM” 这个名称都不满意: 现在要求英特尔将这个  LAM 功能称为“Top-Bits-Ignore” (TBI) ,会不会有些太晚了? ... 整个 LAM  功能不是

2023-11-21

Oracle Linux 9 系列发布了第 3 个版本更新,支持 64 位 Intel 和 AMD (x86_64) 以及 64 位 Arm (aarch64) 平台。与所有的 Oracle Linux 版本一样,此版本与相应 RHEL 版本 100% 应用二进制兼容。 对于x86_64和aarch64架构,Oracle Linux 提供了 Unbreakable Ent

2023-11-22

ressive sources 更新了 Social preset 在更短的时间内实现更高的质量和帧速率,无需隔行检测和删除 更适合实时社交短片和屏幕/游戏捕获的现代社交共享 删除了 Email presets,以支持修订后的 Social presets 停止通过电