In the Linux kernel, the following vulnerability has been resolved:
firmware_loader: Block path traversal
Most firmware names are hardcoded strings, or are constructed from fairly constrained format strings where the dynamic parts are just some hex numbers or such.
However, there are a couple codepaths in the kernel where firmware file names contain string components that are passed through from a device or semi-privileged userspace; the ones I could find (not counting interfaces that require root privileges) are:
Fix it by rejecting any firmware names containing ".." path components.
For what it's worth, I went looking and haven't found any USB device drivers that use the firmware loader dangerously.
{ "vanir_signatures": [ { "signature_version": "v1", "signature_type": "Line", "target": { "file": "drivers/base/firmware_loader/main.c" }, "deprecated": false, "digest": { "line_hashes": [ "236724878592176735933060272624060054534", "303093417354175339959713524761990272827", "218970930052568912908858013462536527857", "68102978614633853436829295562120117566", "314611746282313285124019558769632023394", "309466892352412532292268749653770324643", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ], "threshold": 0.9 }, "id": "CVE-2024-47742-b90eb436", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7420c1bf7fc784e587b87329cc6dfa3dca537aa4" }, { "signature_version": "v1", "signature_type": "Function", "target": { "file": "drivers/base/firmware_loader/main.c", "function": "_request_firmware" }, "deprecated": false, "digest": { "length": 1437.0, "function_hash": "48649628022712374072385341045795527832" }, "id": "CVE-2024-47742-f61a0128", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7420c1bf7fc784e587b87329cc6dfa3dca537aa4" } ] }