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