Lucene search

K
cvelistLinuxCVELIST:CVE-2024-35902
HistoryMay 19, 2024 - 8:34 a.m.

CVE-2024-35902 net/rds: fix possible cp null dereference

2024-05-1908:34:55
Linux
www.cve.org
8
linux kernel
cve-2024-35902
net/rds
null dereference
fix
vulnerability
analysis
patch

AI Score

6.5

Confidence

High

EPSS

0

Percentile

13.0%

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

CNA Affected

[
  {
    "product": "Linux",
    "vendor": "Linux",
    "defaultStatus": "unaffected",
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "programFiles": [
      "net/rds/rdma.c"
    ],
    "versions": [
      {
        "version": "786854141057",
        "lessThan": "d275de8ea7be",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "997efea2bf3a",
        "lessThan": "bcd46782e2ec",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "9dfc15a10dfd",
        "lessThan": "cfb786b03b03",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "b562ebe21ed9",
        "lessThan": "d49fac38479b",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "998fd719e6d6",
        "lessThan": "cbaac2e5488e",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "2b505d052807",
        "lessThan": "92309bed3c5f",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "c055fc00c07b",
        "lessThan": "6794090c7420",
        "status": "affected",
        "versionType": "git"
      },
      {
        "version": "c055fc00c07b",
        "lessThan": "62fc3357e079",
        "status": "affected",
        "versionType": "git"
      }
    ]
  },
  {
    "product": "Linux",
    "vendor": "Linux",
    "defaultStatus": "affected",
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "programFiles": [
      "net/rds/rdma.c"
    ],
    "versions": [
      {
        "version": "6.8",
        "status": "affected"
      },
      {
        "version": "0",
        "lessThan": "6.8",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "4.19.312",
        "lessThanOrEqual": "4.19.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "5.4.274",
        "lessThanOrEqual": "5.4.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "5.10.215",
        "lessThanOrEqual": "5.10.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "5.15.154",
        "lessThanOrEqual": "5.15.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "6.1.85",
        "lessThanOrEqual": "6.1.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "6.6.26",
        "lessThanOrEqual": "6.6.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "6.8.5",
        "lessThanOrEqual": "6.8.*",
        "status": "unaffected",
        "versionType": "custom"
      },
      {
        "version": "6.9",
        "lessThanOrEqual": "*",
        "status": "unaffected",
        "versionType": "original_commit_for_fix"
      }
    ]
  }
]

AI Score

6.5

Confidence

High

EPSS

0

Percentile

13.0%