Medium · published August 17, 2024
In the Linux kernel, the following vulnerability has been resolved:
protect the fetch of ->fd[fd] in do_dup2() from mispredictions
both callers have verified that fd is not greater than ->max_fds;
however, misprediction might end up with
tofree = fdt->fd[fd];
being speculatively executed. That's wrong for the same reasons
why it's wrong in close_fd()/file_close_fd_locked(); the same
solution applies - array_index_nospec(fd, fdt->max_fds) could differ
from fd only in case of speculative execution on mispredicted path.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | < 4.19.320 | 4.19.320 |
| linux/linux_kernel | ≥ 4.20, < 5.4.282 | 5.4.282 |
| linux/linux_kernel | ≥ 5.5, < 5.10.224 | 5.10.224 |
| linux/linux_kernel | ≥ 5.11, < 5.15.165 | 5.15.165 |
| linux/linux_kernel | ≥ 5.16, < 6.1.104 | 6.1.104 |
| linux/linux_kernel | ≥ 6.2, < 6.6.45 | 6.6.45 |
| linux/linux_kernel | ≥ 6.7, < 6.10.4 | 6.10.4 |
| linux/linux_kernel | all versions | — |