G.O.S.S.I.P阅读推荐2026-05-19NvidiaASLR

admin 2026-05-29 04:06:32 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该论文首次系统逆向分析NVIDIAGPU的ASLR机制,揭示内存布局缺陷与随机化实现弱点,证明攻击者可绕过GPUASLR并推测CPU侧glibc基址,威胁异构系统安全边界。研究工具已开源,建议关注GPU内存安全防护加固。 综合评分: 89 文章分类: 漏洞分析,二进制安全,逆向分析,AI安全,威胁情报


cover_image

G.O.S.S.I.P 阅读推荐 2026-05-19 NvidiaASLR

原创

wbshen wbshen

安全研究GoSSIP

2026年5月19日 20:26 上海

在小说阅读器读本章

去阅读

今天推荐的论文Demystifying and Exploiting ASLR on NVIDIA GPUs来自正在召开的顶级安全会议IEEE S&P 2026,是今年会议的杰出论文奖得主之一,由浙江大学申文博老师课题组与罗切斯特大学郭雅楠老师共同完成。论文聚焦现代AI基础设施中的核心组件——NVIDIA GPU,系统研究其底层内存安全问题。

随着大模型和深度学习的快速发展,GPU已成为智能计算系统的核心算力底座,也逐渐成为攻击者关注的新目标。为提升安全性,NVIDIA GPU引入了 地址空间随机化机制(ASLR)。然而,与CPU上已被长期研究的ASLR不同,GPU ASLR的实现细节、安全边界和真实防护效果长期处于黑盒状态。本文首次对NVIDIA GPU ASLR进行了系统性、全面性的安全分析。研究不仅逆向恢复了NVIDIA GPU的虚拟地址空间布局,还揭示了多个此前未知的ASLR设计缺陷,并进一步构造攻击,证明这些缺陷可能影响GPU与CPU之间的安全边界,甚至削弱CPU侧的ASLR防护,揭示了GPU对整个计算机系统安全的深层影响。

该工作的核心贡献在于将GPU ASLR从黑盒变为可分析、可验证的安全对象,揭示了AI异构算力系统中长期被忽视的基础安全风险。相关发现已得到NVIDIA官方确认,审稿专家也给予高度评价,认为该工作“Establishes a New Research Direction”,开辟了GPU内存安全与XPU安全研究的新方向。

1. 背景与挑战

随着大模型和AI技术席卷全球,NVIDIA GPU 因其占有 90% 以上的市场份额,成为了现代算力不可或缺的基石。然而,越强大的计算能力和越广泛的部署规模,也意味着其面临更大的安全威胁。由于传统的 CPU 侧已经构建了较为完善的软硬件防护体系,攻击者很难从 CPU 侧实现有效的攻击,于是他们开始将目光转向了防御机制相对薄弱的 GPU 侧。为提升 GPU 的安全性,NVIDIA 在 GPU 中引入了 ASLR 机制,希望通过增加内存布局的不确定性,提高 CUDA 程序被利用的难度。

相比之下,CPU 侧的 ASLR 已经经过了长期研究,不仅相关实现大量开源,其攻击与绕过方法也较为成熟。而 GPU 侧的 ASLR 至今仍缺乏公开实现,其内部设计、随机化熵以及具体哪些内存段参与随机化等问题都尚不明确。现有工作大多停留在验证 GPU 是否存在 ASLR,或仅对部分内存区域的随机化现象进行逆向分析。这些研究既没有完整恢复 GPU 的整体内存布局,也未深入分析 ASLR 的核心实现机制。为填补这一空白,本文聚焦于 GPU 内存布局与 GPU ASLR 机制的系统化逆向分析。

