Vulnerability Details CVE-2022-50488
In the Linux kernel, the following vulnerability has been resolved:
block, bfq: fix possible uaf for 'bfqq->bic'
Our test report a uaf for 'bfqq->bic' in 5.10:
==================================================================
BUG: KASAN: use-after-free in bfq_select_queue+0x378/0xa30
CPU: 6 PID: 2318352 Comm: fsstress Kdump: loaded Not tainted 5.10.0-60.18.0.50.h602.kasan.eulerosv2r11.x86_64 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58-20220320_160524-szxrtosci10000 04/01/2014
Call Trace:
bfq_select_queue+0x378/0xa30
bfq_dispatch_request+0xe8/0x130
blk_mq_do_dispatch_sched+0x62/0xb0
__blk_mq_sched_dispatch_requests+0x215/0x2a0
blk_mq_sched_dispatch_requests+0x8f/0xd0
__blk_mq_run_hw_queue+0x98/0x180
__blk_mq_delay_run_hw_queue+0x22b/0x240
blk_mq_run_hw_queue+0xe3/0x190
blk_mq_sched_insert_requests+0x107/0x200
blk_mq_flush_plug_list+0x26e/0x3c0
blk_finish_plug+0x63/0x90
__iomap_dio_rw+0x7b5/0x910
iomap_dio_rw+0x36/0x80
ext4_dio_read_iter+0x146/0x190 [ext4]
ext4_file_read_iter+0x1e2/0x230 [ext4]
new_sync_read+0x29f/0x400
vfs_read+0x24e/0x2d0
ksys_read+0xd5/0x1b0
do_syscall_64+0x33/0x40
entry_SYSCALL_64_after_hwframe+0x61/0xc6
Commit 3bc5e683c67d ("bfq: Split shared queues on move between cgroups")
changes that move process to a new cgroup will allocate a new bfqq to
use, however, the old bfqq and new bfqq can point to the same bic:
1) Initial state, two process with io in the same cgroup.
Process 1 Process 2
(BIC1) (BIC2)
| Λ | Λ
| | | |
V | V |
bfqq1 bfqq2
2) bfqq1 is merged to bfqq2.
Process 1 Process 2
(BIC1) (BIC2)
| |
\-------------\|
V
bfqq1 bfqq2(coop)
3) Process 1 exit, then issue new io(denoce IOA) from Process 2.
(BIC2)
| Λ
| |
V |
bfqq2(coop)
4) Before IOA is completed, move Process 2 to another cgroup and issue io.
Process 2
(BIC2)
Λ
|\--------------\
| V
bfqq2 bfqq3
Now that BIC2 points to bfqq3, while bfqq2 and bfqq3 both point to BIC2.
If all the requests are completed, and Process 2 exit, BIC2 will be
freed while there is no guarantee that bfqq2 will be freed before BIC2.
Fix the problem by clearing bfqq->bic while bfqq is detached from bic.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.0
EPSS Ranking 7.0%
CVSS Severity
CVSS v3 Score 7.8
Products affected by CVE-2022-50488
-
cpe:2.3:o:linux:linux_kernel:5.10.121
-
cpe:2.3:o:linux:linux_kernel:5.10.122
-
cpe:2.3:o:linux:linux_kernel:5.10.123
-
cpe:2.3:o:linux:linux_kernel:5.10.124
-
cpe:2.3:o:linux:linux_kernel:5.10.125
-
cpe:2.3:o:linux:linux_kernel:5.10.126
-
cpe:2.3:o:linux:linux_kernel:5.10.127
-
cpe:2.3:o:linux:linux_kernel:5.10.128
-
cpe:2.3:o:linux:linux_kernel:5.10.129
-
cpe:2.3:o:linux:linux_kernel:5.10.130
-
cpe:2.3:o:linux:linux_kernel:5.10.131
-
cpe:2.3:o:linux:linux_kernel:5.10.132
-
cpe:2.3:o:linux:linux_kernel:5.10.133
-
cpe:2.3:o:linux:linux_kernel:5.10.134
-
cpe:2.3:o:linux:linux_kernel:5.10.135
-
cpe:2.3:o:linux:linux_kernel:5.10.136
-
cpe:2.3:o:linux:linux_kernel:5.10.137
-
cpe:2.3:o:linux:linux_kernel:5.10.138
-
cpe:2.3:o:linux:linux_kernel:5.10.139
-
cpe:2.3:o:linux:linux_kernel:5.10.140
-
cpe:2.3:o:linux:linux_kernel:5.10.141
-
cpe:2.3:o:linux:linux_kernel:5.10.142
-
cpe:2.3:o:linux:linux_kernel:5.10.143
-
cpe:2.3:o:linux:linux_kernel:5.10.144
-
cpe:2.3:o:linux:linux_kernel:5.10.145
-
cpe:2.3:o:linux:linux_kernel:5.10.146
-
cpe:2.3:o:linux:linux_kernel:5.10.147
-
cpe:2.3:o:linux:linux_kernel:5.10.148
-
cpe:2.3:o:linux:linux_kernel:5.10.149
-
cpe:2.3:o:linux:linux_kernel:5.10.150
-
cpe:2.3:o:linux:linux_kernel:5.10.151
-
cpe:2.3:o:linux:linux_kernel:5.10.152
-
cpe:2.3:o:linux:linux_kernel:5.10.153
-
cpe:2.3:o:linux:linux_kernel:5.10.154
-
cpe:2.3:o:linux:linux_kernel:5.10.155
-
cpe:2.3:o:linux:linux_kernel:5.10.156
-
cpe:2.3:o:linux:linux_kernel:5.10.157
-
cpe:2.3:o:linux:linux_kernel:5.10.158
-
cpe:2.3:o:linux:linux_kernel:5.10.159
-
cpe:2.3:o:linux:linux_kernel:5.10.160
-
cpe:2.3:o:linux:linux_kernel:5.10.161
-
cpe:2.3:o:linux:linux_kernel:5.10.162
-
cpe:2.3:o:linux:linux_kernel:5.10.163
-
cpe:2.3:o:linux:linux_kernel:5.10.164
-
cpe:2.3:o:linux:linux_kernel:5.10.165
-
cpe:2.3:o:linux:linux_kernel:5.10.166
-
cpe:2.3:o:linux:linux_kernel:5.10.167
-
cpe:2.3:o:linux:linux_kernel:5.10.168
-
cpe:2.3:o:linux:linux_kernel:5.10.169
-
cpe:2.3:o:linux:linux_kernel:5.10.170
-
cpe:2.3:o:linux:linux_kernel:5.10.171
-
cpe:2.3:o:linux:linux_kernel:5.10.172
-
cpe:2.3:o:linux:linux_kernel:5.10.173
-
cpe:2.3:o:linux:linux_kernel:5.10.174
-
cpe:2.3:o:linux:linux_kernel:5.15.46
-
cpe:2.3:o:linux:linux_kernel:5.15.47
-
cpe:2.3:o:linux:linux_kernel:5.15.48
-
cpe:2.3:o:linux:linux_kernel:5.15.49
-
cpe:2.3:o:linux:linux_kernel:5.15.50
-
cpe:2.3:o:linux:linux_kernel:5.15.51
-
cpe:2.3:o:linux:linux_kernel:5.15.52
-
cpe:2.3:o:linux:linux_kernel:5.15.53
-
cpe:2.3:o:linux:linux_kernel:5.15.54
-
cpe:2.3:o:linux:linux_kernel:5.15.55
-
cpe:2.3:o:linux:linux_kernel:5.15.56
-
cpe:2.3:o:linux:linux_kernel:5.15.57
-
cpe:2.3:o:linux:linux_kernel:5.15.58
-
cpe:2.3:o:linux:linux_kernel:5.15.59
-
cpe:2.3:o:linux:linux_kernel:5.15.60
-
cpe:2.3:o:linux:linux_kernel:5.15.61
-
cpe:2.3:o:linux:linux_kernel:5.15.62
-
cpe:2.3:o:linux:linux_kernel:5.15.63
-
cpe:2.3:o:linux:linux_kernel:5.15.64
-
cpe:2.3:o:linux:linux_kernel:5.15.65
-
cpe:2.3:o:linux:linux_kernel:5.15.66
-
cpe:2.3:o:linux:linux_kernel:5.15.67
-
cpe:2.3:o:linux:linux_kernel:5.15.68
-
cpe:2.3:o:linux:linux_kernel:5.15.69
-
cpe:2.3:o:linux:linux_kernel:5.15.70
-
cpe:2.3:o:linux:linux_kernel:5.15.71
-
cpe:2.3:o:linux:linux_kernel:5.15.72
-
cpe:2.3:o:linux:linux_kernel:5.15.73
-
cpe:2.3:o:linux:linux_kernel:5.15.74
-
cpe:2.3:o:linux:linux_kernel:5.15.75
-
cpe:2.3:o:linux:linux_kernel:5.15.76
-
cpe:2.3:o:linux:linux_kernel:5.15.77
-
cpe:2.3:o:linux:linux_kernel:5.15.78
-
cpe:2.3:o:linux:linux_kernel:5.15.79
-
cpe:2.3:o:linux:linux_kernel:5.15.80
-
cpe:2.3:o:linux:linux_kernel:5.15.81
-
cpe:2.3:o:linux:linux_kernel:5.15.82
-
cpe:2.3:o:linux:linux_kernel:5.15.83
-
cpe:2.3:o:linux:linux_kernel:5.15.84
-
cpe:2.3:o:linux:linux_kernel:5.15.85
-
cpe:2.3:o:linux:linux_kernel:5.17.14
-
cpe:2.3:o:linux:linux_kernel:5.17.15
-
cpe:2.3:o:linux:linux_kernel:5.18.10
-
cpe:2.3:o:linux:linux_kernel:5.18.11
-
cpe:2.3:o:linux:linux_kernel:5.18.12
-
cpe:2.3:o:linux:linux_kernel:5.18.13
-
cpe:2.3:o:linux:linux_kernel:5.18.14
-
cpe:2.3:o:linux:linux_kernel:5.18.15
-
cpe:2.3:o:linux:linux_kernel:5.18.16
-
cpe:2.3:o:linux:linux_kernel:5.18.17
-
cpe:2.3:o:linux:linux_kernel:5.18.18
-
cpe:2.3:o:linux:linux_kernel:5.18.19
-
cpe:2.3:o:linux:linux_kernel:5.18.3
-
cpe:2.3:o:linux:linux_kernel:5.18.4
-
cpe:2.3:o:linux:linux_kernel:5.18.5
-
cpe:2.3:o:linux:linux_kernel:5.18.6
-
cpe:2.3:o:linux:linux_kernel:5.18.7
-
cpe:2.3:o:linux:linux_kernel:5.18.8
-
cpe:2.3:o:linux:linux_kernel:5.18.9
-
cpe:2.3:o:linux:linux_kernel:5.19
-
cpe:2.3:o:linux:linux_kernel:5.19.1
-
cpe:2.3:o:linux:linux_kernel:5.19.10
-
cpe:2.3:o:linux:linux_kernel:5.19.11
-
cpe:2.3:o:linux:linux_kernel:5.19.12
-
cpe:2.3:o:linux:linux_kernel:5.19.13
-
cpe:2.3:o:linux:linux_kernel:5.19.14
-
cpe:2.3:o:linux:linux_kernel:5.19.15
-
cpe:2.3:o:linux:linux_kernel:5.19.16
-
cpe:2.3:o:linux:linux_kernel:5.19.17
-
cpe:2.3:o:linux:linux_kernel:5.19.2
-
cpe:2.3:o:linux:linux_kernel:5.19.3
-
cpe:2.3:o:linux:linux_kernel:5.19.4
-
cpe:2.3:o:linux:linux_kernel:5.19.5
-
cpe:2.3:o:linux:linux_kernel:5.19.6
-
cpe:2.3:o:linux:linux_kernel:5.19.7
-
cpe:2.3:o:linux:linux_kernel:5.19.8
-
cpe:2.3:o:linux:linux_kernel:5.19.9
-
cpe:2.3:o:linux:linux_kernel:5.4.198
-
cpe:2.3:o:linux:linux_kernel:5.4.199
-
cpe:2.3:o:linux:linux_kernel:5.4.200
-
cpe:2.3:o:linux:linux_kernel:5.4.201
-
cpe:2.3:o:linux:linux_kernel:5.4.202
-
cpe:2.3:o:linux:linux_kernel:5.4.203
-
cpe:2.3:o:linux:linux_kernel:5.4.204
-
cpe:2.3:o:linux:linux_kernel:5.4.205
-
cpe:2.3:o:linux:linux_kernel:5.4.206
-
cpe:2.3:o:linux:linux_kernel:5.4.207
-
cpe:2.3:o:linux:linux_kernel:5.4.208
-
cpe:2.3:o:linux:linux_kernel:5.4.209
-
cpe:2.3:o:linux:linux_kernel:5.4.210
-
cpe:2.3:o:linux:linux_kernel:5.4.211
-
cpe:2.3:o:linux:linux_kernel:5.4.212
-
cpe:2.3:o:linux:linux_kernel:5.4.213
-
cpe:2.3:o:linux:linux_kernel:5.4.214
-
cpe:2.3:o:linux:linux_kernel:5.4.215
-
cpe:2.3:o:linux:linux_kernel:5.4.216
-
cpe:2.3:o:linux:linux_kernel:5.4.217
-
cpe:2.3:o:linux:linux_kernel:5.4.218
-
cpe:2.3:o:linux:linux_kernel:5.4.219
-
cpe:2.3:o:linux:linux_kernel:5.4.220
-
cpe:2.3:o:linux:linux_kernel:5.4.221
-
cpe:2.3:o:linux:linux_kernel:5.4.222
-
cpe:2.3:o:linux:linux_kernel:5.4.223
-
cpe:2.3:o:linux:linux_kernel:5.4.224
-
cpe:2.3:o:linux:linux_kernel:5.4.225
-
cpe:2.3:o:linux:linux_kernel:5.4.226
-
cpe:2.3:o:linux:linux_kernel:5.4.227
-
cpe:2.3:o:linux:linux_kernel:5.4.228
-
cpe:2.3:o:linux:linux_kernel:5.4.229
-
cpe:2.3:o:linux:linux_kernel:5.4.230
-
cpe:2.3:o:linux:linux_kernel:5.4.231
-
cpe:2.3:o:linux:linux_kernel:5.4.232
-
cpe:2.3:o:linux:linux_kernel:5.4.233
-
cpe:2.3:o:linux:linux_kernel:5.4.234
-
cpe:2.3:o:linux:linux_kernel:5.4.235
-
cpe:2.3:o:linux:linux_kernel:5.4.236
-
cpe:2.3:o:linux:linux_kernel:5.4.237
-
cpe:2.3:o:linux:linux_kernel:5.4.238
-
cpe:2.3:o:linux:linux_kernel:5.4.239
-
cpe:2.3:o:linux:linux_kernel:5.4.240
-
cpe:2.3:o:linux:linux_kernel:5.4.241
-
cpe:2.3:o:linux:linux_kernel:5.4.242
-
cpe:2.3:o:linux:linux_kernel:5.4.243
-
cpe:2.3:o:linux:linux_kernel:5.4.244
-
cpe:2.3:o:linux:linux_kernel:5.4.245
-
cpe:2.3:o:linux:linux_kernel:5.4.246
-
cpe:2.3:o:linux:linux_kernel:5.4.247
-
cpe:2.3:o:linux:linux_kernel:5.4.248
-
cpe:2.3:o:linux:linux_kernel:5.4.249
-
cpe:2.3:o:linux:linux_kernel:5.4.250
-
cpe:2.3:o:linux:linux_kernel:5.4.251
-
cpe:2.3:o:linux:linux_kernel:5.4.252
-
cpe:2.3:o:linux:linux_kernel:5.4.253
-
cpe:2.3:o:linux:linux_kernel:5.4.254
-
cpe:2.3:o:linux:linux_kernel:5.4.255
-
cpe:2.3:o:linux:linux_kernel:5.4.256
-
cpe:2.3:o:linux:linux_kernel:5.4.257
-
cpe:2.3:o:linux:linux_kernel:5.4.258
-
cpe:2.3:o:linux:linux_kernel:5.4.259
-
cpe:2.3:o:linux:linux_kernel:5.4.260
-
cpe:2.3:o:linux:linux_kernel:5.4.261
-
cpe:2.3:o:linux:linux_kernel:5.4.262
-
cpe:2.3:o:linux:linux_kernel:5.4.263
-
cpe:2.3:o:linux:linux_kernel:5.4.264
-
cpe:2.3:o:linux:linux_kernel:5.4.265
-
cpe:2.3:o:linux:linux_kernel:5.4.266
-
cpe:2.3:o:linux:linux_kernel:5.4.267
-
cpe:2.3:o:linux:linux_kernel:5.4.268
-
cpe:2.3:o:linux:linux_kernel:5.4.269
-
cpe:2.3:o:linux:linux_kernel:5.4.270
-
cpe:2.3:o:linux:linux_kernel:5.4.271
-
cpe:2.3:o:linux:linux_kernel:5.4.272
-
cpe:2.3:o:linux:linux_kernel:5.4.273
-
cpe:2.3:o:linux:linux_kernel:5.4.274
-
cpe:2.3:o:linux:linux_kernel:5.4.275
-
cpe:2.3:o:linux:linux_kernel:5.4.276
-
cpe:2.3:o:linux:linux_kernel:5.4.277
-
cpe:2.3:o:linux:linux_kernel:5.4.278
-
cpe:2.3:o:linux:linux_kernel:5.4.279
-
cpe:2.3:o:linux:linux_kernel:5.4.280
-
cpe:2.3:o:linux:linux_kernel:5.4.281
-
cpe:2.3:o:linux:linux_kernel:5.4.282
-
cpe:2.3:o:linux:linux_kernel:5.4.283
-
cpe:2.3:o:linux:linux_kernel:5.4.284
-
cpe:2.3:o:linux:linux_kernel:5.4.285
-
cpe:2.3:o:linux:linux_kernel:5.4.286
-
cpe:2.3:o:linux:linux_kernel:5.4.287
-
cpe:2.3:o:linux:linux_kernel:5.4.288
-
cpe:2.3:o:linux:linux_kernel:5.4.289
-
cpe:2.3:o:linux:linux_kernel:5.4.290
-
cpe:2.3:o:linux:linux_kernel:5.4.291
-
cpe:2.3:o:linux:linux_kernel:5.4.292
-
cpe:2.3:o:linux:linux_kernel:5.4.293
-
cpe:2.3:o:linux:linux_kernel:5.4.294
-
cpe:2.3:o:linux:linux_kernel:5.4.295
-
cpe:2.3:o:linux:linux_kernel:5.4.296
-
cpe:2.3:o:linux:linux_kernel:5.4.297
-
cpe:2.3:o:linux:linux_kernel:5.4.298
-
cpe:2.3:o:linux:linux_kernel:5.4.299
-
cpe:2.3:o:linux:linux_kernel:5.4.300
-
cpe:2.3:o:linux:linux_kernel:5.4.301
-
cpe:2.3:o:linux:linux_kernel:5.4.302
-
cpe:2.3:o:linux:linux_kernel:6.0
-
cpe:2.3:o:linux:linux_kernel:6.0.1
-
cpe:2.3:o:linux:linux_kernel:6.0.10
-
cpe:2.3:o:linux:linux_kernel:6.0.11
-
cpe:2.3:o:linux:linux_kernel:6.0.12
-
cpe:2.3:o:linux:linux_kernel:6.0.13
-
cpe:2.3:o:linux:linux_kernel:6.0.14
-
cpe:2.3:o:linux:linux_kernel:6.0.15
-
cpe:2.3:o:linux:linux_kernel:6.0.2
-
cpe:2.3:o:linux:linux_kernel:6.0.3
-
cpe:2.3:o:linux:linux_kernel:6.0.4
-
cpe:2.3:o:linux:linux_kernel:6.0.5
-
cpe:2.3:o:linux:linux_kernel:6.0.6
-
cpe:2.3:o:linux:linux_kernel:6.0.7
-
cpe:2.3:o:linux:linux_kernel:6.0.8
-
cpe:2.3:o:linux:linux_kernel:6.0.9
-
cpe:2.3:o:linux:linux_kernel:6.1
-
cpe:2.3:o:linux:linux_kernel:6.1.1