Vulnerability Details CVE-2024-35902
In the Linux kernel, the following vulnerability has been resolved:
net/rds: fix possible cp null dereference
cp might be null, calling cp->cp_conn would produce null dereference
[Simon Horman adds:]
Analysis:
* cp is a parameter of __rds_rdma_map and is not reassigned.
* The following call-sites pass a NULL cp argument to __rds_rdma_map()
- rds_get_mr()
- rds_get_mr_for_dest
* Prior to the code above, the following assumes that cp may be NULL
(which is indicative, but could itself be unnecessary)
trans_private = rs->rs_transport->get_mr(
sg, nents, rs, &mr->r_key, cp ? cp->cp_conn : NULL,
args->vec.addr, args->vec.bytes,
need_odp ? ODP_ZEROBASED : ODP_NOT_NEEDED);
* The code modified by this patch is guarded by IS_ERR(trans_private),
where trans_private is assigned as per the previous point in this analysis.
The only implementation of get_mr that I could locate is rds_ib_get_mr()
which can return an ERR_PTR if the conn (4th) argument is NULL.
* ret is set to PTR_ERR(trans_private).
rds_ib_get_mr can return ERR_PTR(-ENODEV) if the conn (4th) argument is NULL.
Thus ret may be -ENODEV in which case the code in question will execute.
Conclusion:
* cp may be NULL at the point where this patch adds a check;
this patch does seem to address a possible bug
Exploit prediction scoring system (EPSS) score
EPSS Score 0.0
EPSS Ranking 1.5%
CVSS Severity
CVSS v3 Score 5.5
Products affected by CVE-2024-35902
-
cpe:2.3:o:debian:debian_linux:10.0
-
cpe:2.3:o:linux:linux_kernel:4.19.310
-
cpe:2.3:o:linux:linux_kernel:4.19.311
-
cpe:2.3:o:linux:linux_kernel:5.10.213
-
cpe:2.3:o:linux:linux_kernel:5.10.214
-
cpe:2.3:o:linux:linux_kernel:5.15.152
-
cpe:2.3:o:linux:linux_kernel:5.15.153
-
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.297
-
cpe:2.3:o:linux:linux_kernel:5.5
-
cpe:2.3:o:linux:linux_kernel:5.5.0
-
cpe:2.3:o:linux:linux_kernel:5.5.1
-
cpe:2.3:o:linux:linux_kernel:5.5.10
-
cpe:2.3:o:linux:linux_kernel:5.5.11
-
cpe:2.3:o:linux:linux_kernel:5.5.12
-
cpe:2.3:o:linux:linux_kernel:5.5.13
-
cpe:2.3:o:linux:linux_kernel:5.5.14
-
cpe:2.3:o:linux:linux_kernel:5.5.15
-
cpe:2.3:o:linux:linux_kernel:5.5.16
-
cpe:2.3:o:linux:linux_kernel:5.5.17
-
cpe:2.3:o:linux:linux_kernel:5.5.18
-
cpe:2.3:o:linux:linux_kernel:5.5.19
-
cpe:2.3:o:linux:linux_kernel:5.5.2
-
cpe:2.3:o:linux:linux_kernel:5.5.3
-
cpe:2.3:o:linux:linux_kernel:5.5.4
-
cpe:2.3:o:linux:linux_kernel:5.5.5
-
cpe:2.3:o:linux:linux_kernel:5.5.6
-
cpe:2.3:o:linux:linux_kernel:5.5.7
-
cpe:2.3:o:linux:linux_kernel:5.5.8
-
cpe:2.3:o:linux:linux_kernel:5.5.9
-
cpe:2.3:o:linux:linux_kernel:5.6
-
cpe:2.3:o:linux:linux_kernel:5.6.1
-
cpe:2.3:o:linux:linux_kernel:5.6.10
-
cpe:2.3:o:linux:linux_kernel:5.6.11
-
cpe:2.3:o:linux:linux_kernel:5.6.12
-
cpe:2.3:o:linux:linux_kernel:5.6.13
-
cpe:2.3:o:linux:linux_kernel:5.6.14
-
cpe:2.3:o:linux:linux_kernel:5.6.15
-
cpe:2.3:o:linux:linux_kernel:5.6.16
-
cpe:2.3:o:linux:linux_kernel:5.6.17
-
cpe:2.3:o:linux:linux_kernel:5.6.18
-
cpe:2.3:o:linux:linux_kernel:5.6.19
-
cpe:2.3:o:linux:linux_kernel:5.6.2
-
cpe:2.3:o:linux:linux_kernel:5.6.3
-
cpe:2.3:o:linux:linux_kernel:5.6.4
-
cpe:2.3:o:linux:linux_kernel:5.6.5
-
cpe:2.3:o:linux:linux_kernel:5.6.6
-
cpe:2.3:o:linux:linux_kernel:5.6.7
-
cpe:2.3:o:linux:linux_kernel:5.6.7-1
-
cpe:2.3:o:linux:linux_kernel:5.6.8
-
cpe:2.3:o:linux:linux_kernel:5.6.9
-
cpe:2.3:o:linux:linux_kernel:5.7
-
cpe:2.3:o:linux:linux_kernel:5.7.0
-
cpe:2.3:o:linux:linux_kernel:5.7.1
-
cpe:2.3:o:linux:linux_kernel:5.7.10
-
cpe:2.3:o:linux:linux_kernel:5.7.11
-
cpe:2.3:o:linux:linux_kernel:5.7.12
-
cpe:2.3:o:linux:linux_kernel:5.7.13
-
cpe:2.3:o:linux:linux_kernel:5.7.14
-
cpe:2.3:o:linux:linux_kernel:5.7.15
-
cpe:2.3:o:linux:linux_kernel:5.7.16
-
cpe:2.3:o:linux:linux_kernel:5.7.17
-
cpe:2.3:o:linux:linux_kernel:5.7.18
-
cpe:2.3:o:linux:linux_kernel:5.7.19
-
cpe:2.3:o:linux:linux_kernel:5.7.2
-
cpe:2.3:o:linux:linux_kernel:5.7.3
-
cpe:2.3:o:linux:linux_kernel:5.7.4
-
cpe:2.3:o:linux:linux_kernel:5.7.5
-
cpe:2.3:o:linux:linux_kernel:5.7.6
-
cpe:2.3:o:linux:linux_kernel:5.7.7
-
cpe:2.3:o:linux:linux_kernel:5.7.8
-
cpe:2.3:o:linux:linux_kernel:5.7.9
-
cpe:2.3:o:linux:linux_kernel:6.1.82
-
cpe:2.3:o:linux:linux_kernel:6.1.83
-
cpe:2.3:o:linux:linux_kernel:6.1.84
-
cpe:2.3:o:linux:linux_kernel:6.6.22
-
cpe:2.3:o:linux:linux_kernel:6.6.23
-
cpe:2.3:o:linux:linux_kernel:6.6.24
-
cpe:2.3:o:linux:linux_kernel:6.6.25
-
cpe:2.3:o:linux:linux_kernel:6.7.10
-
cpe:2.3:o:linux:linux_kernel:6.7.11
-
cpe:2.3:o:linux:linux_kernel:6.7.12
-
cpe:2.3:o:linux:linux_kernel:6.8
-
cpe:2.3:o:linux:linux_kernel:6.8.1
-
cpe:2.3:o:linux:linux_kernel:6.8.2
-
cpe:2.3:o:linux:linux_kernel:6.8.3
-
cpe:2.3:o:linux:linux_kernel:6.8.4
-
cpe:2.3:o:linux:linux_kernel:6.9