然而,这一目标并不容易实现,因为许多适用于 CPU 的传统分析方法难以直接迁移到 GPU 环境中。具体而言,主要存在以下挑战:

  • 首先,在缺乏源码的情况下恢复 GPU 内存布局本身就十分困难。虽然 NVIDIA 近年来开源了部分内核驱动代码,但 ASLR 的核心逻辑依然位于 GPU 内部闭源的 GSP 固件中。在完全黑盒的条件下,研究者不仅无法直接观察随机化逻辑,还需要首先恢复尚未随机化时的原始内存布局,并识别不同内存段的功能语义,这一过程具有很高的复杂度。
  • 其次,逆向 GPU ASLR 的具体实现细节同样困难。CPU 侧通常采用大规模收集随机化地址并结合统计分析的方法研究 ASLR,而这一方法依赖于高效、稳定的地址采集能力。然而,在 GPU 环境中,传统的地址收集方式并不可靠。例如,在 CUDA kernel 中通过 printf 输出的地址往往并非真实虚拟地址:打印出的栈地址通常对应另一套访存机制,而库函数地址也往往只是相对偏移,而非真实映射地址。另一种方法是直接解析页表获取虚拟地址,但 GPU 并不存在类似 CPU 的页表根寄存器,因此研究者只能通过 Dump 整个 GPU 物理内存,并逐页恢复页表层级结构后再解析地址。这种方式开销极高,恢复一次完整地址信息便需要耗费大量时间,难以支持大规模随机化采样。

2. 设计实现

本文的核心目标是突破上述GPU上特有的限制,实现两项关键能力:一是在无源码条件下准确恢复 GPU 的黑盒内存布局,二是构建高效的大规模随机化地址自动化采集方法,从而进一步揭示 GPU ASLR 的内部设计与实现机制。为此,作者创新性地设计了两个核心技术:

  • 基于标志探测的内存语义逆向(FlagProbe)

    : 该技术通过在GPU内存中植入或者识别精心构造的特征标志,并扫描物理内存以获取这些标志的运行时的物理地址。通过将物理地址与GPU页表交叉比对,作者成功还原了GPU虚拟内存段的结构与功能语义,甚至找出了未被文档记录的隐藏内存区域

  • 基于锚点追踪的高效地址收集(AnchorTrace)

    : 针对GPU页表采样效率低下的问题,作者在逆向过程中发现GPU内存中存在一个非随机化的固定区域(锚点)。通过编写特定的CUDA Kernel,从该锚点出发,沿着内存指针链递归访存和追踪,可以在运行时以极低的开销提取出所有随机化内存段的基址 。实验表明,该技术将地址收集速度提升了惊人的185倍,使大规模ASLR熵值分析成为可能。

2.1 基于标志探测的内存语义逆向(FlagProbe)

为了说明 FlagProbe 技术如何实现 GPU 内存语义逆向,本文以一个对用户完全隐藏的系统常量内存段为例,展示其具体分析过程,整体流程如上图所示。首先,作者使用 cuda-gdb 运行一个 CUDA 程序,并在 kernel 执行过程中将其暂停。在逆向分析过程中,作者发现,每个 CUDA kernel 在启动时都会固定执行图中的前两条指令,即:

MOV R1, c[0x0][0x28]
IADD3 R1, R1, 0x38, RZ

这两条指令负责从系统常量内存中读取 GPU 栈基址(这里的地址并非真实虚拟地址,而是 GPU 线程访存机制内部使用的地址),随后再减去 0x38 并写入寄存器 R1。因此,R1 实际上承担了 GPU 栈基址寄存器的作用,并用于完成当前栈帧的空间分配。基于这一发现,作者进一步设计了如下四个步骤来逆向该隐藏内存段:

