CVE-2024-41038 (GCVE-0-2024-41038)
Vulnerability from cvelistv5
Published
2024-07-29 14:31
Modified
2026-08-05 11:34
Summary
In the Linux kernel, the following vulnerability has been resolved: firmware: cs_dsp: Prevent buffer overrun when processing V2 alg headers Check that all fields of a V2 algorithm header fit into the available firmware data buffer. The wmfw V2 format introduced variable-length strings in the algorithm block header. This means the overall header length is variable, and the position of most fields varies depending on the length of the string fields. Each field must be checked to ensure that it does not overflow the firmware data buffer. As this ia bugfix patch, the fixes avoid making any significant change to the existing code. This makes it easier to review and less likely to introduce new bugs.
Impacted products
Vendor Product Version
Linux Linux Version: f6bc909e7673c30abcbdb329e7d0aa2e83c103d7
Version: f6bc909e7673c30abcbdb329e7d0aa2e83c103d7
Version: f6bc909e7673c30abcbdb329e7d0aa2e83c103d7
Version: f6bc909e7673c30abcbdb329e7d0aa2e83c103d7
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2025-11-03T21:59:35.121Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "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"
          },
          {
            "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-41038",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T16:23:23.396612Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-11T17:34:03.220Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/firmware/cirrus/cs_dsp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6619aa48a011364e9f29083cc76368e6acfe5b11",
              "status": "affected",
              "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7",
              "versionType": "git"
            },
            {
              "lessThan": "76ea8e13aaefdfda6e5601323d6ea5340359dcfa",
              "status": "affected",
              "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7",
              "versionType": "git"
            },
            {
              "lessThan": "014239b9971d79421a0ba652579e1ca1b7b57b6d",
              "status": "affected",
              "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7",
              "versionType": "git"
            },
            {
              "lessThan": "2163aff6bebbb752edf73f79700f5e2095f3559e",
              "status": "affected",
              "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/firmware/cirrus/cs_dsp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.16"
            },
            {
              "lessThan": "5.16",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.100",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.41",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.9.*",
              "status": "unaffected",
              "version": "6.9.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.10",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.100",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.41",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.9.10",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10",
                  "versionStartIncluding": "5.16",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "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": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "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 \u2014 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\u0027s 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 \u2014 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."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:34:53.897Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "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"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-41038",
    "datePublished": "2024-07-29T14:31:52.415Z",
    "dateReserved": "2024-07-12T12:17:45.620Z",
    "dateUpdated": "2026-08-05T11:34:53.897Z",
    "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/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\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"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\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:20.377Z\"}}], \"cna\": {\"title\": \"firmware: cs_dsp: Prevent buffer overrun when processing V2 alg headers\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"f6bc909e7673c30abcbdb329e7d0aa2e83c103d7\", \"lessThan\": \"6619aa48a011364e9f29083cc76368e6acfe5b11\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"f6bc909e7673c30abcbdb329e7d0aa2e83c103d7\", \"lessThan\": \"76ea8e13aaefdfda6e5601323d6ea5340359dcfa\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"f6bc909e7673c30abcbdb329e7d0aa2e83c103d7\", \"lessThan\": \"014239b9971d79421a0ba652579e1ca1b7b57b6d\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"f6bc909e7673c30abcbdb329e7d0aa2e83c103d7\", \"lessThan\": \"2163aff6bebbb752edf73f79700f5e2095f3559e\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/firmware/cirrus/cs_dsp.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5.16\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"5.16\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.1.100\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.41\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.9.10\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.9.*\"}, {\"status\": \"unaffected\", \"version\": \"6.10\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/firmware/cirrus/cs_dsp.c\"], \"defaultStatus\": \"affected\"}], \"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\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"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.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.1.100\", \"versionStartIncluding\": \"5.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.41\", \"versionStartIncluding\": \"5.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.9.10\", \"versionStartIncluding\": \"5.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.10\", \"versionStartIncluding\": \"5.16\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-05-11T20:24:57.965Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-41038\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-05-11T20:24:57.965Z\", \"dateReserved\": \"2024-07-12T12:17:45.620Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-07-29T14:31:52.415Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

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…