CVE-2024-41056 (GCVE-0-2024-41056)
Vulnerability from cvelistv5
Published
2024-07-29 14:33
Modified
2026-08-05 11:35
Summary
In the Linux kernel, the following vulnerability has been resolved: firmware: cs_dsp: Use strnlen() on name fields in V1 wmfw files Use strnlen() instead of strlen() on the algorithm and coefficient name string arrays in V1 wmfw files. In V1 wmfw files the name is a NUL-terminated string in a fixed-size array. cs_dsp should protect against overrunning the array if the NUL terminator is missing.
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:55.872Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/16d76857d6b5426f41b587d0bb925de3f25bfb21"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/392cff2f86a25a4286ff3151c7739143c61c1781"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/53a9f8cdbf35a682e9894e1a606f4640e5359185"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/680e126ec0400f6daecf0510c5bb97a55779ff03"
          },
          {
            "url": "https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-41056",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T16:22:25.022416Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-11T17:34:01.793Z",
          "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": "16d76857d6b5426f41b587d0bb925de3f25bfb21",
              "status": "affected",
              "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7",
              "versionType": "git"
            },
            {
              "lessThan": "392cff2f86a25a4286ff3151c7739143c61c1781",
              "status": "affected",
              "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7",
              "versionType": "git"
            },
            {
              "lessThan": "53a9f8cdbf35a682e9894e1a606f4640e5359185",
              "status": "affected",
              "version": "f6bc909e7673c30abcbdb329e7d0aa2e83c103d7",
              "versionType": "git"
            },
            {
              "lessThan": "680e126ec0400f6daecf0510c5bb97a55779ff03",
              "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: Use strnlen() on name fields in V1 wmfw files\n\nUse strnlen() instead of strlen() on the algorithm and coefficient name\nstring arrays in V1 wmfw files.\n\nIn V1 wmfw files the name is a NUL-terminated string in a fixed-size\narray. cs_dsp should protect against overrunning the array if the NUL\nterminator is missing."
        }
      ],
      "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 malicious V1 wmfw blob is delivered through `request_firmware()`/`firmware_request_nowarn()` from the local filesystem and parsed by `cs_dsp_load()`; the load is initiated locally at driver probe, DAPM stream start, or via the DSP preload ALSA control. No remote or adjacent-bus peer data reaches this parser.\nAC:L - The attacker authors the entire file, so simply omitting the NUL terminator and keeping every byte to EOF non-zero makes `strlen()` deterministically run off the end of the `vmalloc()`\u0027d firmware buffer \u2014 no race, timing window, or memory-layout luck is involved, and the parse can be re-triggered on demand through the preload control.\nPR:L - The parse is triggered by any unprivileged local user with `/dev/snd` access (`wm_adsp2_preloader_put()` and normal playback/DAPM power-up perform no capability check), and the blob is not always root-exclusive in practice \u2014 firmware-staging/update agents, bind-mounts over `/lib/firmware/updates`, and delegated fallback-loader setups can place it within reach of a low-privileged account; choosing the higher-severity option between L and H.\nUI:N - Once the crafted wmfw is in place it is fetched and parsed automatically at driver probe or first audio stream, and the attacker can force the load from their own process via the DSP preloader; no victim action is required.\nS:U - The over-read and its consequences stay within the kernel\u0027s own security authority (the cs_dsp parser and the codec it drives); no hypervisor, IOMMU, or sandbox boundary is crossed.\nC:H - `strlen()` on an unterminated 256-byte array performs an unbounded out-of-bounds read that first traverses the un-zeroed tail of the final `vmalloc()` page \u2014 stale kernel page contents \u2014 and those bytes are echoed to the kernel log through the `cs_dsp_dbg(\"Algorithm name: %.*s\")`/`(\"Coefficient name: %.*s\")` prints, so the disclosure is neither bounded to a few bytes nor confined to the driver.\nI:L - The out-of-bounds-derived `name_len` is propagated as `subname_len` into `cs_dsp_create_control()`, where it decides whether an existing control is reused or a new one is added, leaving driver control state inconsistent with the file; this is bounded, attacker-influenced modification with no arbitrary-write primitive, since the V1 path does not copy the name (`fw_ver \u003e= 2` gate).\nA:H - With no NUL byte before EOF the scan walks past the end of the `vmalloc()`\u0027d firmware buffer into the guard page, producing an unhandled page fault/oops (and a KASAN out-of-bounds panic on hardened builds), which an unprivileged user can re-trigger at will through the DSP preload control."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:35:02.501Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/16d76857d6b5426f41b587d0bb925de3f25bfb21"
        },
        {
          "url": "https://git.kernel.org/stable/c/392cff2f86a25a4286ff3151c7739143c61c1781"
        },
        {
          "url": "https://git.kernel.org/stable/c/53a9f8cdbf35a682e9894e1a606f4640e5359185"
        },
        {
          "url": "https://git.kernel.org/stable/c/680e126ec0400f6daecf0510c5bb97a55779ff03"
        }
      ],
      "title": "firmware: cs_dsp: Use strnlen() on name fields in V1 wmfw files",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-41056",
    "datePublished": "2024-07-29T14:33:27.453Z",
    "dateReserved": "2024-07-12T12:17:45.627Z",
    "dateUpdated": "2026-08-05T11:35:02.501Z",
    "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/16d76857d6b5426f41b587d0bb925de3f25bfb21\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/392cff2f86a25a4286ff3151c7739143c61c1781\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/53a9f8cdbf35a682e9894e1a606f4640e5359185\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/680e126ec0400f6daecf0510c5bb97a55779ff03\", \"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:55.872Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-41056\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-10T16:22:25.022416Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:20.258Z\"}}], \"cna\": {\"title\": \"firmware: cs_dsp: Use strnlen() on name fields in V1 wmfw files\", \"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 malicious V1 wmfw blob is delivered through `request_firmware()`/`firmware_request_nowarn()` from the local filesystem and parsed by `cs_dsp_load()`; the load is initiated locally at driver probe, DAPM stream start, or via the DSP preload ALSA control. No remote or adjacent-bus peer data reaches this parser.\\nAC:L - The attacker authors the entire file, so simply omitting the NUL terminator and keeping every byte to EOF non-zero makes `strlen()` deterministically run off the end of the `vmalloc()`\u0027d firmware buffer \\u2014 no race, timing window, or memory-layout luck is involved, and the parse can be re-triggered on demand through the preload control.\\nPR:L - The parse is triggered by any unprivileged local user with `/dev/snd` access (`wm_adsp2_preloader_put()` and normal playback/DAPM power-up perform no capability check), and the blob is not always root-exclusive in practice \\u2014 firmware-staging/update agents, bind-mounts over `/lib/firmware/updates`, and delegated fallback-loader setups can place it within reach of a low-privileged account; choosing the higher-severity option between L and H.\\nUI:N - Once the crafted wmfw is in place it is fetched and parsed automatically at driver probe or first audio stream, and the attacker can force the load from their own process via the DSP preloader; no victim action is required.\\nS:U - The over-read and its consequences stay within the kernel\u0027s own security authority (the cs_dsp parser and the codec it drives); no hypervisor, IOMMU, or sandbox boundary is crossed.\\nC:H - `strlen()` on an unterminated 256-byte array performs an unbounded out-of-bounds read that first traverses the un-zeroed tail of the final `vmalloc()` page \\u2014 stale kernel page contents \\u2014 and those bytes are echoed to the kernel log through the `cs_dsp_dbg(\\\"Algorithm name: %.*s\\\")`/`(\\\"Coefficient name: %.*s\\\")` prints, so the disclosure is neither bounded to a few bytes nor confined to the driver.\\nI:L - The out-of-bounds-derived `name_len` is propagated as `subname_len` into `cs_dsp_create_control()`, where it decides whether an existing control is reused or a new one is added, leaving driver control state inconsistent with the file; this is bounded, attacker-influenced modification with no arbitrary-write primitive, since the V1 path does not copy the name (`fw_ver \u003e= 2` gate).\\nA:H - With no NUL byte before EOF the scan walks past the end of the `vmalloc()`\u0027d firmware buffer into the guard page, producing an unhandled page fault/oops (and a KASAN out-of-bounds panic on hardened builds), which an unprivileged user can re-trigger at will through the DSP preload control.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"f6bc909e7673c30abcbdb329e7d0aa2e83c103d7\", \"lessThan\": \"16d76857d6b5426f41b587d0bb925de3f25bfb21\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"f6bc909e7673c30abcbdb329e7d0aa2e83c103d7\", \"lessThan\": \"392cff2f86a25a4286ff3151c7739143c61c1781\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"f6bc909e7673c30abcbdb329e7d0aa2e83c103d7\", \"lessThan\": \"53a9f8cdbf35a682e9894e1a606f4640e5359185\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"f6bc909e7673c30abcbdb329e7d0aa2e83c103d7\", \"lessThan\": \"680e126ec0400f6daecf0510c5bb97a55779ff03\", \"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/16d76857d6b5426f41b587d0bb925de3f25bfb21\"}, {\"url\": \"https://git.kernel.org/stable/c/392cff2f86a25a4286ff3151c7739143c61c1781\"}, {\"url\": \"https://git.kernel.org/stable/c/53a9f8cdbf35a682e9894e1a606f4640e5359185\"}, {\"url\": \"https://git.kernel.org/stable/c/680e126ec0400f6daecf0510c5bb97a55779ff03\"}], \"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: Use strnlen() on name fields in V1 wmfw files\\n\\nUse strnlen() instead of strlen() on the algorithm and coefficient name\\nstring arrays in V1 wmfw files.\\n\\nIn V1 wmfw files the name is a NUL-terminated string in a fixed-size\\narray. cs_dsp should protect against overrunning the array if the NUL\\nterminator is missing.\"}], \"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-08-05T11:35:02.501Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-41056\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:35:02.501Z\", \"dateReserved\": \"2024-07-12T12:17:45.627Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-07-29T14:33:27.453Z\", \"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…