❶ 首先,为了获取系统常量内存中的原始数据,作者将程序暂停在第三条指令之后的位置。由于 GPU做了特殊处理,断点无法直接设置在第二条指令上,因此只能在后续位置暂停。随后,作者读取寄存器 R1 的运行时值,并根据前两条指令的计算逻辑进行逆向推导,从而恢复出第一条指令执行后从系统常量内存中读取的原始值,即图中的 R1 + 0x38。本文将这一关键值称为一个 Flag。 ❷ 随后,作者利用现有工具 Dump 整个 GPU 物理内存,并在物理内存中搜索该 Flag 值。然而,由于内存中可能存在大量相同数值,仅依赖一次搜索难以准确定位目标地址。因此,作者进一步结合 Flag 本身的语义特征进行过滤。例如,如果该 Flag 表示一个地址,则其通常应满足 8 字节对齐等约束条件。此外,作者还会多次重复实验,例如切换不同指令路径、重新启动程序以刷新 Flag 值,再对多个结果进行交叉比对,从而逐步缩小搜索范围,并最终确定 Flag 对应的真实物理地址。 ❸ 接着,作者对 GPU 物理内存进行逐页解析,以恢复 GPU 页表结构。在获取到 Flag 的真实物理地址后,作者进一步执行反向 Page Table Walk,从物理地址反推出其对应的 GPU 虚拟地址,最终定位到系统常量内存所在的虚拟地址区域。 ❹ 最后,作者基于恢复出的页表结构进一步重建整个 GPU 虚拟地址空间。具体而言,作者首先根据页表项解析出所有虚拟页,并按照相同权限与连续映射关系将其合并为不同的内存段,如图最左侧所示。随后,再结合前面逆向得到的虚拟地址,确定其所属内存段的位置与范围,最终确认该内存段的语义为系统常量内存。 对于其他内存段,作者同样采用类似的启发式 Flag 探测方法进行分析。例如,通过利用跳转指令确定CUDA library段,利用插入 magic value 确定 heap 段等,逐步建立不同内存段与其功能语义之间的对应关系。通过不断重复这一过程,作者最终在未开启随机化的情况下,首次完整恢复了 GPU 虚拟地址空间的整体布局及其内存语义,为后续 GPU ASLR 的逆向分析奠定了基础。

2.2 基于锚点追踪的高效地址收集(AnchorTrace)

在通过 FlagProbe 弄清了虚拟内存的语义分布后,下一个目标是收集海量的运行时地址,以便通过统计来分析 ASLR 的熵值和随机化特性。然而,传统的页表扫描与地址恢复方法开销极高,难以支持大规模采样。为了解决这一问题,作者提出了 AnchorTrace 技术。该技术既不依赖页表扫描恢复随机化地址,也不采用直接打印变量或函数地址的方式,而是利用绝对地址内存读取实现低开销、高可靠性的随机化地址追踪。其整体流程如下:

作者首先通过逆向分析,构建了一张 GPU 内存指针图。该内存图的构建以系统常量内存段作为初始内存区,因为相比其他区域,该区域中包含了更多的指向不同 GPU 内存段的指针。随后从该区域出发,作者同时采用了前向搜索与后向搜索两种策略。其中,前向搜索是指分析当前内存块中的指针,并结合页表解析与 GPU DRAM Dump 提取其所指向内存区域的内容,从而进一步发现新的内存块。而后向搜索则以当前内存块的虚拟地址作为一个新的 Flag,在 GPU 物理内存中搜索哪些区域包含指向该地址的指针。通过这种方式,可以反向恢复哪些内存块引用了当前区域,从而找到更上层的内存结构。最终结合前向与后向分析后,作者构建出了一张较为完整的 GPU 内存指针图(如下图所示)。

在分析该指针图后,作者进一步发现,其中存在一块始终不会被随机化的固定内存区域(图中的Anchor Memory区域),其基地址在多次程序运行之间保持不变。因此,作者将该区域视为一个稳定的锚点,并以其绝对地址作为整个随机化地址恢复过程的起始位置。基于这一锚点,作者采用了一种基于绝对地址读取的递归指针追踪方法。具体而言,在 CUDA Kernel 中,程序首先直接利用绝对地址读取该锚点区域中特定偏移上的内容,例如偏移 0xb8 和 0xc0 处的数据指向系统常量内存、.text 段等会被随机化的区域,将其通过printf打印出来。随后再读取0x80和0x88偏移处的指针,进入下一块随机化区域,以此类推的方式,继续递归读取指向全局栈、堆以及其他 GPU 内存段的指针。通过不断重复这一过程,程序最终能够提取到一次运行的所有关键 GPU 内存段在当前运行时对应的随机化虚拟地址。

