CVE-2024-26971 (GCVE-0-2024-26971)
Vulnerability from cvelistv5
Published
2024-05-01 05:19
Modified
2026-08-05 11:28
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
clk: qcom: gcc-ipq5018: fix terminating of frequency table arrays
The frequency table arrays are supposed to be terminated with an
empty element. Add such entry to the end of the arrays where it
is missing in order to avoid possible out-of-bound access when
the table is traversed by functions like qcom_find_freq() or
qcom_find_freq_floor().
References
| URL | Tags | |
|---|---|---|
Impacted products
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2024-26971",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2024-05-01T13:37:17.172214Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2024-07-05T17:22:44.592Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
},
{
"providerMetadata": {
"dateUpdated": "2024-08-02T00:21:05.667Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"tags": [
"x_transferred"
],
"url": "https://git.kernel.org/stable/c/b0cf3d200e8a72b6d28e6e088c062b4a98cb5eaf"
},
{
"tags": [
"x_transferred"
],
"url": "https://git.kernel.org/stable/c/c8f4bef0667947b826848db1c45a645f751357c1"
},
{
"tags": [
"x_transferred"
],
"url": "https://git.kernel.org/stable/c/50c3acd460551cdf9d8ac6fe0c04f2de0e8e0872"
},
{
"tags": [
"x_transferred"
],
"url": "https://git.kernel.org/stable/c/90ad946fff70f312b8d23226afc38c13ddd88c4b"
}
],
"title": "CVE Program Container"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/clk/qcom/gcc-ipq5018.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "b0cf3d200e8a72b6d28e6e088c062b4a98cb5eaf",
"status": "affected",
"version": "e3fdbef1bab8e372981c8cc4d8febbaa76c490b0",
"versionType": "git"
},
{
"lessThan": "c8f4bef0667947b826848db1c45a645f751357c1",
"status": "affected",
"version": "e3fdbef1bab8e372981c8cc4d8febbaa76c490b0",
"versionType": "git"
},
{
"lessThan": "50c3acd460551cdf9d8ac6fe0c04f2de0e8e0872",
"status": "affected",
"version": "e3fdbef1bab8e372981c8cc4d8febbaa76c490b0",
"versionType": "git"
},
{
"lessThan": "90ad946fff70f312b8d23226afc38c13ddd88c4b",
"status": "affected",
"version": "e3fdbef1bab8e372981c8cc4d8febbaa76c490b0",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/clk/qcom/gcc-ipq5018.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.6"
},
{
"lessThan": "6.6",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.24",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.7.*",
"status": "unaffected",
"version": "6.7.12",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.8.*",
"status": "unaffected",
"version": "6.8.3",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "6.9",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.24",
"versionStartIncluding": "6.6",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.7.12",
"versionStartIncluding": "6.6",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.8.3",
"versionStartIncluding": "6.6",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.9",
"versionStartIncluding": "6.6",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nclk: qcom: gcc-ipq5018: fix terminating of frequency table arrays\n\nThe frequency table arrays are supposed to be terminated with an\nempty element. Add such entry to the end of the arrays where it\nis missing in order to avoid possible out-of-bound access when\nthe table is traversed by functions like qcom_find_freq() or\nqcom_find_freq_floor()."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.3,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The vulnerable code is an on-SoC global clock controller driver reached only through in-kernel `clk_set_rate()`/`clk_round_rate()` calls on the local device; no network protocol, packet, or remote peer data reaches the frequency-table walk.\nAC:L - The over-read is fully deterministic \u2014 any rate request exceeding the table\u0027s largest entry runs the loop off the array end with no race, timing window, or memory-layout precondition involved.\nPR:L - No real-root capability check guards the rate-setting path; the affected RCGs are re-programmed by consumer drivers on paths an unprivileged local user can provoke (device-node open triggering runtime-PM resume on the USB/PCIe controllers, QPIC/NAND I/O), so basic local user privileges are sufficient rather than init-namespace root.\nUI:N - The out-of-bounds walk occurs entirely within kernel clock-rate handling during normal driver operation; no victim must open a file, mount a filesystem, or take any other action.\nS:U - The over-read and its consequences stay within the kernel\u0027s own security authority \u2014 there is no VM, IOMMU, or sandbox boundary crossed.\nC:H - The loop performs an unbounded out-of-bounds read of kernel `.rodata` past the array, and the read `freq` field is propagated back as the clock rate visible through the clk debugfs/round-rate interfaces, so out-of-bounds kernel memory \u2014 potentially including relocated pointers usable to defeat KASLR \u2014 is disclosed; the read is not bounded to a few bytes.\nI:L - There is no out-of-bounds write and no kernel memory corruption \u2014 `src` is validated by `qcom_find_src_index()` and `m`/`n`/`pre_div` are masked before reaching hardware \u2014 but out-of-bounds-derived values are still programmed into the SoC\u0027s RCG clock-control registers, mis-configuring the PCIe/USB aux, QPIC NAND I/O-macro, or UBI32 core clocks and thereby corrupting data clocked through the NAND interface.\nA:H - With `IPQ_GCC_5018` built as a module the tables sit in vmalloc\u0027d module `.rodata`, so the runaway walk can hit an unmapped guard region and oops the kernel, and programming garbage divider/source values into the PCIe, USB, QPIC, or UBI32 clock RCGs can hang the affected peripheral or the SoC outright."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-05T11:28:46.226Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/b0cf3d200e8a72b6d28e6e088c062b4a98cb5eaf"
},
{
"url": "https://git.kernel.org/stable/c/c8f4bef0667947b826848db1c45a645f751357c1"
},
{
"url": "https://git.kernel.org/stable/c/50c3acd460551cdf9d8ac6fe0c04f2de0e8e0872"
},
{
"url": "https://git.kernel.org/stable/c/90ad946fff70f312b8d23226afc38c13ddd88c4b"
}
],
"title": "clk: qcom: gcc-ipq5018: fix terminating of frequency table arrays",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2024-26971",
"datePublished": "2024-05-01T05:19:59.773Z",
"dateReserved": "2024-02-19T14:20:24.202Z",
"dateUpdated": "2026-08-05T11:28:46.226Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/b0cf3d200e8a72b6d28e6e088c062b4a98cb5eaf\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/c8f4bef0667947b826848db1c45a645f751357c1\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/50c3acd460551cdf9d8ac6fe0c04f2de0e8e0872\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/90ad946fff70f312b8d23226afc38c13ddd88c4b\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T00:21:05.667Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-26971\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-05-01T13:37:17.172214Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-07-05T15:20:43.728Z\"}}], \"cna\": {\"title\": \"clk: qcom: gcc-ipq5018: fix terminating of frequency table arrays\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.3, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerable code is an on-SoC global clock controller driver reached only through in-kernel `clk_set_rate()`/`clk_round_rate()` calls on the local device; no network protocol, packet, or remote peer data reaches the frequency-table walk.\\nAC:L - The over-read is fully deterministic \\u2014 any rate request exceeding the table\u0027s largest entry runs the loop off the array end with no race, timing window, or memory-layout precondition involved.\\nPR:L - No real-root capability check guards the rate-setting path; the affected RCGs are re-programmed by consumer drivers on paths an unprivileged local user can provoke (device-node open triggering runtime-PM resume on the USB/PCIe controllers, QPIC/NAND I/O), so basic local user privileges are sufficient rather than init-namespace root.\\nUI:N - The out-of-bounds walk occurs entirely within kernel clock-rate handling during normal driver operation; no victim must open a file, mount a filesystem, or take any other action.\\nS:U - The over-read and its consequences stay within the kernel\u0027s own security authority \\u2014 there is no VM, IOMMU, or sandbox boundary crossed.\\nC:H - The loop performs an unbounded out-of-bounds read of kernel `.rodata` past the array, and the read `freq` field is propagated back as the clock rate visible through the clk debugfs/round-rate interfaces, so out-of-bounds kernel memory \\u2014 potentially including relocated pointers usable to defeat KASLR \\u2014 is disclosed; the read is not bounded to a few bytes.\\nI:L - There is no out-of-bounds write and no kernel memory corruption \\u2014 `src` is validated by `qcom_find_src_index()` and `m`/`n`/`pre_div` are masked before reaching hardware \\u2014 but out-of-bounds-derived values are still programmed into the SoC\u0027s RCG clock-control registers, mis-configuring the PCIe/USB aux, QPIC NAND I/O-macro, or UBI32 core clocks and thereby corrupting data clocked through the NAND interface.\\nA:H - With `IPQ_GCC_5018` built as a module the tables sit in vmalloc\u0027d module `.rodata`, so the runaway walk can hit an unmapped guard region and oops the kernel, and programming garbage divider/source values into the PCIe, USB, QPIC, or UBI32 clock RCGs can hang the affected peripheral or the SoC outright.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"e3fdbef1bab8e372981c8cc4d8febbaa76c490b0\", \"lessThan\": \"b0cf3d200e8a72b6d28e6e088c062b4a98cb5eaf\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"e3fdbef1bab8e372981c8cc4d8febbaa76c490b0\", \"lessThan\": \"c8f4bef0667947b826848db1c45a645f751357c1\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"e3fdbef1bab8e372981c8cc4d8febbaa76c490b0\", \"lessThan\": \"50c3acd460551cdf9d8ac6fe0c04f2de0e8e0872\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"e3fdbef1bab8e372981c8cc4d8febbaa76c490b0\", \"lessThan\": \"90ad946fff70f312b8d23226afc38c13ddd88c4b\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/clk/qcom/gcc-ipq5018.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.6\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.6\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.24\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.7.12\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.7.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8.3\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.8.*\"}, {\"status\": \"unaffected\", \"version\": \"6.9\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/clk/qcom/gcc-ipq5018.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/b0cf3d200e8a72b6d28e6e088c062b4a98cb5eaf\"}, {\"url\": \"https://git.kernel.org/stable/c/c8f4bef0667947b826848db1c45a645f751357c1\"}, {\"url\": \"https://git.kernel.org/stable/c/50c3acd460551cdf9d8ac6fe0c04f2de0e8e0872\"}, {\"url\": \"https://git.kernel.org/stable/c/90ad946fff70f312b8d23226afc38c13ddd88c4b\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nclk: qcom: gcc-ipq5018: fix terminating of frequency table arrays\\n\\nThe frequency table arrays are supposed to be terminated with an\\nempty element. Add such entry to the end of the arrays where it\\nis missing in order to avoid possible out-of-bound access when\\nthe table is traversed by functions like qcom_find_freq() or\\nqcom_find_freq_floor().\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.24\", \"versionStartIncluding\": \"6.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.7.12\", \"versionStartIncluding\": \"6.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8.3\", \"versionStartIncluding\": \"6.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.9\", \"versionStartIncluding\": \"6.6\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:28:46.226Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2024-26971\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:28:46.226Z\", \"dateReserved\": \"2024-02-19T14:20:24.202Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-01T05:19:59.773Z\", \"assignerShortName\": \"Linux\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…