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.
[ { "signature_type": "Line", "id": "CVE-2024-47742-0a5adc04", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c30558e6c5c9ad6c86459d9acce1520ceeab9ea6", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "262073183939021215102016108438962853088", "83750589755285664446889067095434608905", "35058261455790097580696347624654476879", "68102978614633853436829295562120117566", "314611746282313285124019558769632023394", "309466892352412532292268749653770324643", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-47742-2623fb23", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@28f1cd94d3f1092728fb775a0fe26c5f1ac2ebeb", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "236724878592176735933060272624060054534", "303093417354175339959713524761990272827", "218970930052568912908858013462536527857", "68102978614633853436829295562120117566", "314611746282313285124019558769632023394", "309466892352412532292268749653770324643", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-47742-311fb9c2", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d1768e5535d3ded59f888637016e6f821f4e069f", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "262073183939021215102016108438962853088", "83750589755285664446889067095434608905", "35058261455790097580696347624654476879", "68102978614633853436829295562120117566", "159852114363451342453180057090180362406", "192911471960615503991104542874260361299", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-37187718", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a77fc4acfd49fc6076e565445b2bc5fdc3244da4", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "257245917970624756986787875016953215374", "length": 1235.0 }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-47742-3ec22168", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6c4e13fdfcab34811c3143a0a03c05fec4e870ec", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "236724878592176735933060272624060054534", "303093417354175339959713524761990272827", "218970930052568912908858013462536527857", "68102978614633853436829295562120117566", "314611746282313285124019558769632023394", "309466892352412532292268749653770324643", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-509830d8", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f0e5311aa8022107d63c54e2f03684ec097d1394", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "48649628022712374072385341045795527832", "length": 1437.0 }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-47742-578f6217", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3d2411f4edcb649eaf232160db459bb4770b5251", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "262073183939021215102016108438962853088", "83750589755285664446889067095434608905", "35058261455790097580696347624654476879", "68102978614633853436829295562120117566", "314611746282313285124019558769632023394", "309466892352412532292268749653770324643", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-47742-690fbb13", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f0e5311aa8022107d63c54e2f03684ec097d1394", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "236724878592176735933060272624060054534", "303093417354175339959713524761990272827", "218970930052568912908858013462536527857", "68102978614633853436829295562120117566", "314611746282313285124019558769632023394", "309466892352412532292268749653770324643", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-70ac0c9c", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9b1ca33ebd05b3acef5b976c04e5e791af93ce1b", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "192366561482782939419878900584938053596", "length": 1071.0 }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-8b16d8aa", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3d2411f4edcb649eaf232160db459bb4770b5251", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "289836835582939680539173944646390216329", "length": 1386.0 }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-8c8fa3df", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d1768e5535d3ded59f888637016e6f821f4e069f", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "201470104171735208497534822495673847824", "length": 751.0 }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-47742-8ef4c762", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a77fc4acfd49fc6076e565445b2bc5fdc3244da4", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "262073183939021215102016108438962853088", "83750589755285664446889067095434608905", "35058261455790097580696347624654476879", "68102978614633853436829295562120117566", "314611746282313285124019558769632023394", "309466892352412532292268749653770324643", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-a395e880", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@28f1cd94d3f1092728fb775a0fe26c5f1ac2ebeb", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "48649628022712374072385341045795527832", "length": 1437.0 }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-abc4f566", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c30558e6c5c9ad6c86459d9acce1520ceeab9ea6", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "257245917970624756986787875016953215374", "length": 1235.0 }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-aeb7b4f1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6c4e13fdfcab34811c3143a0a03c05fec4e870ec", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "48649628022712374072385341045795527832", "length": 1437.0 }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-47742-b90eb436", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7420c1bf7fc784e587b87329cc6dfa3dca537aa4", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "236724878592176735933060272624060054534", "303093417354175339959713524761990272827", "218970930052568912908858013462536527857", "68102978614633853436829295562120117566", "314611746282313285124019558769632023394", "309466892352412532292268749653770324643", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Line", "id": "CVE-2024-47742-c6ad4643", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9b1ca33ebd05b3acef5b976c04e5e791af93ce1b", "signature_version": "v1", "target": { "file": "drivers/base/firmware_loader/main.c" }, "digest": { "threshold": 0.9, "line_hashes": [ "262073183939021215102016108438962853088", "83750589755285664446889067095434608905", "35058261455790097580696347624654476879", "68102978614633853436829295562120117566", "159852114363451342453180057090180362406", "192911471960615503991104542874260361299", "140971378831372614501991981841427319777", "163354100762135297477033058187160222973", "253943294832010003422923346738516969021" ] }, "deprecated": false }, { "signature_type": "Function", "id": "CVE-2024-47742-f61a0128", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7420c1bf7fc784e587b87329cc6dfa3dca537aa4", "signature_version": "v1", "target": { "function": "_request_firmware", "file": "drivers/base/firmware_loader/main.c" }, "digest": { "function_hash": "48649628022712374072385341045795527832", "length": 1437.0 }, "deprecated": false } ]