CVE-2024-47742
Severity CVSS v4.0:
Pending analysis
Type:
CWE-22
Path Traversal
Publication date:
21/10/2024
Last modified:
12/05/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
firmware_loader: Block path traversal<br />
<br />
Most firmware names are hardcoded strings, or are constructed from fairly<br />
constrained format strings where the dynamic parts are just some hex<br />
numbers or such.<br />
<br />
However, there are a couple codepaths in the kernel where firmware file<br />
names contain string components that are passed through from a device or<br />
semi-privileged userspace; the ones I could find (not counting interfaces<br />
that require root privileges) are:<br />
<br />
- lpfc_sli4_request_firmware_update() seems to construct the firmware<br />
filename from "ModelName", a string that was previously parsed out of<br />
some descriptor ("Vital Product Data") in lpfc_fill_vpd()<br />
- nfp_net_fw_find() seems to construct a firmware filename from a model<br />
name coming from nfp_hwinfo_lookup(pf->hwinfo, "nffw.partno"), which I<br />
think parses some descriptor that was read from the device.<br />
(But this case likely isn&#39;t exploitable because the format string looks<br />
like "netronome/nic_%s", and there shouldn&#39;t be any *folders* starting<br />
with "netronome/nic_". The previous case was different because there,<br />
the "%s" is *at the start* of the format string.)<br />
- module_flash_fw_schedule() is reachable from the<br />
ETHTOOL_MSG_MODULE_FW_FLASH_ACT netlink command, which is marked as<br />
GENL_UNS_ADMIN_PERM (meaning CAP_NET_ADMIN inside a user namespace is<br />
enough to pass the privilege check), and takes a userspace-provided<br />
firmware name.<br />
(But I think to reach this case, you need to have CAP_NET_ADMIN over a<br />
network namespace that a special kind of ethernet device is mapped into,<br />
so I think this is not a viable attack path in practice.)<br />
<br />
Fix it by rejecting any firmware names containing ".." path components.<br />
<br />
For what it&#39;s worth, I went looking and haven&#39;t found any USB device<br />
drivers that use the firmware loader dangerously.
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:debian:debian_linux:11.0:*:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.7 (including) | 4.19.323 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.285 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.227 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.168 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.113 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.54 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.10.13 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.11 (including) | 6.11.2 (excluding) |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/28f1cd94d3f1092728fb775a0fe26c5f1ac2ebeb
- https://git.kernel.org/stable/c/3d2411f4edcb649eaf232160db459bb4770b5251
- https://git.kernel.org/stable/c/6c4e13fdfcab34811c3143a0a03c05fec4e870ec
- https://git.kernel.org/stable/c/7420c1bf7fc784e587b87329cc6dfa3dca537aa4
- https://git.kernel.org/stable/c/9b1ca33ebd05b3acef5b976c04e5e791af93ce1b
- https://git.kernel.org/stable/c/a77fc4acfd49fc6076e565445b2bc5fdc3244da4
- https://git.kernel.org/stable/c/c30558e6c5c9ad6c86459d9acce1520ceeab9ea6
- https://git.kernel.org/stable/c/d1768e5535d3ded59f888637016e6f821f4e069f
- https://git.kernel.org/stable/c/f0e5311aa8022107d63c54e2f03684ec097d1394
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html
- https://lists.debian.org/debian-lts-announce/2025/03/msg00002.html



