首页 > 其他分享 >论文分享-《GPU Memory Exploitation for Fun and Profit》

论文分享-《GPU Memory Exploitation for Fun and Profit》

时间:2024-10-07 22:43:47浏览次数:1  
标签:thread Profit Memory 内存空间 Exploitation 访问 memory GPU local

1. 研究问题

该论文对 NVIDIA GPU 上不同内存空间(global memory, local memory, shared memory)中存在的 buffer overflow 问题进行了深入的研究,并成功对在 GPU 上运行的 DNN 应用实现了 ROP 攻击。

以往的研究局限于单一内存空间中 buffer overflow 的影响,没有对不同内存空间的跨越进行分析。另外 NVIDIA 自 2017 年发布的 Volta architecture GPU 与以往的 GPU 架构有了很大不同,所以先前的研究不适用于当今的架构。

2. local memory 访问方式解密

为了解析 thread 是如何访问内存的,本文作者使用了非常暴力但有效的方法:利用 DMA dump 出 cuda 程序运行时的内存内容。在获取整个 GPU device memory 之后,分析 memory 中的 data pattern 从而找到 thread 中 local memory 的物理内存位置。此外,本文作者还从 device memory 中提取了页表的全部信息。

2.1 local memory 访问方式

__global__ void local_access() {
	uint32_t arr[10];
	for (int i = 0; i < 10; i ++) {
		arr[i] = 0xdead0000 + threadIdx.x;
	} 
	// 5 
	
int main() {
	local_access<<<1, 32>>>();
}

如上述代码所示,该 cuda 程序执行 local_access 核函数,该核函数包含一个 thread block,thread block 中包含 32 个 thread,每个线程会向自己的局部私有数组 arr 中写入特定内容。
作者使用 cuda-gdb 使程序运行到第 5 行时暂停下来,并 dump 整个 device memory,结果如下。

如图所示,一个线程块中线程的内存空间会以四字节为单位交错排列。

此外,作者还发现 thread 对于 local memory 的访问存在两条执行路径:

  • 当使用 LDL/STL 指令或者访存地址前缀为 0x7fff2 时,GPU 可识别出此时为 local memory 的访问,此时的访存地址在页表中没有有效的映射,GPU 会采取一条特殊的路径来完成对内存的访问,该路径会将线程 ID 考虑在内。
  • 当使用页表中的有效映射访存时,其过程和 CPU 类似,可以访问任意的地址空间。

标签:thread,Profit,Memory,内存空间,Exploitation,访问,memory,GPU,local
From: https://www.cnblogs.com/yinhaofei/p/18450792

相关文章

  • MemoryAnalyzer指定JDK版本
    小手追梦于2021-06-2809:56:24发布阅读量2w收藏20点赞数21分类专栏:java版权java专栏收录该内容171篇文章4订阅订阅专栏问题描述MemoryAnalyzer启动时报错看了日志,提示需要jdk11才可以运行,但是我的环境变量配置的是jdk8,这咋整?不想更改环境变量中的jdk配置信息,因为......
  • gym103687D / QOJ3998 The Profiteer
    题意有\(n\)个物品,和一个背包容量上限\(m\)。每个物品有价值\(v_i\)和体积\(a_i\)。你需要选择一段区间\([l,r]\),将这个区间内的体积变为\(b_i\),剩下的不变。然后你对这\(n\)个物品做背包,设背包容量结果为\(f(i)\),需要求出有多少段区间使得\(\dfrac{\sum_{i=1}^mf(......
  • Bad or missing usercopy whitelist? Kernel memory overwrite attempt detected to S
    Linux内核有一个usercopywhitelist机制,只允许这里面的region来做usercopy。如果是用kmem_cache_create申请的kmem_cache申请的内存空间来copytouser或者copyfromuser,那么就会报这个错。这时要用kmem_cache_create_usercopy,来将申请的区域加入到usercopywhitelist中。/***......
  • 易优CMS出现:Allowed memory size of 134217728 bytes exhausted (tried to allocate 2
    当你遇到“Allowedmemorysizeof134217728bytesexhausted(triedtoallocate20480bytes)”的错误时,这意味着PHP的内存限制已经耗尽。这种错误通常发生在处理大量数据或执行复杂计算时。为了解决这个问题,可以采取以下几种方法:方法1:修改 php.ini 文件(推荐)找到 php......
  • 易优CMS登录后台报Allowed memory size of 134217728 bytes ex hausted (tried to alo
    当你在登录后台时遇到“Allowedmemorysizeof134217728bytesexhausted(triedtoallocate20480bytes)”的错误提示时,通常是由于PHP的内存限制不足导致的。以下是一些具体的解决步骤:步骤1:检查PHP配置登录宝塔面板登录宝塔面板。在左侧菜单栏选择“软件商店”。......
  • 大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(正在更新···)章节内容上节我们完成了如下的内容:测试连接集群数据类型......
  • 为何有时出现:Allowed memory size of 134217728 bytes exhausted (tried to allocate
    出现“Allowedmemorysizeof134217728bytesexhausted(triedtoallocate20480bytes)”这样的错误,意味着PHP脚本运行时消耗的内存超过了PHP配置允许的最大内存限制。这个错误通常是因为PHP脚本处理的数据量过大、内存消耗较高的任务或配置不当引起的。以下是几种解决......
  • [INS-35180] Unable to check for available memory
    Linux平台安装Oracle19c的时候遇到了下面错误“[INS-35180]Unabletocheckforavailablememory”,如图所示:具体的错误信息如下所示:Additional Information:Exception details  - PRVG-1901 : failed to setup CVU remote execution framework directory "/t......
  • 帝国CMSr的Fatal error:Allowed memory size of的解决办法
    当帝国CMS提示内存限制错误(Fatalerror:Allowedmemorysizeof...bytesexhausted(triedtoallocate...bytes)),通常是由于PHP的内存限制设置过低。以下是一些详细的解决方法:修改php.ini 文件定位 php.ini 文件:查找 php.ini 文件的位置。通常位于服务器的 /etc......
  • zblog显示Allowed memory size of 6553652 bytes exhauste
    当Z-Blog显示“Allowedmemorysizeof6553652bytesexhausted”错误时,这意味着PHP的内存限制已达到上限。这种错误通常发生在处理大量数据或执行复杂操作时。以下是解决此问题的一些常见步骤:1.增加PHP内存限制方法一:修改 php.ini 文件定位 php.ini 文件找......