随后,在后续的大规模采样阶段,作者将该CUDA Kernel重复运行了十万次,每次运行完后收集打印在控制台上的随机化地址。由于整个过程仅涉及少量关键内存区域的读取,而无需再次执行 GPU DRAM Dump、页表恢复或全量内存扫描,因此其开销远低于传统方法。实验结果表明,AnchorTrace 显著提升了随机化地址采集效率。在传统页表扫描方案下,完成 10 万次地址采样需要约 1666 小时;而采用 AnchorTrace 后,总耗时降低至约 9 小时,实现了约 185 倍的性能提升

3. 关键发现

通过上述技术,作者首次逆向出了 NVIDIA GPU 的虚拟地址空间和ASLR实现机制,发现其在内存管理和 ASLR 实现上存在多项此前未被揭示的安全弱点

3.1 GPU内存布局相关发现

如上图所示,右侧部分是作者逆出的GPU侧内存布局示意图,作者在其中发现了以下三个可能导致攻击的内存布局问题:

  • 高危的跨进程共享区域:所有 CUDA 进程在 GPU 虚拟地址空间中都共享了两块约 42MB 的大型内存区域,这些区域在页表中被配置为RWX权限(GPU页表没有X位,默认所有页均可执行),且其内容在进程结束后依然驻留,能够为隐蔽信道攻击和恶意代码注入提供便利
  • 特殊的内核映射页:所有的CUDA进程还直接映射并共享了一个位于 CPU侧 内核空间 的 64KB 物理页面,这意味着运行在 GPU 上的非特权用户代码,可以直接读写 CPU 侧的内核页面,绕过了常规的系统级安全防护
  • 强相关的地址空间设计:CPU 和 GPU 在虚拟地址分配上展现出极强的关联性,某些共享区域和设备控制文件在两端的虚拟地址完全一致,然而对于同一个 CPU/GPU 物理地址而言,GPU和CPU对其映射的权限却不相同。这种权限不对称的共享机制可能导致跨处理器攻击,例如从CPU侧注入GPU binary或者从GPU侧毁坏内存,帮助CPU实施攻击

3.2 GPU ASLR实现相关发现

针对 ASLR 机制,作者通过统计学的方式分析了GPU上不同段地址之间的相关性(如上图左所示)以及GPU上不同段地址和CPU上不同段地址之间的关系(如上图右所示),揭示了多个GPU上的ASLR机制的实现缺陷:

  • 虚拟地址空间部分随机化:实验证明,GPU 的堆(Heap)内存地址在多次运行中完全固定不变,其随机化熵值为 0,而其他如代码段等区域的随机化熵值也仅有 20 bit,相比 CPU 侧30 bit 以上的熵值,在现代计算机高并行的特点下非常容易被爆破。
  • 整体随机化策略:与 CPU 侧各段独立随机化的设计不同,GPU ASLR 采取了集体随机化策略,这意味着除了堆之外,绝大多数内存区域共享同一个随机化偏移量。攻击者只要通过任何漏洞泄露一个地址,就能推算出整个内存空间的布局。
  • CPU侧地址与GPU侧地址强相关性:作者还发现 GPU 内存地址与 CPU 侧的glibc地址之间存在极强的相关性,二者之间的偏移在随机化过程中变化的熵仅有7位,这意味着攻击者利用 GPU 端的漏洞,仅需简单进行爆破就能精准推测出 CPU 端的 glibc 基地址,从而实现跨处理器攻击 。

3.3 绕过 GPU ASLR 并泄露 CPU 地址

为了验证上述安全缺陷在真实场景中的实际影响,作者在论文中构造了一个 CUDA Kernel 存在常见 OOB(Out-of-Bounds)漏洞的攻击场景。由于 OOB 漏洞在真实世界的 AI 算子实现中较为常见,因此该场景具有较强的现实意义。整个攻击过程展示了攻击者如何利用 GPU 侧的越界读漏洞,逐步绕过 GPU ASLR,并进一步推测CPU 侧关键库函数的地址。

