Security 不受信任的GPGPU代码(OpenCL等)-安全吗?什么风险?

Security 不受信任的GPGPU代码(OpenCL等)-安全吗?什么风险?,security,cuda,sandbox,opencl,gpgpu,Security,Cuda,Sandbox,Opencl,Gpgpu,在典型的CPU上运行不受信任的代码时,有很多方法:沙盒、假根、虚拟化 GPGPU的不可信代码(OpenCL、cuda或已编译的代码)如何 假设在运行此类第三方不可信代码之前,图形卡上的内存已被清除 有安全风险吗 什么样的风险 有什么办法可以预防吗? 沙盒在gpgpu上是否可能/可用 也许是二进制仪器 其他技术 另外,我更感兴趣的是gpu二进制代码级别的安全性,而不是高级别的gpgpu编程语言安全性(但这些解决方案也很受欢迎)。我的意思是,欢迎参考gpu操作码(也称为机器码)。风险与任何C

在典型的CPU上运行不受信任的代码时,有很多方法:沙盒、假根、虚拟化

GPGPU的不可信代码(OpenCL、cuda或已编译的代码)如何

假设在运行此类第三方不可信代码之前,图形卡上的内存已被清除

  • 有安全风险吗
  • 什么样的风险
  • 有什么办法可以预防吗?
    • 沙盒在gpgpu上是否可能/可用
    • 也许是二进制仪器
    • 其他技术

另外,我更感兴趣的是gpu二进制代码级别的安全性,而不是高级别的gpgpu编程语言安全性(但这些解决方案也很受欢迎)。我的意思是,欢迎参考gpu操作码(也称为机器码)。

风险与任何C程序相同。另外,你可以使整个桌面冻结。我做了一次,通过执行一个很长的计算。其效果是屏幕不再更新,例如,时钟小部件上的时间在这段时间内没有变化。所以你应该使用两个图形卡——一个用于GPU的东西。

GPU代码肯定会有风险。当前的GPU不提供内存保护,所以本质上,每个GPU内核都可以访问所有视频内存。我不确定是否也可以访问主机的内存(可能通过内存映射?)。抢占内核是不可能的,它们可以“占用”GPU,如果GPU也用于图形输出,这会导致冻结。(通常驱动程序会终止几秒钟后不退出的内核)


据推测,AMD的新GPU系列确实有一些内存保护功能,但我怀疑它们目前是否被使用。使用当前的gen硬件(GeForce 4xx+,Radeon 6xxx+),可以将GPU多处理器拆分为多个段,但这与实时切片、抢占多任务处理并不完全相同

谢谢Navi的回答。假设我将使用单独的gpu卡进行计算(例如旧的特斯拉…)。如何确保不受信任代码的执行安全?事实上,NVIDIA的GPU至少有8000系列的内存保护(使用MMU)。我对ATI一无所知。例如,使用GPU代码不可能导致用户空间进程的权限提升。wump:确定吗?因为似乎很清楚没有内存保护。在分配的内存缓冲区之外写入会导致各种奇怪的事情发生,包括主机系统崩溃(在G80/GT200上,还没有在GF100上测试)。当然,即使内存存在,也不会有MMU活动来保护内存。事实上,在分配的内存缓冲区之外写入内存可能会导致GPU崩溃。如果此CPU与用于渲染的CPU相同,则系统将崩溃。我一直认为这是由于驱动程序中的bug造成的。MMU在那里并且是活动的,它防止进程写入其他进程的内存空间。我认为如果你有一个单独的GPU,你的系统不可能以这种方式崩溃。在与其他人讨论后,我们得出结论,虽然GPU有一个MMU(提供虚拟化寻址),但它不提供内存保护。MMU不一定有这个功能。好的,让我们假设我们有一个单独的cpu处理卡。那么有什么风险呢?你写的“和任何C程序一样”,实际上。。。“C”程序可以很容易地执行“system()”,在上述情况下会发生什么?