{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2024-41038", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2024-07-12T12:17:45.620Z", "datePublished": "2024-07-29T14:31:52.415Z", "dateUpdated": "2026-08-05T11:34:53.897Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:34:53.897Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfirmware: cs_dsp: Prevent buffer overrun when processing V2 alg headers\n\nCheck that all fields of a V2 algorithm header fit into the available\nfirmware data buffer.\n\nThe wmfw V2 format introduced variable-length strings in the algorithm\nblock header. This means the overall header length is variable, and the\nposition of most fields varies depending on the length of the string\nfields. Each field must be checked to ensure that it does not overflow\nthe firmware data buffer.\n\nAs this ia bugfix patch, the fixes avoid making any significant change to\nthe existing code. This makes it easier to review and less likely to\nintroduce new bugs." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:L - The malicious wmfw data is consumed from the local filesystem via request_firmware() when the Cirrus DSP is powered up; there is no network or bus-remote path to the parser.\nAC:L - Every field driving the overrun (string length prefixes, ncoeff, per-block size) is directly attacker-controlled in the file, parsing is fully deterministic, and no race or specific memory layout is required.\nPR:N - The attacker needs no account or privilege on the target system — they only craft the wmfw/tuning file, which is exactly how third-party Cirrus DSP firmware is distributed for cs35l41/cs35l56 laptops and phones.\nUI:R - A user or admin must install the crafted firmware file into the firmware search path; once present it is parsed automatically on every DSP power-up with no further interaction.\nS:U - The out-of-bounds accesses and resulting disclosure/crash are confined to the host kernel's own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The unbounded, attacker-positioned out-of-bounds read copies up to 255 bytes of arbitrary adjacent kernel memory into ALSA control names via kasprintf(), which are then enumerable from userspace — a repeatable kernel memory disclosure sufficient to defeat KASLR and leak heap secrets.\nI:H - Out-of-bounds data populates control offset, mem_type, flags and len, which size kernel allocations and bound subsequent DSP memory writes, so the corruption propagates into kernel object state under attacker control.\nA:H - The parse cursor advances by attacker-chosen amounts (up to 4 GB per block across up to 2^31 iterations) past the firmware buffer, reliably dereferencing unmapped memory and producing a kernel oops/panic." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/firmware/cirrus/cs_dsp.c" ], "versions": [ { "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7", "lessThan": "6619aa48a011364e9f29083cc76368e6acfe5b11", "status": "affected", "versionType": "git" }, { "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7", "lessThan": "76ea8e13aaefdfda6e5601323d6ea5340359dcfa", "status": "affected", "versionType": "git" }, { "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7", "lessThan": "014239b9971d79421a0ba652579e1ca1b7b57b6d", "status": "affected", "versionType": "git" }, { "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7", "lessThan": "2163aff6bebbb752edf73f79700f5e2095f3559e", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/firmware/cirrus/cs_dsp.c" ], "versions": [ { "version": "5.16", "status": "affected" }, { "version": "0", "lessThan": "5.16", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.100", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.41", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.9.10", "lessThanOrEqual": "6.9.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.10", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.1.100" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.6.41" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.9.10" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.10" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/6619aa48a011364e9f29083cc76368e6acfe5b11" }, { "url": "https://git.kernel.org/stable/c/76ea8e13aaefdfda6e5601323d6ea5340359dcfa" }, { "url": "https://git.kernel.org/stable/c/014239b9971d79421a0ba652579e1ca1b7b57b6d" }, { "url": "https://git.kernel.org/stable/c/2163aff6bebbb752edf73f79700f5e2095f3559e" } ], "title": "firmware: cs_dsp: Prevent buffer overrun when processing V2 alg headers", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "title": "CVE Program Container", "references": [ { "url": "https://git.kernel.org/stable/c/6619aa48a011364e9f29083cc76368e6acfe5b11", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/76ea8e13aaefdfda6e5601323d6ea5340359dcfa", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/014239b9971d79421a0ba652579e1ca1b7b57b6d", "tags": [ "x_transferred" ] }, { "url": "https://git.kernel.org/stable/c/2163aff6bebbb752edf73f79700f5e2095f3559e", "tags": [ "x_transferred" ] }, { "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2025-11-03T21:59:35.121Z" } }, { "metrics": [ { "other": { "type": "ssvc", "content": { "id": "CVE-2024-41038", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "version": "2.0.3", "timestamp": "2024-09-10T16:23:23.396612Z" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2024-09-11T17:34:03.220Z" } } ] } }