首先,作者展示了如何绕过 GPU 侧 ASLR。与传统 CPU 程序不同,CUDA Kernel 在编译过程中会经过大量内联优化,因此通常不存在典型的函数调用栈帧结构。大多数函数调用不会在栈上保存返回地址,而是直接通过寄存器进行控制流跳转。因此,传统依赖栈越界读泄露和篡改返回地址的方法,在 GPU 环境下往往难以直接生效。然而,作者在分析 GPU 栈结构时发现,在普通 CUDA Kernel 用户栈之前,实际上还存在一个由 GPU Runtime 自动维护的隐藏栈帧。该隐藏栈帧并不会直接暴露给用户,但其中保存了部分运行时上下文信息。在进一步逆向分析后,作者发现,在该隐藏栈帧的固定偏移位置中,存放着指向 GPU .text 段以及 CUDA Library 的随机化地址,如下图所示。

基于这一发现,攻击者只需利用 AI 推理代码中常见的栈越界读漏洞,越界访问到隐藏栈帧区域,即可直接读取这些随机化地址。又由于 GPU 上的所有内存块是在一个 block 中随机化的,因此一旦泄露任意一个地址,攻击者便能够准确恢复 GPU 当前运行时的随机化布局,从而成功绕过 GPU 侧 ASLR。

在成功获取 GPU 侧随机化地址后,作者进一步展示了如何推测 CPU 侧的 glibc 基址。该攻击利用了一个关键发现:GPU 地址空间与 CPU 地址空间之间并非完全独立随机化,而是存在较强的相关性。具体而言,作者发现 GPU地址与 CPU 侧 glibc 基址之间存在一个相对稳定的偏移关系。在同一设备上重复运行时,该偏移仅在第 [21:27] 位发生变化。

随后,作者进一步测试了不同 GPU 型号、驱动版本以及运行环境下该偏移关系的变化情况。实验结果表明,即使在不同环境因素影响下,该偏移值也仅会在第 [20:27] 位之间产生变化。换句话说,GPU 地址与 CPU glibc 地址之间的随机化差异实际上只包含 8 bit 的不确定性。这一结果意味着,当攻击者已经获得 GPU .text 段地址后,仅需枚举 2^8 = 256 种可能偏移,即有机会成功猜测 CPU 侧 glibc 的真实基址,其单次成功概率高达 1/256。在现代处理器的执行速度下,这样的概率可以使得攻击者在非常短的时间内完成爆破,并进一步为后续 CPU 侧利用攻击提供基础。


论文:https://wenboshen.org/publications/papers/NVIDIA_ASLR.pdf

为促进软硬件安全社区对GPU底层机制的后续研究,论文团队已将本研究相关的工具链和分析框架(包括增强版的GPU页表提取工具和AnchorTrace地址收集的CUDA kernel)公开发布

GitHub:https://github.com/ZJU-SEC/NvidiaASLR


作者介绍

  • 朱若凡,论文第一作者,浙江大学博士生,指导老师为申文博老师,研究方向涵盖AI系统安全和操作系统安全等。他的研究成果发表于S&P、ICSE等顶级会议。

  • 申文博,论文通讯作者,浙江大学长聘副教授,研究方向为操作系统安全、云原生系统安全与软件供应链安全,在各类顶级会议已累计发表超过60篇论文,并获得了5项杰出论文奖。

  • 个人主页 https://wenboshen.org

  • 郭雅楠,罗切斯特大学计算机科学系的助理教授。研究方向为计算机体系结构和GPU安全,在各类顶级会议发表多篇 GPU安全相关论文。

  • 个人主页 https://yananguo.com/


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全研究GoSSIP wbshen wbshen《G.O.S.S.I.P 阅读推荐 2026-05-19 NvidiaASLR》

isCC非武部分Wp 网络安全文章

isCC非武部分Wp

文章总结: 本文档记录了ISCCCTF竞赛非武部分两道MISC题目的详细解题过程。MISC1通过分析网络流量发现压缩包密码,结合LSB隐写获得flag;MISC
评论:0   参与:  0